jmeter接口测试(2)

一、断言:

1、响应断言:

响应断言主要用于验证响应数据和协议状态码(所以断言主要是用两种:响应断言和前面学到的json断言)

例:

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

 

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

 

2、响应结果中数据很多时的验证

例如使用默认查询时,查询到的结果非常多,就先把响应结果复制出来,放在json在线里,获取索引和字段。

json在线:

https://www.bejson.com/jsonviewernew/

 

二、参数化

相同的测试步骤,不同的测试数据。

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

 

在jmeter里面,参数化有两种方式:

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)

处理SESSION关联 HTTP COOKIE管理器

 

线程组 右键 取样器 HTTP请求

配置元件 HTTP信息头管理器

配置元件 HTTP请求默认值

监听器 察看结果树

逻辑控制器 简单控制器

后置处理器 JSON提取器/正则表达式提取器

HTTP请求上右键 添加 后置处理器 JSON提取器

参数化 配置元件 CSV Data Set Config(CSV 数据文件设置)

数据驱动 配置元件 用户定义的变量

配置元件 HTTP Cookie管理器

 

数据驱动 把公共的数据分离出来,方便修改(如地址)
参数化主要用于迭代测试,同样的步骤 测不同的数据时。
json提取器和正则表达式提取器相当于postman中的set get,提取出响应数据中的动态参数。

cookie管理器专门用来处理cookie,把实际的cookie值放在请求头中后,加上cookie管理器,就会自动更新和携带cookie去发送请求。

posted @ 2022-04-26 17:14  jia---  阅读(116)  评论(0)    收藏  举报