Jmeter +Maven+jenkins 接口性能全自动化测试

背景:

首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自动发邮件通知,这样一来性能测试的job配置完成。接着,把性能测试的job配置成开发job的下游job,一旦开发有了新的代码提交运行开发自己的job后,就会自动触发我们性能测试的job。这样我们就实现了接口性能测试的全自动化,我们只需要关注测试失败的邮件!

1 环境搭建

下载安装 jdk &eclipse。

下载安装jenkins。

下载maven 并进行解压。

下载jmeter并解压。

2 准备性能测试的脚本

启动 jmeter (双击 jmeter解压目录下的bin\jmeter.bat)。

用jmeter书写test cases,并导出(推荐)。

或者你可以用jmeter录制脚本,确保运行通过后,导出。

当然你可以选择用badboy录制脚本,确保运行通过后,导出。

3 为性能测试脚本创建maven project

打开eclipse,并创建一个 maven project。

在src/test/目录下创建jmeter文件夹把准备好的性能测试的脚本复制到这个文件夹下。

在src/test/目录下创建resource文件夹,并把测试模板(E:\apache-jmeter-3.2\apache-jmeter-3.2\extras的如下文件)复制到这个resource文件下。

并把如下文件从apache-jmeter-3.2\bin目录下复制到src/test/jmeter文件里。

  • 在maven脚本里添加jmeter-maven-plugin相关依赖如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

      <groupId>com.performance.test</groupId>
      <artifactId>PushNotificationPerformanceTest</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>PushNotificationPerformanceTest</name>
      <url>http://maven.apache.org</url>
    
      <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
          <jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
          <jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
          <ReportName>TestReport</ReportName>
      </properties>
    
      <dependencies>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>3.8.1</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
    
      <build>
          <plugins>
              <plugin>
                  <groupId>com.lazerycode.jmeter</groupId>
                  <artifactId>jmeter-maven-plugin</artifactId>
                  <version>2.1.0</version>
                  <executions>
                      <execution>
                          <id>jmeter-tests</id>
                          <goals>
                              <goal>jmeter</goal>
                          </goals>
                      </execution>
                  </executions>
              </plugin>
              <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>xml-maven-plugin</artifactId>
                  <version>1.0-beta-3</version>
                  <executions>
                      <execution>
                          <phase>verify</phase>
                          <goals>
                              <goal>transform</goal>
                          </goals>
                      </execution>
                  </executions>
                  <configuration>
                      <transformationSets>
                          <transformationSet>
                              <dir>${jmeter.result.jtl.dir}</dir>
                              <stylesheet>src\test\resources\jmeter-results-report-loadtest.xsl</stylesheet>
                              <outputDir>${jmeter.result.html.dir}</outputDir>
                              <fileMappers>
                                  <fileMapper
                                      implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                      <targetExtension>html</targetExtension>
                                  </fileMapper>
                              </fileMappers>
                          </transformationSet>
                          <transformationSet>
                              <dir>${jmeter.result.jtl.dir}</dir>
                              <stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
                              <outputDir>${jmeter.result.html.dir1}</outputDir>
                              <fileMappers>
                                  <fileMapper
                                      implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                      <targetExtension>html</targetExtension>
                                  </fileMapper>
                              </fileMappers>
                          </transformationSet>
                      </transformationSets>
                  </configuration>
                  <!-- using XSLT 2.0 -->
                   <dependencies>
                     <dependency>
                     <groupId>net.sf.saxon</groupId>
                     <artifactId>saxon</artifactId>
                     <version>8.7</version>
                     </dependency>
                 </dependencies>
              </plugin>
          </plugins>
      </build>
    

    </project>复制代码

4 在eclipse运行性能测试脚本

  • 选中性能测试的project 右击,然后在下拉框中选择run as -》maven build ,然后在弹出的对话框的Goals 写上verify,最hou点击run(如下图)。

运行后会有测试结果文件如下图

5 在jenkins 运行性能测试脚本并配置测试结果

在jenkins上安装如下插件:

Maven Integration plugin Maven,用于jenkins可以创建maven job

Git plugin ,用于从github下载性能测试的代码;

Performance plugin ,用于显示性能报告;

HTML Publisher plugin ,用于显示相关接口测试结果的报告。

在jenkins创建maven job

在jenkins上配置运行脚本

在jenkins上配置测试结果报告

  • 在jenkins 配置jdk和maven路径。
  • 配置完了,点击build now,便开始运行,运行结果如下图:

总之:根据上面的步骤我们很容易就完成了对接口性能测试的全自动化过程!

ps:

关于显示测试结果:

  1. 如在jenkins使用html publisher查看报告时,发现显示不美观,不全的现象,很多东西显示不了,

解决这个问题可以在jenkins系统管理中输入以下脚本运行,就可以解决这个问题了

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")复制代码

2.html结果好多为空,请把jmeter.property的相应的false改为true。 3.测试报告出现NaN 请在pom.xml里加上 using XSLT 2.0 依赖。


END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
美团测试工程师10 小时前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
coder_pig11 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
莫名其妙小饼干11 小时前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
love静思冥想13 小时前
JMeter 使用详解
java·jmeter
.生产的驴14 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
测试者家园16 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
Heaven64518 小时前
6.8 Newman自动化运行Postman测试集
软件测试·自动化·接口测试·postman·newman
测试老哥1 天前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
运维&陈同学1 天前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
测试者家园1 天前
ChatGPT接口测试用例生成的流程
软件测试·chatgpt·测试用例·接口测试·测试图书·质量效能·用chatgpt做测试