JMeter 是最受欢迎的开源性能测试工具之一,最近在跟多个用户的聊天中都谈到了JMeter与CI/CD工具集成,我们这个话题来聊一下,如何使用Jenkins和Performance plugin实现持续性能测试。
前提条件
我们在使用Jenkins集成JMeter之前,需要现有一个正常运行状态的Jenkins实例。如果还没有Jenkins实例,您可以使用Jenkins的Docker镜像快速安装一个。安装命令如下:
1
| docker run -d -p 80:8080 -p 50000:50000 -v /root/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins
|
下载JMeter 到Jenkins的宿主机
到Apache官网下载JMeter,下载地址如下:
1
| https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
|
由于我们要部署在Linux平台,因此选择下载.tgz后缀的压缩包
JMeter压缩包下载到宿主机的 `/root/jenkins_home/tools’目录下,并使用 · tar -zxvf ·进行解压
1
| tar -zxvf apache-jmeter-5.4.3.tgz
|
解压后,验证JMeter在Jenkins Docker容器中是否可以正常启动.
- 查看Jenkins Docker容器名称或ID
1 2
| [root@jenkins-master tools]# docker ps |grep jenkins de0d56bd751e jenkins/jenkins:lts "/sbin/tini -- /usr/…" 3 months ago Up 2 hours 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 0.0.0.0:8085->8080/tcp, :::8085->8080/tcp
|
- 以Root用户方式进入Jenkins容器
1 2 3
| [root@jenkins-master tools]# docker exec -it -u root jenkins bash root@de0d56bd751e:/#
|
- 切换到jenkins的tools目录下
1 2 3 4 5 6 7 8 9 10
| root@de0d56bd751e:/var/jenkins_home/tools/apache-jmeter-5.4.3/bin# cd /var/jenkins_home/tools/apache-jmeter-5.4.3/bin root@de0d56bd751e:/var/jenkins_home/tools/apache-jmeter-5.4.3/bin# ls ApacheJMeter.jar examples jmeter-n.cmd jmeter.sh report-template system.properties BeanShellAssertion.bshrc hc.parameters jmeter-server jmeterw.cmd reportgenerator.properties templates BeanShellFunction.bshrc heapdump.cmd jmeter-server.bat krb5.conf saveservice.properties threaddump.cmd BeanShellListeners.bshrc heapdump.sh jmeter-t.cmd log4j2.xml shutdown.cmd threaddump.sh BeanShellSampler.bshrc jaas.conf jmeter.bat mirror-server shutdown.sh upgrade.properties create-rmi-keystore.bat jmeter jmeter.log mirror-server.cmd stoptest.cmd user.properties create-rmi-keystore.sh jmeter-n-r.cmd jmeter.properties mirror-server.sh stoptest.sh utility.groovy
|
- 检查JMeter在Jenkins容器中是否可以正常运行
1 2 3 4 5 6 7 8
| root@de0d56bd751e:/var/jenkins_home/tools/apache-jmeter-5.4.3/bin# /var/jenkins_home/tools/apache-jmeter-5.4.3/bin/jmeter --version _ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____ / \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \ / _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) | / ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ < /_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.4.3 Copyright (c) 1999-2021 The Apache Software Foundation
|
显示了JMeter的Logo和版本说明JMeter可以正常运行了。 Jenkins安装Performance plugin
进入Jenkins以后通过【Manage Jenkins】-[Mangage Plugins]
在 Available 标签中查找Performance Plugin,并选择该插件进行安装,安装后重启Jenkins
编写一个JMeter性能测试场景
我们通过一个录制的方法编写一个性能测试场景。以GUI模式运行JMeter,创建一个测试计划 DevOpsToolsTestPlan
,测试计划中添加一个线程组( Thread Group
)和2 个HTTP Request
HTTPS 请求访问 https://devopstools.cn
HTTPS 请求访问 https://devopstools.cn/2021/11/08/bdd/cucumber-java-ct/
GUI中点击运行【Run】按钮,测试脚本是否正常。
最后把性能测试脚本上传到Git仓库,Jenkins中访问Git仓库实现加载测试计划并运行测试计划。
Git仓库中性能测试仓库地址为:
1
| https://gitee.com/devopstools/jenkins-jmeter-demo.git
|
Jenkins中创建流水线
Jenkins中创建流水线工程名称为Jenkins-JMeter-Demo。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| pipeline { agent any tools{ git 'Default' } options { timeout(time: 2, unit: 'HOURS') } stages { stage('获取代码'){ steps{ echo '---SCM---' git credentialsId: 'devopstools', url: 'https://gitee.com/devopstools/jenkins-jmeter-demo.git' } } stage("性能测试") { steps { echo '---PerformanceTest---' sh "pwd" sh "/var/jenkins_home/tools/apache-jmeter-5.4.3/bin/jmeter -j jmeter.save.saveservice.output_format=xml -n -Jthreadcount=5 -t DevOpsToolsTestPlan.jmx -l reports/DevOpsToolsTestPlan.report.jtl" } } stage("性能测试报告") { steps { echo '---Performance Reports---' perfReport filterRegex: '', showTrendGraphs: true, sourceDataFiles: 'reports/*.jtl' } } } }
|
运行Jenkins流水线可以查看到性能测试结果
Jenkins上查看性能趋势图
Jenkins上查看性能指标