接口测试分为三类:基于webservice协议接口、基于dubbo协议接口、基于http协议接口
基于http协议接口
http请求:请求方式、请求路径、请求头、请求报文
http响应:响应码、响应信息、响应头、响应报文
- http协议接口,一般通过json进行数据传输。所以在使用jmeter工具时,需配置请求头:content-Type:application/json
- 除注册、登录接口外,请求时需要配置token。
- token通过登录获取,需要添加请求头:Authorization:Bearer token
- 2xx---请求成功
- 4xx---请求失败
- https默认端口443,http默认端口80
一、登录(注册)接口配置
比较简单,不举例
二、其他非登录注册接口配置时,需要传输token(鉴权是接口关联的一种)
1.token通过“HTTP信息管理器”配置:
该接口下添加“HTTP信息管理器”中配置“Authorization:Bearer token”,其中token换成步骤2中设置的值,格式为${token变量的值:baili_tokenbaili_token}
2.token通过在登录接口消息响应获取:
该接口下添加“提取器”,进行响应消息提取,
提取方式有2种,一种是“正则表达式提取器”,一种是“JSON提取器”,通常使用正则表达式提取器
正则表达式提取:
1.在登录接口的察看结果树处进行正则表达式验证,获取到正确的表达式3:一般获取规则为:
左边界(.*?)右边界
2.登录接口添加“后置处理器”,选择“正则表达式提取”(提取器的名字根据实际功能命名)
名称自定义、引用名称自定义、正则表达式使用上面测试验证过的,模板$1$(多个表达式时,第几个生效),匹配数字(匹配到第几个取到的值),缺省值(没有匹配到就使用缺省值)
怎样检查自己的baili_token是否是自己想要的呢?
线程组添加“调试取样器”,察看结果树中检查调试取样器的运行结果,里面的baili_token是否正确
或者可以使用json提取器(一次只能取一个参数)
jsonpath语法规则:只能使用与json数据
1.$表示根目录
.表示子节点
2.取数组的值通过[下标],下标从0开始计数
eg:1
如上方式打开json取样器,$.access_token表示access_token的值,$.token_type表示token_type的值,$.*表示获取所有子节点的值
新建json取样器如图,1---变量名,2---jsonpath表达式,3---表示第几个匹配到的值,4---默认值,没有匹配值时使用默认值(提取器的名字根据实际功能命名)
三、不同业务场景下的接口测试说明
1.按照业务划分:
一般接口分为增(post)、删(delete)、改(put)、查(get)
按照如上测试方式测试即可
2.按照入参类型划分:
入参类型分为参数、消息体、文件3中
参数:参数是与url拼接后使用url传递的,一般就是?传参,参数之间用&分隔
消息体:json格式的入参
文件:类似导入文件类接口需要将文件作为参数
需要注意的是:文件名称处写的是文件全路径,MIME类型为固定写法:multipart / form-data
3.按照参数是否可变划分:
分为静态参数、动态参数
静态参数:参数固定不变,可直接传入
动态参数:有些入参不允许重复或者其他原因,我们可以通过拼接随机数进行参数构造
可使用jmeter中的“函数助手对话框”功能,挑选合适的功能,下图以随机数为例。后续直接使用拷贝并粘贴函数字符串中的内容进行入参编写的拼接即可
4.加密接口:
一些接口是进行了加密的,例如常见的MD5加密接口、BASE64加密接口、RSA加密接口等,总体进行如下分类:
AES、DES、BASE64(可解密)
RSA(可解决)
MD5、SHA、HmacSHA(不可)
通过函数助手得到加密的字符串(也可以网站产看:http://www.bejson.com)
jmeter支持部分加密方式,若要使用的加密方式jmeter没有,可以使用jmeter的BeanShell组件进行扩展,需要自己进行开发,BeanShell支持java、BeanShell语法
5.Cookie鉴权接口
Cookie是一段json格式的文本。分为会话级cookie和持久化cookie
Http Cookie管理器的实现原理:
http cookie会自动实现关联:(作用在同线程级别的组件)
第一步:jmeter第一次请求服务器的时候,如果服务器通过响应头返回Set-cookie返回信息,那么Http Cookie管理器会自动保存这些cookie值
第二步:当jmter第2~N次请求服务器的时候,Http Cookie管理器自动将保存的这些cookie信息通过请求头的cookie字段传输给服务器,从而实现Cookie关联
6.断言
四、接口测试CSV参数化
需要对相同参数的多种vaule、对应结果进行测试时,可以使用如图:循环控制器+CSV数据文件设置的方式,将参数与参数值写入搭配csv文件中,使用读取变量和循环次数进行参数vaule的方式匹配,并将匹配后的参数依次写入搭配http请求中进行接口请求,实现接口测试的简化,缩短工作量
根据需要进行如下图的匹配,循环控制器的中循环次数的设置一般为参数vaule的取值方式种类,也就是n-1行,也可不使用循环控制器,进行“遇到文件结束符再次循环”、“遇到文件结束符停止线程”的设置