一、断言
背景:对响应数据进行断言校验,判断是否请求成功。接口返回200和403,或者200带结果数据和200不带结果数据,是代表不一样的意思,如果不加断言,把他们都当成请求成功,那么跑出来的结果和实际的结果就有误差了。
操作:在需要断言的请求中或者线程组增加断言->响应断言(如果是在某个请求下,则仅断言该请求,如果是在线程组下,则会断言属于该线程组的所有请求)
规则:可直接校验文本或者使用正则表达式,不满足断言条件时,即使请求成功有正确响应,也是被当成失败的
示例:校验响应文本中包含“000000”
image.png二、参数化
背景:比如token、用户账号,不是固定不变的值,需要动态从某处获取之后使用,这时候需要将这个值param作为变量,将该变量参数化,使用时用${param}代表需要参数化的参数
JMeter参数化的四种方式:
- 函数助手
- CSV Data Set Config
- 用户自定义变量
- 用户参数
- CSV Data Set Config
从文件中读取数据,支持.csv、.txt、.dat三种格式
示例:读取文件中的id作为merchantId
image.png image.png- Filename:文件名称,如果放在JMeter的bin目录下,则只需给出相对路径或者文件名,如果在其它位置则需说明绝对路径
- File encoding:文件编码格式,可使用UTF-8、GBK等
- Variable Names:文件中变量的名称,如有多个则用’,’隔开
- Ignore first line:是否忽略文件中的首行
- Delimiter:分隔符,一般用默认的’,’,或者’\t’代表tab键
- Allow quoted data?:是否允许数据内容加引号
- Recycle on EOF?:到了文件结尾是否循环
- Stop thread on EOF?:到了文件结尾是否停止线程,此项和Recycle on EOF为互斥关系
- Sharing mode:共享模式,所有线程(每个线程一次读取数据,互不重复)、当前线程组(每个线程组内的线程依次读取数据,互不重复)、当前线程(在此元件作用范围内,每次循环中所有线程取值一样)
如果想发起多次请求,循环取值,可以给该请求增加循环控制器
示例:将接口写在文件中,依次读取接口数据发起请求
image.png image.pngimage.png
此时需要注意,Allow quoted data值应为true,因为数据中有值中是包含引号的
2. 函数助手
通过函数助手生成表达式,如生成随机数、读取csv文件等
在选项或者工具中->函数助手
示例:生成17-34内的随机数字作为id
image.png在函数表达式助手中生成表达式,将表达式复制到变量中
image.png三、正则表达式提取器
背景:需要提取请求、响应中的某个字段作为下一个请求的入参时,需要用到正则表达式提取器
一般在需要获取数据的请求中添加
引用名称:提取出的参数名param,要引用的地方使用${param}
正则表达式:
():表示这部分是要提取的
.:匹配任何字符串
+:一次或多次
?:找到第一个匹配项后停止
模板:解析到的第几个值给param,如果是第一个则$1$,如果有多个则可以用$2$$3$
匹配数字:0代表随机取值
默认值:如果没有取到值,默认给一个参数
示例:提取/getMerchants接口响应报文中的id值,作为merchantId参数供后面/getPayChannelInfo接口使用,在需要用到该参数的地方用${merchantId}表示
image.png image.png四、JDBC
背景:需从数据库中取值作为接口请求数据,或者从数据库中取值进行校验,需要用JDBC
操作:下载mysql驱动:https://mvnrepository.com/artifact/mysql/mysql-connector-java放到\lib文件夹下
配合JDBC连接配置使用,配置数据库地址、账号信息
规则:JDBC连接配置和JDBC请求的名称需对应
示例:读取表mch_merchant的id值作为merchantId值
image.png image.png如果需要将查询结果作为参数循环传递给接口,可结合循环控制器和计数器使用
id_#代表结果总数,设置循环控制器的次数为${id_#}
image.png新增计数器,初始值为1,最大值为${id_#},获得该次数N
image.png结合函数助手,获取第N次的结果为${_V(id${N})}
image.png五、BeanShell
背景:需要自定义一些函数进行特殊处理,或者调用java文件、导入外部jar包时,会用到BeanShell
规则:通过vars.get(“key”)取值,通过vars.put(“key”,”value”)
- 自定义函数,直接在BeanShell脚本中写函数
- 调用java文件,在BeanShell脚本中指定该java文件的存放位置,source(“文件路径”)
- 导入外部jar包
将jar包放在JMeter的\lib\ext文件下,在BeanShell脚本中import该jar包
示例:写一个生成17-34的数字的函数并将值赋给merchantId
image.png六、命令方式执行
背景:使用GUI方式启动JMeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死。一般是在GUI模式下调整测试脚本,再用命令行模式执行。
命令:JMeter.bat -n -t D:\hyy\性能测试\TestPlan.jmx -l D:\hyy\logfile.jtl
-n 非GUI模式下运行
-t 测试计划
-l 结果文件
-r 远程执行
-H 代理主机
-P 代理端口
image.png报告查看,在报告元件中打开日志文件
image.png image.png除了jtl文件,也可以选择生成csv文件
七、监听器插件
JMeterPlugin可以把JMeter生成的jtl文件做出各种统计图
1、直接下载ZIP包
https://jmeter-plugins.org/downloads/old/
将下载好的JMeterPlugins-Extras.jar放到JMeter的\lib\ext目录下面,然后重启JMeter即可
直接添加监听器,可以看到已经添加的插件
2、插件管理器Plugins Manager
https://jmeter-plugins.org/install/Install/
jmeter-plugins-manager.jar下载完成之后,将jar文件放置到JMeter的\lib\ext目录下面,然后重启JMeter即可
在JMeter的选项Option中打开Plugins Manager,对需要的插件进行下载。
image.png
image.png
网友评论