一、接口测试
1、Jmeter-http 接口脚本
一般分五个步骤:
(1)添加线程组
(2)添加 http 请求
(3)在 http 请求中写入接入 url、路径、请求方式和参数
(4)添加查看结果树
调用接口、查看返回值
1.1、jmeter 发 get 请求
jmeter 发 post 请求
jmeter 添加 cookie
需要在线程组里添加配置元件 —HTTP Cookie 管理器
jmeter 添加 header
需要在线程组里面添加配置元件 —HTTP 信息头管理器
jmeter 上传文件
jmeter 参数化
入参经常变化的话,则可以设置成一个变量,方便统一修改管理;如果入参要求随机或可多种选择,则通过函数生成器或者读取文件形成一个变量。所以参数化有三种方式:用户定义的变量、函数生成器、读取文件。
用户定义的变量
需要添加配置元件 - 用户定义的变量。
函数生成器
需要用到函数助手功能,可以调用函数生成一些有规则的数据。常用的几个函数有_uuid、_random、_time。_uuid 会生成一个随机唯一 的 id,比如在避免 java 请求重发造成未处理数据太多的情况,接口请求可加一个唯一的请求 id 唯一的响应 id 进行一一对应;随机数_random,可以 在你指定的一个范围里取随机值;取当前时间_time,一些时间类的入参可以使用,如 {time (,)} 是生成精确到毫秒的时间戳、{time (/1000,)} 是生成精确到秒的时间戳、${__time (yyyy-MM-dd HHss,)} 是生成精确到秒的当前时间。
从文件读取
需要在线程组里面添加配置元件 - CSV Data Set Config
其中 Recycle on EOF: 设置 True 后,允许循环取值
具体的例子如下所示:
jmeter 断言
jmeter 断言用来检测响应返回的结果和我们预期的是否一致。若针对整个线程组的话,则在线程组下添加断言 - 响应断言;若只是针对某个请求的话,则在请求下添加断言 - 响应断言。
4、jmeter 关联
接口请求之间存在参数调用,为了保存这个参数,建立 jmeter 关联。比如登陆接口和购买商品接口,购买商品接口就需要登陆接口返回的 token 等登陆信息,jmeter 关联就可以保存这个 token 信息,方便购买商品接口使用。
jmeter 关联可以通过二种方式来完成,获取到返回结果中指定的值。它们分别是正则表达式提取器、 json path extractor。
(1)正则表达式提取器
若想获取的返回值未匹配到,可以把正则表达式两边匹配的数据扩大点。
a. 关于正则表达式
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表 + 号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0 次或 1 次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0 次、1 次或者多次)
(.):贪婪模式,匹配尽可能多的字符
(. ?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。
b. 关于模板
若想提取多个值的话,比如是 a 和 b 这两个值,则可以写成:
1
1
1
2
2
2。无论要提取多少个值,引用名称就是一个的,比如名称为 id,
i
d
g
o
:
获取整个字符串
a
b
,
{id_go}: 获取整个字符串 ab,
idgo:获取整个字符串ab,{id_g1}:获取的是 a,${id_g2}:获取的是 b。
下面有一个具体的实例,如下图所示:
json path extractor
jmeter 通过安装 json path extractor 插件来处理 json 串,提取 json 串中的字段值。插件的下载地址:https://jmeter-plugins.org/?search=jpgc-json,下载完成,解压后,直接把 lib 文件夹放到 jmeter 相应目录下面。特别说明:jmeter 2.xx 左右的版本尝试过无法使用该插件,在 jmeter 3.xx 左右的版本装完插件后能正常使用。
需要在请求下创建后置处理器 - jp@gc-JSON Path Extractor,具体的实例如下所示: