文章目录
1.编写脚本(动态参数)
1.1 创建脚本
关于接口的具体信息无所谓,重点是线程数、循环次数,需要配置成动态参数的:${__P(threadNum,1)},${__P(cycles,1)} ,这样就相当于默认都是1,但是可接受参数,如下
解释:
赋值:-J 和 -G
- 格式:-J变量名=值 -G变量名=值
- 相同之处:设置jmeter属性,例如线程数、循环次数、ramp up-time等
- 不同之处:-J是设置本地jmeter属性;-G是设置server的jmeter属性(只有设置了远程机,开启了远程服务,才需要用到-G)
1.2 linux中测试 .jmx脚本 (jmeter.sh 启动)
在/opt/apache-jmeter-4.0/bin 目录下执行命令:jmeter -n -t /var/lib/jenkins/workspace/jmeter_script/script.jmx -JthreadNum=100 -Jcycles=10 -l /opt/apache-jmeter-4.0/bin/report/01.jtl -e -o /opt/apache-jmeter-4.0/bin/report/01_html
以上命令解释:运行 script.jmx 脚本 传入参数:-JthreadNum=100 -Jcycles=10,将报告生成到 ./report 目录,名字叫01.jtl ;然后根据01.jtl 生成01_html 的HTML格式的报告
如果没有问题,会生成对应的HTML文件,将HTML报告压缩后拉去下来直接打开就可以使用
具体解释参考:linux中安装和运行Jmeter(非GUI模式)
2.编写.sh脚本,方便Jenkins调用
网上很多人都用ant,我没弄明白ant有什么用,而且也感觉比较麻烦,所以直接使用.sh 脚本,这样既可以满足需求,扩展性也比较好
2.1. 在 /usr/local/script 目录下创建脚本: run_jmeter.sh
# 定义一个函数
run_temp_server(){
script_path=$1 # 脚本的绝对路径 /var/lib/jenkins/workspace/jmeter_script/script.jmx
report_path=$2 # 报告的绝对路径(不包含报告名称) /opt/apache-jmeter-4.0/bin/report
BUILD_ID=$3 # 版本号,用作报告名
threadNum=$4 # 线程数
cycles=$5 # 循环次数
# 检查绝对路径是否存在
if [ ! -e $script_path ]
then
# 项目不存在则输出以下信息
echo "----------no such file: $script_path"
else
# 存在则执行下面命令
echo "----------脚本的绝对路径 :$script_path"
echo "----------报告文件名 : $BUILD_ID"
report_name_jtl="${report_path}/${BUILD_ID}.jtl" # jtl 报告路径
report_name_html="$report_path/${BUILD_ID}_html" # HTML 报告路径
report_name_zip="${report_path}/${BUILD_ID}.zip" # zip 报告路径
echo "----------jtl 报告路径 :$report_name_jtl"
echo "----------HTML 报告路径 :$report_name_html"
echo "----------zip 报告路径 :$report_name_zip"
echo "----------线程数 :$threadNum"
echo "----------循环次数 :$cycles"
# 到jmeter
cd /opt/apache-jmeter-4.0/bin/
# 1.执行脚本,生成.jtl 的报告,测试完毕后再通过jtl报告生成html报告
sh jmeter.sh -n -t $script_path -JthreadNum=$threadNum -Jcycles=$cycles -l $report_name_jtl -e -o $report_name_html
# # 2.删除.jtl 报告
rm -rf $report_name_jtl
# # 3.将HTML报告压缩(方便下载)
# zip -r $report_name_zip $report_name_html
# 判断当前构建的前五次的报告是否还存在,存在则删除
history_BUILD_ID=$[BUILD_ID-5]
if [ ! -d "$report_path/${history_BUILD_ID}_html" ];then
echo "----------历史报告数量不大于5份"
else
echo "----------删除历史报告:$report_path/${history_BUILD_ID}_html"
rm -rf "$report_path/${history_BUILD_ID}_html"
fi
echo "----------运行结束"
fi
}
# 执行函数 并且传入参数
run_temp_server $1 $2 $3 $4 $5
2.2.2 linux中测试 .jmx脚本 (run_jmeter.sh 启动)
运行命令:
sh /usr/local/script/run_jmeter.sh /var/lib/jenkins/workspace/jmeter_script/script.jmx /opt/apache-jmeter-4.0/bin/report 1 100 2
解释:运行 /usr/local/script目录下的run_jmeter.sh ,传入参数:
- jmeter脚本绝对路径>/var/lib/jenkins/workspace/jmeter_script/script.jmx
- report 绝对路径>/opt/apache-jmeter-4.0/bin/report
- 报告名称> 1
- 线程数> 100
- 循环次数 > 2
以上命令运行完成后应该会在/opt/apache-jmeter-4.0/bin/report 目录下生成 1_html 的文件,下载下来就是测试报告,如果没有问题。就可以开始在Jenkins中配置了
3. Jenkins添加任务,动态构建
3.1 创建GitHub项目 存放jmeter脚本
- 这里就不做描述了 , 直接贴个图吧

3.2 Jenkins新增任务(文章底部有完整截图)
3.2.1 将代码拉取到对应服务器
- 描述:jmeter 压测脚本(随便写写)
- 丢弃旧的构建 :这个随自己
- 源码管理:Git 这里需要确保一下Jenkins安装了Git插件,服务器也安装了Git,否则可能会报错(已经配置好了的就不用管了)
到这里就可以尝试Build 了,确认jmeter脚本是否拉去到服务器,我的路径是:
Building in workspace /var/lib/jenkins/workspace/jmeter_scrip
以上步骤没有问题的话我们开始用shell运行脚本,并验证是否能生成报告
3.2.2 选择shell构建任务
- 先配置两个参数:
threadNum,cycles备注自己随意,下面shell会用到 - 执行shell:
sh /usr/local/script/run_jmeter.sh /var/lib/jenkins/workspace/jmeter_script/script.jmx /opt/apache-jmeter-4.0/bin/report $BUILD_ID $threadNum $cycles - 安装Groovy 插件;并增加 Execute system Groovy script 输入:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") - 安装Publish HTML reports 插件,并配置报告信息
- 报告路径: /opt/apache-jmeter-4.0/bin/report/
- 报告的首页:*/index.html
- 报告title:Jmeter HTML Report

全部配置图片太长这里不方便 ,转换成在线链接了参考:Jenkins构建配置
4. 最终成果
- jmeter脚本修改后上传到GitHub
- Jenkins 每次构建的时候只需要传入线程数、循环次数,会获取GitHub最新jmeter脚本
- 运行完成后会根据构建的版本号生成对应的报告
- 报告可保留最新的N份,在shell中控制

构建展示


报告展示
来源:CSDN
作者:别动我名字
链接:https://blog.csdn.net/qq_39806105/article/details/103636720
