Jmeter脚本编写一般分为五个步骤:
添加线程组
添加http请求
在http请求中写入接入url、路径、请求方式和参数
添加查看结果树
调用接口、查看返回值
在有多个请求时,每个请求都需要选择http协议,填写服务器名称或者服务器ip地址,比较重复和麻烦,所以可以定义一个http请求默认值,设置所有的请求默认使用http协议,默认服务器名称或服务器ip地址。
在线程组–添加–配置元件–HTTP请求默认值,然后进行配置,并把该元件放置到请求前面。
协议:http
服务器名称或ip:httpbin.org
断言设置
针对每个请求的响应进行断言,设置步骤:选中一个请求–添加–断言–响应断言
参数设置
Jmeter支持通过Query String Parameters或者requests body请求体来传递参数。
Query String Parameters Request body
在post请求中参数一般在body中传递,参数的格式需要在http信息头管理器中设置
添加步骤:选定请求——添加——配置元件——HTTP 信息头管理器,然后在管理器里面添加参数类型 Content-Type : application/json
Jmeter支持以下类型的变量:
用户自定义变量
函数生成变量
BeanShell变量
数据文件变量
设置步骤选中请求–添加–前置处理器–用户参数,设置变量名称变量值
在请求时引用变量如下所示:变量引用格式为:${user},可以在query string parameters参数中引用
创建步骤:点击菜单栏选项——函数助手对话框——下拉选择
__Random()函数
BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法
创建 BeanShell PreProcessor ,在脚本窗口输入以下代码引用${user}变量
//定义 jmeter 变量 vars.put(user,"51zxw") //从 jmeter 中获取变量 vars.get(String key); log:写入信息到 jmeber.log 文件 log.info(“hello 51zxw!” );
CSV数据文件变量是指从外部csv文件读取数据出来作为变量
设置步骤:选择请求–添加–配置元件–CSV数据文件设置,创建csv文件user_data.csv,文件内容51zxw,8888
csv数据文件设置如下:
文件编码:UTF-8
变量名称:user,password
忽略首行:False
分隔符:,
是否允许带引号:False
遇到文件结束符再次循环:True
遇到文件结束符是否停止线程:False
…
在post请求中引用数据变量如下: u s e r , {user}, user,{password}
CSV参数化:
user_data.csv内容如下:
51zxw,8888 51zxw1,6666 51zxw2,4444 51zxw3,5555
修改csv数据文件设置配置如下:
文件编码:UTF-8
变量名称:user,password
忽略首行:False
分隔符:,
是否允许带引号:False
遇到文件结束符再次循环:False
遇到文件结束符是否停止线程:True
…
修改线程数为4,进行测试
接口测试过程中经常需要接口之间的关联调用,比如上一个接口的返回值作为下一个接口的请求参数,这时就需要用到正则匹配对上一个接口的响应数据进行正则匹配提取指定的数
设置步骤:选中请求–添加–后置处理器–正则表达式提取器
正则表达式配置表
引用名称:请求要引用的变量名称,如填写 result_num,则可用 result num 引用它 。
正则表达式:匹配需要的内容 。
模板:用 {result_num}引用它。
正则表达式:匹配需要的内容。
模板:用 result num引用它。
正则表达式:匹配需要的内容。
模板:用num$引用起来,如果在正则表达式中有多个匹配数据,num 表示匹配到的第几个值给变量。
如:
1 表示匹配到的第 1 个值存储在变量中。
匹配数字: 0 代表随机取值, 1 代表全部取值,
缺省值:如果参数没有取得到值,那默认给一个值让它取。
案例中正则表达式说明,如num: 31,“num”: “(.*?)”
()括起来的部分就是要提取的。
.匹配任何字符串。
+一次或多次。
?在找到第一个匹配项后停止。
将测试用例数据存放在csv文件中,然后通过csv文件配置来读取用例中的数据,执行测试。
添加一个 循环控制器 步骤为:线程组–添加–逻辑控制器–循环控制器。循环控制器的作用可以控制整个用例的循环次数。默认值是1,可修改为4。
用例设计:
caseSeq | apiType | apiSeq | apiName | priority | url | methods | parameter | expected |
C001 | Http methods | V0.9.2 | GET Requests 51zxw | H | /get | GET | user=51zxw1 | 51zxw1 |
C002 | Http methods | V0.9.2 | POST Requests 51zxw | H | /post | POST | user=51zxw2 | 51zxw2 |
C003 | Http methods | V0.9.2 | GET Requests zxw2018 | H | /get | GET | user=51zxw3 | 51zxw3 |
C004 | Http methods | V0.9.2 | POST Request zxw666 | H | /post | POST | user=51zxw4 | 51zxw4 |
用例名称变量含义:
${caseSeq}:用例编号
${apiType}:api 类型
${apiSeq} : api 版本号
${apiName}: api 名称
${priority}:优先级
${url}:api 路径
${methods}:请求方法
${parameter}: 请求参数
${expectValue}:期望值,用于断言
添加一个循环控制器 步骤为:线程组——添加——逻辑控制器——循环控制器。 循环控制器的作用可以控制整
个用例循环执行的次数。默认值是 1 根据用例数量可以修改为 4
如果你有一个HTTP请求,其返回结果里面包含一个cookie,那么使用JMeterCookie管理器将会自动将该cookie保存起来,而且以后所有对该网站的请求都使用同一个cookie。每个Jmeter都有自己独立的cookie保存区域。
添加cookie管理器:选中线程组–添加–配置元件–HTTP Cookie管理器
权限设置
添加HTTP授权管理器:选中请求–添加配置元件–HTTP授权管理器
basic-auth
diagest-auth
…
聚合报告
比较精简
设置步骤:选中线程组–添加–监听器–聚合报告
HTML报告
JMeter引入了Dashboard Report,用于生成HTML页面格式图形化报告的扩展模块。
生成步骤:
打开 cmd 进入 jmeter 目录 bin 目录
执行命令:
jmeter -n -t httpbin_test.jmx -l httpbin.jtl -e -o C:\Users\Shuqing\Desktop\report
命令的参数 :
-n :以非 GUI 形式运行 Jmeter
-t : jmeter 脚本路径
-l : result.jtl 运行结果保存路径(.jtl)此文件必须不存在。
-e :在脚本运行结束后生成 html 报告
-o :用于存放 html 报告的目录,不加该参数默认生成到 bin\report-output
作者:小静砸
原文链接https://blog.csdn.net/Come_on_csdn/article/details/108457945