前置步骤:现在小程序还没有上线,直接在线上进行的压测。我们公司有个压测的服务器,使用跳板机登录后选择该服务器,上传脚本至/home/dev_root/qa/jmeter_load_test目录下(专门存放脚本的目录),上传命令为rz,下载命令为sz。注:macOS上使用rz或者sz指令会卡死,具体解决等下一篇总结下
一、Jenkins构建项目
登录web端Jenkins,默认端口8080,点击新建,填写Item名称,选择构建一个自由风格的软件项目,点击ok即创建成功
二、配置项目参数
点击项目名进入该项目,点击配置按钮进入配置页:
勾选参数化构建过程,点击添加参数,选择所需参数的填写方式,如选择String Parameter对应字符串输入,choice对应下拉框选项,填写
1)自行定义的字段名;
2)如有默认值可填写;
3)添加对字段含义的描述
2.点击增加构建步骤,选择Execute shell,添加执行shell脚本
cd /home/dev_root/qa/test_software/apache-jmeter-4.0/bin if [ -e /home/dev_root/qa/jmeter_load_test/result.jtl ] then rm /home/dev_root/qa/jmeter_load_test/result.jtl fi if [ -e /home/dev_root/qa/jmeter_load_test/result ] then rm -r /home/dev_root/qa/jmeter_load_test/result mkdir /home/dev_root/qa/jmeter_load_test/result fi source /etc/profile if [[ ${evn_name} == 'Online' ]] then if [[ ${file_name} == 'separate_step' ]] then file='separate_step.jmx' elif [[ ${file_name} == 'bigeye' ]] then file='bigeye.jmx' else file='testAi.jmx' fi fi exefile='test_script.jmx' cp /home/dev_root/qa/jmeter_load_test/${file} /home/dev_root/qa/jmeter_load_test/test_script.jmx cp /home/dev_root/qa/jmeter_load_test/${exefile} /home/dev_root/qa/jmeter_load_test/${exefile}.tmp sed -i 's/<stringProp name=\"'ThreadGroup.num_threads\"'>5</<stringProp name=\"'ThreadGroup.num_threads\"'>'${thread_num}'</g' /home/dev_root/qa/jmeter_load_test/${exefile} sed -i 's/<stringProp name=\"'ThreadGroup.duration\"'>120</<stringProp name=\"'ThreadGroup.duration\"'>'${duration}'</g' /home/dev_root/qa/jmeter_load_test/${exefile} ./jmeter -n -t /home/dev_root/qa/jmeter_load_test/${exefile} -l /home/dev_root/qa/jmeter_load_test/result.jtl -e -o /home/dev_root/qa/jmeter_load_test/result_${BUILD_NUMBER} cp -r /home/dev_root/qa/jmeter_load_test/result_${BUILD_NUMBER} /home/dev_root/qa/test_software/apache-tomcat-8.5.31/webapps/JmeterTestResult sleep 3 sed -i 's/<stringProp name=\"'ThreadGroup.num_threads\"'>'${thread_num}'</<stringProp name=\"'ThreadGroup.num_threads\"'>5</g' /home/dev_root/qa/jmeter_load_test/${exefile} sed -i 's/<stringProp name=\"'ThreadGroup.duration\"'>'${duration}'</<stringProp name=\"'ThreadGroup.duration\"'>120</g' /home/dev_root/qa/jmeter_load_test/${exefile} cd /home/dev_root/qa/jmeter_load_test sed "s/JmeterTestResult\/result\/index.html/JmeterTestResult\/result_${BUILD_NUMBER}\/index.html/g" content_bak.html >content.html python jmeter_mail.py ${to_mails} ${evn_name} cp /home/dev_root/qa/jmeter_load_test/${exefile}.tmp /home/dev_root/qa/jmeter_load_test/${exefile} |
其中最关键的是:./jmeter -n -t jmeter文件名 -l 结果文件 -e -o 结果存放目录
-t : 执行测试文件所在的位置及文件名 -n : 非GUI 模式执行JMeter -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r -l : 指定生成测试结果的保存文件, jtl 文件格式 -e : 测试结束后,生成测试报告 -o : 指定测试报告的存放位置 -o 指定的文件及文件夹,必须不存在 ,否则执行会失败 |
以上脚本的功能就是选择所需执行的JMeter脚本,可选择执行环境(evn_name),执行脚本名(file_name),配置最大并发数(thread_num),执行时长(duration)和发送结果的邮件地址(to_mails),这些参数都是在参数化构建中自行定义的。
注:BUILD_NUMBER是Jenkins自带的参数名,Jenkins有哪些参数可以在Execute shell的command框下方点击See the list of available environment variables查看
3、使用Jenkins执行压测脚本
配置完成后,点击Build with Parameters,可配置相应参数,如filename选择自己想要跑的脚本名称,一开始可配置duration为10秒,测试脚本是否可以正常跑起来。
配置完成后点击开始构建。构建过程中可点击当前构建的console output查看实时控制台输出,如有明显问题可随时停止压测。
4、查看结果报告
构建完成后,会自动发送一个测试结果到配置的邮件里(收不到的时候记得去垃圾箱里查看下)
点击“详细日志点击此处”可跳转:http://localhost:8080/JmeterTestResult/result_330/index.html。
330是build号,可手动修改build号查看每次build的结果。
比较重要的指标就是Average:平均耗时和Throughout:吞吐量
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理