前置步骤:如今小程序尚未上线,直接在线上进行的压测。咱们公司有个压测的服务器,使用跳板机登陆后选择该服务器,上传脚本至/home/dev_root/qa/jmeter_load_test目录下(专门存放脚本的目录),上传命令为rz,下载命令为sz。注:macOS上使用rz或者sz指令会卡死,具体解决等下一篇总结下html
登陆web端Jenkins,默认端口8080,点击新建,填写Item名称,选择构建一个自由风格的软件项目,点击ok即建立成功 python
点击项目名进入该项目,点击配置按钮进入配置页:web
勾选参数化构建过程,点击添加参数,选择所需参数的填写方式,如选择String Parameter对应字符串输入,choice对应下拉框选项,填写 1)自行定义的字段名; 2)若有默认值可填写; 3)添加对字段含义的描述 shell
点击增长构建步骤,选择Execute shell,添加执行shell脚本apache
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),这些参数都是在参数化构建中自行定义的。tomcat
注:BUILD_NUMBER是Jenkins自带的参数名,Jenkins有哪些参数能够在Execute shell的command框下方点击See the list of available environment variables查看bash
配置完成后,点击Build with Parameters,可配置相应参数,如filename选择本身想要跑的脚本名称,一开始可配置duration为10秒,测试脚本是否能够正常跑起来。 服务器
配置完成后点击开始构建。构建过程当中可点击当前构建的console output查看实时控制台输出,若有明显问题可随时中止压测。 并发
构建完成后,会自动发送一个测试结果到配置的邮件里(收不到的时候记得去垃圾箱里查看下)
点击“详细日志点击此处”可跳转:http://localhost:8080/JmeterTestResult/result_330/index.html。 330是build号,可手动修改build号查看每次build的结果。