JMeter+Jenkins分布式压测持续集成
job配置
-
参数化构建
-
运行分布式shell脚本:sh ...
-
生成测试报告
-
配置生成html测试报告,需要安装插件
JMeter
性能脚本
编写jmeter脚本/自定义Java脚本,脚本参数化,并且可带参数命令行执行
-
自定义Java脚本
-
jmeter脚本
-
带参数命令行执行脚本 https://www.cnblogs.com/ww-xiaowei/p/16091236.html
-
命令行运行
jmeter -n -t test.jmx -l res.jtl -e -o res/
-
-n: 命令行模式启动
-
-t:jmx脚本路径
-
-l:生成的jtl脚本路径
-
-e -o:生成html报告,指定路径
-
-r:分布式执行,slaver为jemter.properties配置的
-
-R:分布式执行,指定slaver的ip和port
-
-
带参数动态执行
-J 加上脚本设置的变量名=N,例如线程数的变量名是concurrent_number(在脚本中参数化写法:${P(count_number,1)} 用到了P()函数来获取命令中指定的属性值,默认值是1),在命令行指定10个线程数:-Jconcurrent_number=10 (位置放在脚本文件后面)
jmeter -n -t 01login.jmx
-Jconcurrent_number=10
-l 01resLogin.jtl -e -o 02res
若有多个变量,分别指派值,例如:循环次数为5 -Jcycles=5
jmeter -n -t 01login.jmx
-Jconcurrent_number=10
-Jcycles=5
-l 01resLogin.jtl -e -o 02res
-
分布式执行的shell脚本
-
设置脚本参数
-
设置各报告路径
-
执行分布式jmx脚本
-
后续处理(删除不需要的报告等)
瓶颈
-
master将请求分发给slaver,受网络限制
-
master一直在收集和存储slaver的报告数据,受网络和磁盘写入速度影响