使用Jenkins执行JMeter脚本?

发表于:2019-9-04 11:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:laity0828    来源:掘金

  前置步骤:现在小程序还没有上线,直接在线上进行的压测。我们公司有个压测的服务器,使用跳板机登录后选择该服务器,上传脚本至/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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号