Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)

一、Jmeter+ant

1、首先我们默认Jmeter脚本已经录制好了,并测试通过,存在(查询模块.jmx)脚本 

2、将 JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找 到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本      

3、jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,保存

    jmeter.save.saveservice.output_format=xml

4、主要逻辑思路:运行D:\jemeterTest\script下面的.jmx脚本,生成.jtl文件放入 

      D:\jemeterTest\resultLog\jtl文件中,ant在将相应的文件转换为对应的html文件放入D:\jemeterTest\resultLog\html中

   build.xml文件中的内容如下: 

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

xml version="1.0" encoding="utf-8"?>

<project name="JmeterTest" default="all" basedir=".">

    <tstamp>

        <format property="time" pattern="yyyyMMddhhmm" />

    tstamp>

    

    <property name="jmeter.home" value="D:\soft\apache-jmeter-2.9" />

    

    <property name="jmeter.result.jtl.dir" value="D:\jemeterTest\resultLog\jtl" />

    

    <property name="jmeter.result.html.dir" value="D:\jemeterTest\resultLog\html" />

    

    <property name="ReportName" value="TestReport" />

    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />

    

    <property name="mail_to" value="[email protected]" />

    

    <property name="ComputerName" value="jkqsh-l0285" />

    <target name="all">

        <antcall target="test" />

        <antcall target="report" />

    target>

    <target name="test">

        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

            

            <testplans dir="D:\jemeterTest\script" includes="*.jmx" />

        jmeter>

    target>

    <target name="report">

        <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_90Line.xsl" />

        

        <copy todir="${jmeter.result.html.dir}">

            <fileset dir="${jmeter.home}/extras">

                <include name="collapse.png" />

                <include name="expand.png" />

            fileset>

        copy>

    target>

    

project>

        

        切换到D:\jemeterTest目录下,输入ant查看运行结果

        

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第1张图片

         

         运行前

                

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第2张图片

        运行后

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第3张图片

        浏览器打开HTML文件,显示正确

             

           

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第4张图片

二、Jmeter+ant+Jenkins

        1、下载Jenkins安装

        2、命令行切换到jenkins.war的根目录,输入 java -jar jenkins.war

                

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第5张图片

        3、浏览器输入地址http://localhost:8080/显示界面,安装成功

         

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第6张图片

            4、新建一个任务并配置

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第7张图片

         

        5、配置参数

                

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第8张图片

          旧的构建保存了你在一次构建中的所有临时文件,如果构建没有保留的必要,就勾选丢弃旧的构建,同时设置保持构建天使和保持构建的最大个数两个参数。

          注意:三个设置必须同时设置,否则无效

        6、设置定时运行间隔,这里,设置间隔时间为15分钟运行一次

                    

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第9张图片

        7、设置invoke ant,完成后点击保存

                        

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第10张图片

        8、点击立即构建,就可以调用ant,执行打包过程。在这里,也就是执行生成测试报告的步骤

         

                

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第11张图片

    

三、Tomcat配置虚拟目录

    在tomcat文件夹的conf/Catalina/localhost(对于Tomcat6版本及其以上,需要自己创建catalina和localhost这两个文件夹)下新建一个xml文件。

    内容为:

1

2

3

4

5

xml version="1.0" encoding="UTF-8"?> 

<Context 

    docBase="换成你的路径" 

    reloadable="true"

Context>

    文件名改成你自己的譬如http://localhost:8080/infces ,文件名就为infces.xml

    其他配置:

    打开 Tomcat/conf/web.xml 文件,找到:

    

    listings

    false

    

    把false设成true保存,重启Tomcat,让tomcat支持文件列表显示

    输入地址:http://localhost:8080/infces/

    显示如下:

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第12张图片

前期条件:存在Jmeter聚合测试报告TestReport201510100244.jtl

    1、Ant安装

                 下载ant地址

                 配置环境变量

                 

                 命令行窗口输入ant

                 

                安装成功

   2、将Jmeter保存的xml格式的聚合报告TestReport201510100244.jtl,放到相应的文件夹中

            文件夹目录结构:

            D:\jemeterTest

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第13张图片

    3、编辑build.xml文件

        

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

xml version="1.0" encoding="utf-8"?>

<project name="JmeterTest" default="all" basedir=".">

    

    <property name="jmeter.home" value="D:\soft\apache-jmeter-2.9" />

    

    <property name="jmeter.result.jtl.dir" value="D:\jemeterTest\resultLog\jtl" />

    

    <property name="jmeter.result.html.dir" value="D:\jemeterTest\resultLog\html" />

    

    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/TestReport201510100244.jtl" />

    

    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/TestReport201510100244.html" />

    <target name="all">

        <antcall target="report" />

    target>

    <target name="report">

        <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}">

        style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />xslt>

    target>

project>

4、切换到D:\jemeterTest目录下,输入ant查看运行结果,在D:\jemeterTest\resultLog\html目录下生成TestReport201510100244.html文件

    

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第14张图片

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第15张图片

5、打开TestReport201510100244.html文件

        

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第16张图片

