API知识
1、HTTP的完整请求流程
客户端和服务端建立TCP链接
客户端发送request请求
服务端response响应回复
客户端和服务端断开TCP链接
2、怎么理解get和post请求
GET请求:客户端从服务端获取资源
POST请求:客户端向服务端添加新的资源
3、在postman中写断言的地方为?
在postman中的tests中添加断言
4、怎么理解postman里面的collections
collections在postman中所表达的意思就是集合
5、动态参数在postman里面的解决思路,请使用步骤的方式描述出来
第一步、postman中添加一个测试用例
第二步、给测试用例添加请求参数&请求头&断言
第三步、先运行刚才创建的这个测试用例,得到服务端返回的响应数据,在响应数据中找到动态参数的位置
第四步、返回测试用例的断言中,添加一个提取动态参数的断言
第五步、在后面的测试用例中,如果需要使用这个动态参数,即可直接调取
注意:当后续调用变量时需要在集合中运行测试用例
6、在postman中,怎么调用变量
在定义变量后如果需要使用这个变量直接输入{{}}即可使用({{}}中填写的是之前定义变量的名称)
7、接口断言需要断言那方面
需要断言响应数据、协议状态码、业务状态码
8、怎么理解协议状态码:404
404即表示请求的资源不存在&请求的地址不存在
9、如果一个接口访问时400,排查思路时什么?
请求参数有问题,首先查看请求参数和请求头是否有问题
10、怎么理解同步通信
客户端发送请求,服务端必须响应,这就导致很多时候在排队,服务端如果不响应客户端就会一直排队,就会导致拥堵
11、怎么理解异步通信
客户端和服务端不需要关注对方的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的 传递来进行交互的 。
12、怎么理解cookie,session,token
cookie的数据是保存在客户端的所以他不安全,session的数据是保存在服务端的,而token是基于session开发的,我们可以将它理解为一个令牌,每次返回的数据都是不一样的,是一串随机的字符串
13、请按步骤的方式描述session的请求流程
第一步、客户端输入账户和密码登录
第二步、登录成功后,服务端会生成一个sessionID通过set cookie将sessionID返回给客户端,并将session保存在服务端
第三步、客户端后续发送请求会将sessionID在请求头中带上并发送给服务端
第四步、服务端将客户端发送的sessionID和服务端保存的sessionID进行对比,若对比一致则继续访问,若不一致则直接返回登录页面
14、如果发送请求,协议状态码返回500的错误,怎么解决?
首先检查测试用例的请求地址和请求头,如果没有问题就可以先找程序员排查问题或者也可以直接提单
15、怎么理解协议状态码和业务状态码
协议状态码是固定,而业务状态码可以是程序员自己写的
16、按步骤的方式描述token的请求流程
第一步、客户端输入账户和密码登录
第二步、登录成功后,服务端会生成一个token令牌通过set cookie将token返回给客户端,并将token令牌保存在服务端
第三步、客户端后续发送请求会将token在请求头中带上并发送给服务端
第四步、服务端将客户端发送的token和服务端保存的token进行对比,若对比一致则继续访问,若不一致则直接返回登录页面
17、按步骤的方式描述cookie的请求流程
第一步、客户端输入账户和密码登录
第二步、登录成功后,服务端会生成一个cookie返回给客户端,并将cookie保存在客户端
第三步、客户端后续发送请求会将在请求头中cookie带上并发送给服务端
第四步、服务端将客户端发送的cookie和服务端保存的cookie进行对比,若对比一致则继续访问,若不一致则直接返回登录页面
18、在get请求里面,如果有请求参数,使用的参数是那个的?params http://localhost:5000/login?name=wuya&age=18
get请求中,如果有请求参数,请求参数在params下的query params里填写,key为name,value为weya;key为age,value为18。
19、postman里面在哪里填写请求参数
在postman的测试用例中点击Body之后下面会出现数据格式的选择,表单的数据格式可以直接点击,JSON&XML&HTML的数据格式就需要点击raw然后再最后面会出现一个选择格式的字体,然后再选择具体的格式
性能测试:
1、响应时间你是怎么理解的?
响应时间指的是一次完成的HTTP的请求流程,即响应时间=网络时间+应用程序处理的时间
2、怎么区分负载测试和压力测试
负载测试是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量
压力测试是检查系统在处于压力情况下时应用的性能表现
3、你是怎么做稳定性测试的?
一般情况下是使用Loucts来进行稳定性测试,首先需要编写louctsfile文件,然后再控制台进入保存Loucstfile文件所在的目录下,输入locust -f 之前保存的文件名,然后再浏览器中进入loucst,并设置虚拟并发用户数、每秒并发多少虚拟用户和服务器地址,持续不间断的向服务器发送请求,验证返回的协议状态码为200,然后在检测数据
4、常用的性能测试工具有哪些?
常用的性能测试工具有jmeter和loucst。loucst适合做稳定性和压力测试,jmeter做性能测试的时候,我们可以通过grafana进行数据的可视化展示,也可以用jvisualvm监控Java程序本身的CPU和内存资源
5、说出JMeter测试工具中聚合报告中有哪些结果信息
聚合报告表格含义:
Label:取样器名称;
Samples:取样器运行次数;
Average:单个请求的平均响应时间;
Median:50%请求的响应时间;
90%Line:90%请求响应时间;
95%Line:95%请求响应时间;
99%Line:99%请求的响应时间;
Min:请求的最小响应时间;
Max:请求的最⼤响应时间;
Error%:事务错误率;
Throughput:吞吐率,也就是TPS KB/sec:每秒数据包流量;
Received KB/sec:每秒从服务器端接收到的数据量;
SentKB/sec:每秒从客户端发送的请求的数量。
6、在JMeter中,如果需要监控服务器的CPU和内存的资源,你具体是怎么做的
们需要下载 Plugins Manager插件管理器,然后重启jmeter,进入 Plugins Manager中安装PerfMon(servers Performance Monitoring)组件,重启jmeter。然后下载serverAgent后解压,将其与
jmeter放在同一目录下。做性能测试需要监控服务器的CPU和内存资源时,添加安装的PerfMon(servers Performance Monitoring)组件并启动serverAgent,进入PerfMon就添加CPU和memory,就
可以监控服务器服务器的CPU和内存资源。
7、说下你理解的性能测试流程
测试前期准备,如测试场景的梳理、测试目标的制定、设备的准备;
性能测试计划的制定,如人员分配、时间安排、用什么技术等;
测试设计与开发,如代码如何写、具体的脚本书写、测试目标如何实现思路,配置场景;
测试执行与管理,按照配置的场景进行执行即可;
数据收集,如响应时间、吞吐量等的数据的收集;
测试分析,根据收集的数据进行分析,书写测试报告。
8、性能测试结果如果不满足预期的目标,你会怎么办?
如果性能测试结果不满足预期的目标,此时就应该收集数据,然后联系开发,根据数据进行分析,找出问题并进行优化。
9、性能测试中性能的目标你是怎么定,说出具体的依据
目标一般由测试主导,根据服务面向的用户群体的需求来制定目标,然后与开发、架构师、测试等相关人员进行讨论,最后决定具体的目标
10、怎么理解黑合测试,白盒测试
黑盒测试:就像一个不透光的盒子,看不到内部的代码和结构
白盒测试:可以看到内部的代码和结构
综合考核:
1、HTTP协议的组成部分?
主要包含request请求和response回复响应。request请求又包括请求头、请求参数、请求方法和请求地址。response回复响应数据又包括响应数据、协议状态码、业务状态码。
2、postman中断言是在哪里断言?断言哪三部分?
postman在tests中添加断言,断言主要包括验证协议状态码、业务状态码和响应数据
3、postman的请求参数在哪里?
gei请求:在params下的query params里可以填写,以key=value的形式填写
post请求:在Body中填写,但是需要根据请求参数的数据格式选择填写,如果是表单数据格式在X-www-form中填写;如果是json&xml&html的格式下在raw中选择对应的数据格式下填写。
4、一个完整的测试流程?
产品需求文档评审设计------评审------不通过------再次评审
产品需求文档评审设计------评审------通过------程序员编写程序代码--------开发完成------测试通过需求文档编写测试用例--------评审
8、接口测试需要携带哪些参数?
get:需要填写请求方法、请求地址和请求参数
post:需要填写请求方法、请求地址、请求参数和请求头
9、常用的请求方法?get和post方法区别?
常用的请求方法有get、post、put、delete。
GET:客户端从服务端获取资源
POST:客户端向服务段发送请求添加新的资源
PUT:客户端针对服务端已有的数据进行修改
DELETE:客户端删除服务端已有的资源
get和post的区别在于get请求的请求参数是在parmas下的query parmas中填写,post请求相对于get请求需要填写请求头
10、常用的业务状态码
200 请求成功
201 添加成功
204 删除成功
301 永久重定项
302 临时重定项
400 Bad Request客户端请求错误(请求参数不对或请求头不对)
401 Unauthorized无权限访问
403 Forbidden有权限但是禁止访问
404 请求的资源不存在&请求地址不存在
405 不被允许的请求方法
500 服务器内部错误
504 GateWay Timeout网关超时