专 气 致 柔 , 能 如 婴 儿 乎 ---《道德经》第十章
一、Jmeter命令行启动
Jmeter有两种运行:一种是采用的界面模式(GUI)启动,会占用不少系统资源;另一种是命令行模式(non-GUI)执行,这样节约资源,在性能测试,基本都是按这种方式运行。
启动命令:
jmx file :Jmeter保存的脚本;
results file :结果保存文件类型
Path to web report folder:Hmtl报告保存路径
代码语言:javascript复制jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
命令参数 | 说明 |
---|---|
-n | 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter |
-t | 测试文件 -> 要运行的 JMeter 测试脚本文件 |
-l | 日志文件 -> 记录结果的文件 |
-e | 负载测试后生成报告仪表板 |
-o | 负载测试后在其中生成报告仪表板的输出文件夹。文件夹不能存在或为空 |
-H | [代理服务器主机名或IP地址] |
-P | [代理服务器端口] |
-R | [远程服务器列表]在指定的远程服务器中运行测试 |
Linux配置环境变量运行验证结果如下:
启动简单脚本示例如下
启动程序并且添加线程组
添加两个请求
执行命令
找到执行脚本
代码语言:javascript复制jmeter -n -t Runtime_demo.jmx -l 7dg.jtl -e -o 7dhtml
命令行显示:
注意:没有设置环境变量的话,务必在jmeter的bin目录下启动cmd。
Html报告为
打开html报告结果显示为:
Transactions Per Second
其他信息可以参考html报告
聚合报告打开
打开Aggregate Report如图
结果显示:
win正常启动
后台启动后显示:
启动成功如
二、Jmeter脚本录制
代理录制
1) Non-Test Elements-->HTTP(s) Test Script Recorder
打开HTTP(S) Test Script Recorder
选择录制数据保存到新建的程组中
选择代理端口
开启浏览器代理
点击Jmeter中的代理启动弹出
点击 start 按钮时,会提示创建一个根 CA 证书。这个证书生成在 bin 目录中,文件名是:ApacheJMeterTemporaryRootCA.crt,七天有效期。这个证书将被用来客户端转发 HTTPS 的请求。与此同时,还有另一个证书在同目录中生成,名字是 proxyserver.jks,这是 JMeter 自己生成的根证书。
输入录入地址
Prefix:请求名的前缀。
Create new transaction after request(ms):一个请求完成之后,如果下一个请求超出了这里设置的时间间隔,就创建一个新的事务。
录制成功显示
说明:
以上是简单介绍怎么录制,如果了解其中原理请参考:【性能测试实战30讲】( https://time.geekbang.org/column/article/183349 )
三、常见函数介绍
1、"_Random"函数
功能:这个函数是从某个数字段随机读取数据替换参数,可以利用在测试需要添加多条数据记录而且某些字段需要唯一性的测试脚本中,随机生成的参数是数字
作用:可以用来实现参数化http请求发送的参数,使得在Jmeter运行时参数化了的参数在每个线程去不同的随机数。如果某个参数每次发送请求的时候不能重复才可以存储到数据库中,则用这个功能十分方便。
使用:
1.点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择“_Random”。
2.配置“_Random”函数,
第一个参数是“一个范围内的最小值”,即所要取的随机数的最小值,我们设置成1;
第二个参数是“一个范围内的 最大值”,即所要取的随机数的最大值,我们设置成100;
第三个参数是“函数名称”,即用于存储在测试计划中其他的方式使用的值,我们设置成 Random。设置好上面的三个参数后,点击“生成”按钮,这样就会在对话框的最下面生成一个字符串 “${__Random(1,100,Random)}”,在我们编写的脚本中,找到要替换的参数,把它的值换成前面生成的字符串就可以了,然后每次运行 的时候,这个参数会变成一个1到100之间的随机数。
新建请求:
结果查看树:
2、"_time”函数
功能:Jmeter运行时取当前时间到变量,利用该功能,可以将某个参数增加time函数,然后用该参数作为查询条件查询,然后以该参数作为断 言,这样可以使得断言更精确,因为时间实时变化的,使用该方法,需要注意的是,要先添加一个全局的用户参数,具体在断言操作中有描述。
格式:${__time(MMddmmss,TEST)}
使用:添加jmeter的time函数,选择选项——函数助手,然后选择__time函数
在“ormat string for SimpleDateFormat (optional)”中输入值“MMddhhmmss”,表示取月日时分秒。
然后,点击生成,则生成了time参数。
${__time(,)} : 默认该公式精确到毫秒级别, 13位数
${__time(/1000,)} :该公式精确到秒级别, 10位数
${__time(yyyy-MM-dd,)}
${__time(YMDHMS,)}
格式显示如下
在这一章中只是简单介绍怎么使用,其实在工作中还有很多,很好用的函数,与技巧,只有不断重复联系,才能掌握。希望大家在平时工作中多多积累。