接口测试jmeter实战1
1、风暴平台
1.1构建完整流程
根据测试场景添加简单控制器(登录、首页、产品管理、地址管理)与HTTP请求默认值(分离请求地址)和信息头管理器。
1.2登录
(1)在登录中添加一个名为HTTP请求的取样器,命名为登录,填写请求方法、请求地址、请求参数。
(2)在HTTP信息头管理器中添加请求头。
(3)添加断言(如验证手机号码)。
(4)定义变量,获取token令牌。需要添加一个JSON提取器,如下图:
1.3首页
(1)在首页中添加一个名为HTTP请求的取样器,命名为产品首页,填写请求方法、请求地址。
(2)由于后续操作需要身份验证,因此需要在1.2的HTTP信息头管理器中添加请求头,该请求头需要调用获取到的token令牌,如图:
(3)添加断言。
1.4产品管理
在产品管理的目录下创建四个简单控制器(添加、搜索、修改、详情、删除)。由于后续操作需要身份验证,因此需要在1.2的HTTP信息头管理器中添加请求头,该请求头需要调用获取到的token令牌。
1.4.1添加产品
(1)在添加产品中添加一个名为HTTP请求的取样器,命名为添加产品,填写请求方法、请求地址、请求参数。
(2)添加断言。
(3)添加一个JSON提取器,定义产品的ID,如图:
(4)验证产品添加成功,添加一个HTTP请求,填写请求地址和请求方法,添加断言,此时验证产品添加成功,添加响应断言进行模糊验证即可。
1.4.2搜索产品
(1)在搜索产品中添加一个名为HTTP请求的取样器,命名为默认搜索、填写请求方法、请求地址。基于全面考虑,还需要添加搜索添加的产品、搜索结果为空两个取样器,与默认搜索同理。
(2)添加断言。
1.4.3修改产品
(1)在修改产品中添加一个名为HTTP请求的取样器,命名为修改产品名称,填写请求方法、请求地址、请求参数。基于全面考虑,还需要添加修改版本、类型、负责人、描述的测试用例,与修改产品名称同理。
(2)添加断言。
1.4.4产品详情页
(1)在产品详情页中添加一个名为HTTP请求的取样器,命名为产品详情页,填写请求方法、请求地址。
(2)添加断言。这里将相应数据获取到的信息与平台详情页显示的信息进行对比做断言。可以用JSON断言,也可以用JSON/YAML Path Assertion进行断言。
1.4.5删除
(1)在删除中添加一个名为HTTP请求的取样器,命名为删除,填写请求方法、请求地址、请求参数。
(2)在删除中添加一个名为HTTP请求的取样器,命名为验证产品已删除,填写请求方法、请求地址。
(3)在验证产品已删除下添加断言,验证关键词搜索的结果为空。
2、断言
2.1响应断言
可以精确断言,也可以模糊断言,属于可以调控的断言,模糊断言可以断言响应数据中的某一个字符,只要包含这个字符就可以断言通过。
2.2JSON断言
针对JSON数据格式来进行精确断言的工具,但是没有JSON Path Assertion那么强大。如响应数据中为{"product_type":"APP"},在断言中的Assert JSON Path exists中填写的是Product_type,即JSON数据格式中的K,在Expected Value中填写的是APP,即value的值。
2.3jp@gc - JSON/YAML Path Assertion断言
进行精确断言的工具,功能比较强大,可以对JSON、YAML等多种类型进行断言,特别强调,自带的$.时默认的,不用管。
3、响应数据编码配置修改
响应数据中文显示乱码有两种解决方法:
3.1修改配置文件的解决步骤:
(1)打开jmeter的配置文件,目录为:bin目录下的jmeter.properties;
(2)搜索到sampleresult.default.encoding,取消注释,说的简单点就是取消前面的#;
(3)把编码修改为utf-8,具体如下:sampleresult.default.encoding=utf-8;
(4)重新启动jmeter;
(5)重启之后在请求参数中有中文内容的时候在编码部分添加utf-8。
3.2添加BeanShell后置处理器的解决
(1)添加Bean Shell后置处理器
(2)在脚本中输入prev.setDataEncoding("UTF-8")。
4、动态参数操作步骤
(1)如以登录场景为例,登陆成功后获取响应数据后,通过添加后置处理器下的JSON提取器/正正则表达式提取器,来获取响应数据的动态参数,注意JSON提取器/正正则表达式提取器需要在HTTP请求的子层级;
如:JSON提取器
(2)在后续的产品页交互中(如个人主页)需要调用登录成功后获取的动态参数来验证身份,就可以在后续添加的测试用例的请求头中添加该动态参数,k的值时Authorization,value的值为${定义动态参数的value},特别强调,在jmeter中引用动态参数的方法为${定义的动态参数的值}。