Jenkins 集成 JMeter 实现持续性能测试

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     

Jenkins 集成 JMeter 实现持续性能测试_第1张图片

下载JMeter 到Jenkins的宿主机

到Apache官网下载JMeter,下载地址如下:

1     
https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz     

由于我们要部署在Linux平台,因此选择下载.tgz后缀的压缩包
Jenkins 集成 JMeter 实现持续性能测试_第2张图片
JMeter压缩包下载到宿主机的 `/root/jenkins_home/tools’目录下,并使用 · tar -zxvf ·进行解压

1     
tar -zxvf apache-jmeter-5.4.3.tgz     

解压后,验证JMeter在Jenkins Docker容器中是否可以正常启动.

  1. 查看Jenkins Docker容器名称或ID
    1       
    2
    [[email protected] 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
  2. 以Root用户方式进入Jenkins容器
    1       
    2
    3
    [[email protected] tools]# docker exec -it -u root jenkins bash       
    [email protected]:/#

  3. 切换到jenkins的tools目录下
    1       
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [email protected]:/var/jenkins_home/tools/apache-jmeter-5.4.3/bin# cd /var/jenkins_home/tools/apache-jmeter-5.4.3/bin       
    [email protected]:/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

  4. 检查JMeter在Jenkins容器中是否可以正常运行
    1       
    2
    3
    4
    5
    6
    7
    8
    [email protected]:/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
    Jenkins 集成 JMeter 实现持续性能测试_第3张图片

    编写一个JMeter性能测试场景

    我们通过一个录制的方法编写一个性能测试场景。以GUI模式运行JMeter,创建一个测试计划 DevOpsToolsTestPlan,测试计划中添加一个线程组( Thread Group)和2 个HTTP Request

HTTPS 请求访问 https://devopstools.cn
HTTPS 请求访问 https://devopstools.cn/2021/11/08/bdd/cucumber-java-ct/
Jenkins 集成 JMeter 实现持续性能测试_第4张图片
GUI中点击运行【Run】按钮,测试脚本是否正常。
Jenkins 集成 JMeter 实现持续性能测试_第5张图片
最后把性能测试脚本上传到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 集成 JMeter 实现持续性能测试_第6张图片
Jenkins上查看性能指标
Jenkins 集成 JMeter 实现持续性能测试_第7张图片

你可能感兴趣的:(CI/CD,Jenkins,持续测试,性能测试,JMeter)