官网下载的Jmeter5.1的包,Ubuntu控制台运行./jmeter.sh即可运行。简体中文版。
在了解常用元件后,再记录一些常用手段
1.集合点,瞬间施压,峰值测试
在添加->定时器->同步定时器,可以设置让一定数量的线程于同一时刻发起的请求。
2.参数化,不同输入参数
可以添加->配置元件->CSV数据文件设置,关于CSV,一种格式 :
属性值1,属性值2,属性值3
数据1,数据2,数据3
... ...
3.响应断言,根据返回结果判断响应是否正确
可以“添加->断言->响应断言”,在“添加->监听->断言结果”设置自动判断
4.结果显示
可以“添加->监听->查看结果树”,聚合报告,图形结果。
5.插件扩展
想试验监控CPU、内存资源的插件,安装使用Plugins manager,搜索standard
ServerAgent.zip 下载: https://github.com/undera/perfmon-agent
关于控件:https://www.cnblogs.com/guoyuanping/p/8284320.html
ServerAgent.zip在服务器端解压可用,运行startAgent.sh/startAgent.bat,就在本地机器上尝试了一下,生成资源监控曲线图。
6.线程组执行顺序
在创建线程组时,可选择不同选项,setUp和tearDown,含义和Junit中一样,也可以选择修改“测试计划”选项:“独立运行每一个线程组”
https://blog.csdn.net/liletong12_28/article/details/100915970
7. 关于逻辑控制器:
只能在"线程组"中添加,在尝试的过程中发现逻辑控制器要求填入函数表达式判断真假,但光用函数生成器生成的
${__jexl3(${变量名}==xxxxxxx,)}不管用,添加了单引号:${__jexl3('${变量名}'=='xxxxxxx',)} 才运行成功。
“取样器”的“高级”选项中有设置代理访问网络,正好公司里上网用的就是代理。
Jmeter分布式
https://blog.csdn.net/cyjs1988/article/details/80267475
分布式集群测试:个人理解就是:一台机器(主机server) 拖 N台机器(从机agent)一起跑测试用例。避免单台电脑无法满足测试并发的要求。
原理是主机把测试用例“发”给从机Jmeter进程进行执行,只发用例,所以涉及CSV文件,或者导入jar包的操作,需要在从机上先把文件copy好,绝对路径要一样。
翻了同类型资料,实践如下:
关闭主、从机的防火墙:sudo ufw disable (Ubuntu系统 enable:开启 status:查看状态)
1. 主机和从机的Java、Jmeter版本配置尽量一样,否则可能出一些问题(我用的两台机,Java配置1.8_xxx,小版本上不太一样,但实际测试一个Demo,没影响;Jmeter5.1)
2. 运行主机Jmeter/bin文件夹下 create-rmi-keystore.sh,生成rmi_keystore.jks文件,copy到从机的Jmeter/bin文件夹下。
3. 修改主、从机的jmeter.properties文件字段:server.rmi.ssl.disable=true,并将注释符去掉
4. 修改主机jmeter.properties文件字段:remote_hosts=从机IP[:1099 ] (1099是默认端口可以不写,可以在主、从机jmeter.properties改)
5. 从机控制台运行 jmeter-server -D Java.rmi.server.hostname=从机IP
6. 主机可以启动GUI,运行jmeter.sh,打开写好的测试计划Demo,点击运行->远程启动...;
又或者控制台运行 jmeter -n -t 测试脚本绝对路径 -R 从机IP1, 从机IP2 -l 测试结果存储路径
但我第六步失败了,查网上资料,看到从机jmeter.server.log报错,
java.rmi.ConnectException: Connection refused to host: 127.0.1.1;
参考了以下博主文章,在主机的system.properties添加 java.rmi.server.hostname=本地IP,终于运行成功。
主机同样需要指明被从机访问的地址。(尝试后发现在从机jmeter.properties文件字段:remote_hosts添加主机IP是没用的)
https://www.cnblogs.com/dreamanddead/p/why-should-you-set-hostname-in-jmeter-distribute-test.html
执行结果中,察看结果树里果然没有响应数据可看,但是试验的“响应断言”和“断言结果”依旧可以正常工作
接口如下:
响应断言:
断言结果:
察看结果树:
关于录制脚本:
使用HTTP代理服务器,设置端口,在Request Filter里可以用正则表达式匹配过滤。过滤掉css、png等请求。
目标控制器:存放录制脚本(simple)的线程组
点击启动,会询问CA证书产生,点击OK确定。
关于添加证书:https://www.cnblogs.com/salyes/p/12202180.html
证书需要添加到录制脚本用的浏览器中,同时浏览器还要设置代理。文章里显示windows电脑的话,还要添加到本地电脑里,用Ubuntu试验时,只添加到浏览器中也能录制。
如果是手机要添加证书的话,把证书adb push到手机中,设置中进行安装。当然应该也要设置代理。关于这一点使用Fiddler时倒是操作过。
感觉还是手动制作脚本更好一些。反正录制的脚本也要修正。