接口测试总结
接口测试总结
一、协议部分
1、三次握手
2、http请求流程
客户端与服务端建立tcp连接
客户端向服务端request请求
服务端发送response给客户端
客户端与服务端断开tcp连接
3、状态码
200:请求成功
201:添加成功
204:删除成功
301:永久重定项
302:临时重定项
400:Bad Request客服端请求错误
401:Unauthorized无权限访问
403:Forbidden有权限但禁止访问
404:请求资源或地址错误
405:不被允许的请求方法
500:服务端内部错误
504:GateWay Timeout网关延迟
4、断言方式
响应数据、状态协议码、业务状态码
5、请求流程
1)cookie、session、token的区别
cookie的数据是保存在客户端里,因此不安全;
session的数据是保持在服务端里,比cookie更安全
token是基于session基础上开发的,我们可以理解为一个令牌,每次返回的数据都不一样,是一串随机的字符串。
2)cookie的请求流程
以登录为例
通过登录账号与密码登录成功
服务端会生成一个cookieID,并通过set-cookie发送给客户端,
客户端将cookieID保持在本地
客户端在后续访问个人主页的时候,会通过请求头cookie,将cookieID带上发送给服务端,服务端将通过收到的cookieid与本地的cookieID进行对比
若对比一致则继续访问,若不一致则直接返回登录页面
3)session的请求流程
以登录为例
通过登录账号与密码登录成功后,
服务端会生成一个sessionID,并保持在服务端里,并通过set-cookie发送给客户端,
客户端在之后的请求里,会通过请求头cookie,将sessionID带上发送给服务端,服务端将收到的sessionID与保存在服务端的sessionID进行对比
若对比一致则继续访问,若不一致则直接返回登录页面
4)token的请求流程
以登录为例
通过登录账号与密码登录成功后,
服务端会生成生成一个token令牌,通过set-cookie将token发送给客户端,并将token保存在服务端。
当客户端再进行请求时,会通过Aothoriztion请求头,调取token变量,一起发送给服务端,服务端将收到的token与保存在服务端的token进行对比
若对比一致则继续访问,若不一致则直接返回登录页面
二、postman工具
1、获取postman动态参数的过程
以添加产品为例
首先我们填写请求地址、请求头与请求参数,之后再tests中通过pm.environment.set定义动态变量,最后通过{{}}进行调用动态参数
2、postman的接口测试怎么做
首先选择请求方法,填入请求地址、请求头、请求参数后,点击send,得到响应数据,
之后在tests断言中输入业务状态码与协议状态码以及断言后,点击save保存;
最后点击send运行,查看运行结果
3、
一般设置动态参数后,不能单独执行index接口,单独执行的话,响应状态码会显示401(无授权),所以需要集合运行
而集合运行是通过run
之后,在其他请求时,通过请求头Authoriztion调用token的值,方法是:JWT {{token}}
5、在postman中,如何获得测试报告
1)通过newman的方式
首先将postman项目集合导出,保存在本地里,如d盘;
然后打开控制台,进入集合保存路径,如d盘,输入命令:newman run 文件名称
之后通过XTML插件,输入命令:newman run 文件名 -r html,导出XTML格式的测试报告
最后,进入本地存储导出测试报告所在的存储盘,打开newman文件夹,将导出的测试报告在浏览器中运行即可
命令:npm install -g newman --registry=https://registry.npm.taobao.org。
验证:nawman
3)XTML插件安装
命令:npm install newman-reporter-html
三、jmeter工具
1、jmeter怎么做接口测试
首先我们现在添加一个线程组,然后在线程组下添加一个http信息头管理器,在其中填写请求头
之后再添加一个http请求,在其中填写请求方法、请求地址、与请求参数
接着我们再添加一个监听器中的察看结构树,用于察看运行断言结果
最后,我们添加断言中的JSON断言,在其中填写断言,之后运行即可在察看结构树看到运行结果
2、获取jmeter动态参数的过程
1)通过后端处理器中的正则表达式提取器
2)通过后端处理器中的json提取器;比如图书管理系统中bookID是变量;调用变量的方法时:${变量}。
3、在Jmeter中如何得到测试报告
1)进入到testes文件夹,复制路径,打开控制台,进入到tests目录下
2)输入ant,即可输出测试报告,出现build success表示生成成功
3)在生成成功后就可以看到在JMeter文件夹内的test下的report的html文件夹内看到生成的测试报告
四、代码问题
1、怎么理解Requets里面的post请求方法的data和json
date是表单数据格式,json是处理json数据格式,如果用data格式处理json格式时,可以通过序列化后再处理。
2、怎么理解序列化和反序列化
序列化是指将python的数据类型转换为字符串的数据类型
反序列号是指将字符串数据类型转换为python的数据类型
以文件处理为例
序列化为文件的读
反序列化时文件的写
3、如何判断是前端问题还是后端问题
请求参数错误,前端问题;返回结果错误,后端问题;返回正确,没有显示,前端问题。
4、如何理解mockserver
mockserver可以理解为测试替身的服务,
而Mock理解为一个替身,它是为了解决不同的单元之间由于耦合而难于开发、测试的问题
Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。
5、测试过程中,没有数据怎么办?
解决办法,自己造数据(手动造数据或者代码造数据),自己moco数据。
首先自己造数据,编写HTTP请求的json文件,将其和moco放在同一位置;
之后打开控制台,进入到存放moco和json文件的目录,
运行如下命令: java -jar moco-runner-moco版本 -standalone.jar http -p 指定的端口 -c 文件名
最后,打开postman运行HTTP请求流程