6、发现Min Time和Max Time尽然没有显示出来显示的Nan

            这个问题比较奇葩,我的初步定为思路如下

            1)首先我先看一下Jmeter自带的XSLT样式表问题

                  将TestReport201510100244.jtl文件的第二行加入

                   

                    用浏览器打开显示正常,初步排除了XSLT样式表问题

                            

                    

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第17张图片

        2)编写java程序,用程序去调取jmeter-results-detail-report_21.xsl,运行,发现报错,提示

                致命错误: "无法编译样式表", 

      从网上找到了解决方案,要下载一个xalan.jar,serializer.jar包放到项目中即可解决这个问题

        3)将这两个jar包入ant的lib包中再次切换到D:\jemeterTest目录下,输入ant查看运行结果,在D:\jemeterTest\resultLog\html目录下生成TestReport201510100244.html文件,使用浏览器查看,OK,显示了!

            

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第18张图片

7、拓展显示功能

        我们发现在界面上没有显示,90%line,这个性能指标项,在这里我们需要修改XSLT样式表,jmeter-results-detail-report_21.xsl增加部分内容后的文件如下:

        

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

<xsl:variable name="allLineTime">

    <xsl:call-template name="line">

        <xsl:with-param name="nodes" select="/testResults/*/@t" />

        <xsl:with-param name="postion" select="$allPostion" />

    xsl:call-template>

xsl:variable>

<xsl:template name="line">

    <xsl:param name="nodes" select="/.." />

    <xsl:param name="postion" select="/.." />

    <xsl:choose>

        <xsl:when test="not($nodes)">LNaNxsl:when>

        <xsl:otherwise>

            <xsl:for-each select="$nodes">

                <xsl:sort data-type="number" order="descending" />

                <xsl:if test="position() =$postion">

                    <xsl:value-of select="number(.)" />

                xsl:if>

            xsl:for-each>

        xsl:otherwise>

    xsl:choose>

xsl:template>

        注:90%Line逻辑(网上找的释疑)

                一组数由小到大进行排列,找到他的第90%个数(假如是10),那么这个数组中有90%的数将小于等于120。

                用在性能测试的响应时间也将非常有意义,也就是90%用户响应时间不会超过12 秒

    1)修改build.xml文件中的内容style="${jmeter.home}/extras/jmeter-results-detail-report_90Line.xsl" 然后切换到D:\jemeterTest目录下,输入ant查看运行结果,在 

           D:\jemeterTest\resultLog\html目录下生成TestReport201510100244.html文件,成功了!

             

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第19张图片

准备工作:

1.java的运行环境正常,及运行java -version、javac -version能正常输出java版本;

2.ant的运行环境正常,使用ant需要配置环境变量,编辑/etc/profile,在结尾处添加:

export ANT_HOME="/export/servers/ant"

export PATH="/export/servers/ant/bin":$PATH

保存退出后,执行命令source /etc/profile使环境变量即可生效。

3.将JMeter所在目录下extras子目录里的ant-JMeter- 1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找 到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本

配置build.xml:

将本猿编写的jmetertool.tar.gz上传到服务器并解压,编辑其中的build.xml:

  1.      
  2.           
  3.           
  4.           
  5.           
  6.           
  7.           
  8.           
  9.           
  10.           
  11.           
  12.           
  13.           
  14.           
  15.           
  16.           

 修改其中的jmeter目录一定要修改成你本地所在的目录,根据需要修改ReportName以及线程数。

  1.   

 上传被测的jmx文件到当前目录,并修改build.xml中的jmx文件名。

为了能够动态修改压测的线程数,我们使用vi命令打开被测的jmx文件:

  1. ${__P(request.threads1)}  

 将线程数设置项改为该参数,名字与build.xml中的对应即可。

  1.   
  2.                   
  3.                   
  4.                
  5.                   
  6.                   
  7.                   
  8.                   
  9.                   

参数 ${threads1}、${threads2}当前默认值是5个线程,可自行修改。

开始压测:

做完上面的工作,运行命令ant或者ant -Dthreads=8 -Dthreads=3即可,会自动启动jmeter进行压测,jmeter运行完毕后,会自动执行将生成的jtl文件分析为csv文件的工作,执行完毕后会有类似如下输出:

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第20张图片


 同时当前目录会自动创建jtl、html、csv三个文件夹:

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第21张图片


 

查看结果:

那么问题来了,我们怎么查看压测的结果呢?很简单,在当前机器上配置一个tomcat,将当前的目录(我的是/export/servers/jmeter/script)配置为tomcat的虚拟目录,在tomcat的web.xml中找到


            listings
            true

设置为true以开启目录浏览功能。好了,我们访问该tomcat即可,http://ip:port/html。

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第22张图片


 每执行一次测试,都会自动建立一个文件夹,点进相应的文件夹,有几个接口就会html,点击相应的html我们就可以看到图表方式的TPS、响应时间等。

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第23张图片


 

 

批量定时运行:

使用linux的crontab命令即可,crontab -e 每行添加一条ant命令例如:

30 1 11 * * ant -Dthreads1=8 Dthreads2=6

30 2 11 * * ant -Dthreads1=16 Dthreads2=12

或者使用at命令也很方便,从此再也不用因为加班到很晚而得罪老婆大人了,第二天早上来打开浏览器看结果就行。

如果需要多机负载的话,在

然后修改jmeter/bin目录下的jmeter.propties即可

在我这10几年软件测试生涯中,整理的一些技术资料,包括:电子书,简历模块,各种工作模板,面试宝典,自学项目等。免费领取资料或在学习或工作中遇到问题都可以加群

Jmeter+Ant+Jenkins搭建持续集成的接口测试(推荐 Mark)_第24张图片

 

你可能感兴趣的:(Python,python)