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

来源:互联网 发布:rom软件下载 编辑:程序博客网 时间:2024/09/21 06:34

话说无时无刻都觉得有很多东西需要学习,但是我所奉行的理念的就是每天都进步一点,不断完善不断提高!!!!话不多说,进入正题:其实在本文最重要的应该就是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,否则显示不出来)

这里写图片描述

原创粉丝点击