jmeter接口测试(2)
一、断言:
1、响应断言:
响应断言主要用于验证响应数据和协议状态码(所以断言主要是用两种:响应断言和前面学到的json断言)


例:
当我们搜索一个不存在的产品时,它的响应结果为空:

这时我们用到的断言是 响应断言 断言响应结果中包含某个字符:

json在线:
https://www.bejson.com/jsonviewernew/

二、参数化
相同的测试步骤,不同的测试数据。
把这些不同的测试数据放到txt记事本或csv文件中,jmeter中CSV Data Set Config来选择文件,在测试用例(请求、断言)中直接调用,注意修改线程数。比如针对测试平台,想使用不同的用户登录进去后,来验证产品管理的业务,这里使用不同的用户,那么步骤相同 数据不同,就把这些数据拿出来管理。
CSV Data Set Config
在CSV数据文件设置中,说的直接点:就是把测试要用的数据分离到txt记事本或者是csv文件中
①分离到txt记事本:

在jmeter的下载目录中新建data文件,用来放数据,再新建txt文件,写入数据,用英文逗号隔开:

在jmeter中选择数据文件:

选择编码;
给txt文件中的数据起变量名称,在用例中就可以直接调用变量了,变量名称也用英文的逗号隔开,和记事本中的数据一一对应起来:

在测试用例中,比如请求参数和断言的位置,如果需要 也要调用变量,例如在登录请求中的请求参数中使用${} 调用直接调用我们在txt中的数据,
注意:请求参数中的username和password对应的值都是带引号的,所以我们给调用的变量外面也要加上引号:


使用参数化的思想后,在断言中也要做相关的修改:例如在登录接口中,我们断言了手机号码,而手机号码就是我们txt文件中会迭代的数据,所以在断言的时候我们也要调用变量,否则断言肯定错误


当要迭代的数据为2组时,需要线程组的线程数改为2:(内部会进行依次调用两组数据)


分离到CSV:
CSV文件和excel文件一模一样,就是用excel工具写入数据后 在保存时选择csv后缀。
用户定义的变量
(数据驱动)可以把公共的数据分离出来,专门来进行调用。所谓公共的数据指的是这些数据多次使用到。


三、jmeter里面处理动态参数怎么处理?(面试题!)
【动态参数、关联、上一个接口的输出是下一个接口的输入】处理方式:
以登录为例:
登录成功后会返回token,这个token就是动态参数,那么在jmeter中,登录的接口中添加后置处理器中的 json提取器 或者是 正则表达式提取器,把获取到的token定义一个变量,在下个接口中通过${}来调用,这样就实现了参数的上下关联。
(json提取器在上一篇随笔)
正则表达式提取器:
和json提取器效果一样,只是两种方式

*:所有
?:代表的是一个字符串
\d:代表的是数字
\D:代表的是字母
json工具:https://tool.oschina.net/regex
例:
在登录接口中,通过正则表达式提取器提取token:
第一行的token是提取的内容的变量名
第二行是响应结果中的"token":和正则表达的提取方式 ,如果响应结果的值中有引号,这里也要带上
第三行和第四行是规定格式

productID是通过正则表达式提取的内容的变量名:

.*?是一个万能的,所有都能匹配到
四、COOKIE管理器
HTTP COOKIE管理器的作用是:在所有的请求中共享SESSIONID(可以使用JSON提取器获取token也可以使用这种方式,这种方式更简单粗暴,但是值可能会过期)
实例:
https://edu.51cto.com/center/orders/order/get-order-list
j**rq0***
在登录时抓包,获取到cookie的值,再具体根据格式的差别(比如cookie前面还要加什么),放在请求头中,注意在使用cookie管理器时,请求头中的cookie是要放具体的值,不能调用变量的:

正常情况下,我们在访问下一个接口 如个人主页(或任何依赖cookie的接口)时都需要带上cookie的值,不过 这时如果我们加上cookie管理器,不用再专门给下一个接口加cookie了,可以直接成功访问个人主页(cookie管理器的作用:在所有的请求中共享SESSIONID):
cookie管理器放在请求最前面,其中什么也不用填:

加上cookie管理器之后,我们访问个人主页时,不用再加cookie:

五、固定定时器
当接口之间的速度很快的时候,想让请求与请求之间有间隔,就使用固定定时器,,它的单位是毫秒
在登录接口中设置等待,登录后会间隔一秒访问个人主页:(时间自己设定)

数据驱动: 用户定义的变量 ;HTTP请求默认值
请求头: HTTP信息头管理器
断言: JSON断言 响应断言
动态参数:
jmeter: JSON提取器; 正则表达式提取器,登录为例,获取、${}调用。
postman:登录为例,set token,下一个接口{{}}调用。
时间: 固定定时器
参数化: CSV数据文件设置(记事本txt, CSV)
线程组 右键 取样器 HTTP请求
配置元件 HTTP信息头管理器
配置元件 HTTP请求默认值
逻辑控制器 简单控制器
后置处理器 JSON提取器/正则表达式提取器
HTTP请求上右键 添加 后置处理器 JSON提取器
参数化 配置元件 CSV Data Set Config(CSV 数据文件设置)
数据驱动 配置元件 用户定义的变量
配置元件 HTTP Cookie管理器
数据驱动: 把公共的数据分离出来,方便修改(如地址)
参数化:主要用于迭代测试,同样的步骤 测不同的数据时。
json提取器和正则表达式提取器:相当于postman中的set get,提取出响应数据中的动态参数。
cookie管理器:专门用来处理cookie,把实际的cookie值放在请求头中后,加上cookie管理器,就会自动更新和携带cookie去发送请求。

浙公网安备 33010602011771号