Jmeter+Maven+jenkins接口和性能可持续集成测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xujiamin123456/article/details/77451660

话说无时无刻都觉得有很多东西需要学习,但是我所奉行的理念的就是每天都进步一点,不断完善不断提高!!!!话不多说,进入正题:其实在本文最重要的应该就是jmeter的脚本和pom.xml文件
一、首先当然是在Jmeter的工具里面编写好自己的脚本,调试运行成功。本文就以项目测试中的两个脚本为例。
二、新建MAVEN工程,我用的是Eclipse
1、在src/test目录下新建jmeter目录,然后把自己的测试脚本丢进去

这里写图片描述

2、在在src/test目录下新建resources目录,然后把测试模板丢进去。
在Jmeter3.2中自带的模板是下图的两个,apache-jmeter-3.2\extras

这里写图片描述

但是基于自带的模板太简单了,需要去网上下载比较好用的模板,我这里下载的就是这两个,反正喜欢哪个就把哪个丢进去。

这里写图片描述

3、编写pom.xml文件
我这里列举比较重要的几点
(1)添加jmeter-maven-plugin依赖,这样才能在eclipse里面运行Jmeter的脚本,而不依赖与Jmeter这个工具本身;
(2)由于jmeter-maven-plugin这个插件生成的测试结果的格式是jtl的,我们需要转换成html的,更直观,而且能在jenkins中直接显示;
(3)在本人构建项目的过程中,遇到一个比较大的坑就是html页面显示出来的数据有一些是NaN的

这里写图片描述

这个问题确实困扰了我很久,在网上搜到的办法都是关于ant的。相对于Maven的资料相对就很少了。后来才发现需要用XSLT2.0,在pom.xml中添加依赖就可以了

<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>zdt</groupId>
  <artifactId>zdt-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>zdt-test</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.2.0</version>
                 <configuration>
                    <resultsFileFormat>xml</resultsFileFormat>
                    <ignoreResultFailures>true</ignoreResultFailures>
                    <testResultsTimestamp>false</testResultsTimestamp>
                </configuration>
               <executions>
                   <execution>
                       <id>jmeter-tests</id>
                       <phase>verify</phase>
                       <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>



至此项目的运行应该不存在问题了。在Eclipse中运行之后就会有测试结果。
results、html、html1三个文件中存在的就是jtl、HTML、HTML格式的测试结果。html中得测试结果更偏向于性能测试,html1中的测试结果更多的是显示一些接口信息,适用于接口测试。

这里写图片描述

三、在Jenkins进行自动化构建并展示测试结果
在jenkins进行构建之前首先需要装几个插件
Maven Integration plugin Maven插件;
Git plugin GIT 插件;
Performance plugin 性能报告插件;
HTML Publisher plugin HTTP report插件;
前面两个插件是因为项目本身是Maven项目,代码统一传在git上;后面两个插件只是为了展示测试报告。

1、创建一个Maven项目

这里写图片描述

2、选择存放代码的位置。git服务器的URL地址

这里写图片描述

build中填写pom.xml路径

这里写图片描述

至此应该可以构建成功了。

这里写图片描述

查看构建日志

这里写图片描述

3、但是我们还需要一些步骤来做测试前准备和测试后报告展示

测试前准备:pre steps

在下一次测试前删除上一次的测试结果,这里可以执行各种类型的脚本,因为我们的服务器是linux的,所以这里选的是shell脚本

这里写图片描述

测试后测试结果展示:
(1)jenkins设置展示jtl的测试结果

这里写图片描述

展示的效果:

这里写图片描述

这里写图片描述

(2)jenkins设置展示成html

这里写图片描述

展示的效果:

这里写图片描述

scenario1 HTML Report:

这里写图片描述

scenario1 HTML Report1:(这个需要修改jmeter.properties文件,把需要的字段改为true,否则显示不出来)

这里写图片描述

猜你喜欢

转载自blog.csdn.net/xujiamin123456/article/details/77451660