搭建jmeter+Jenkins+ant接口自动化测试

这是本人第一次在Jenkins下搭建接口自动化测试,也是一步一步摸索成形,继而满足基本使用要求。

一、前期准备

1.下载jdk,配置环境变量

export JAVA_HOME=/brd_devops/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=$JAVA_HOME/lib:./
export PATH=$PATH:$JAVA_HOME/bin
export TESSDATA_PREFIX="/autotest/swatv2"
export ANT_HOME=/brd_devops/apache-ant-1.10.5
export PATH=$PATH:$ANT_HOME/bin

2.下载jmeter,配置环境变量

export JMETER_HOME=/apiTest/apache-jmeter-5.5
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH

3.下载ant,配置环境变量

export ANT_HOME=/brd_devops/apache-ant-1.10.5
export PATH=$PATH:$ANT_HOME/bin

二、jmeter个性化配置

1.找到extras/build.xml,添加代码

  <!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.response_data" value="true"/>
<property name="jmeter.save.saveservice.samplerData" value="true"/>
<property name="jmeter.save.saveservice.responseHeaders" value="true"/>
<property name="jmeter.save.saveservice.requestHeaders" value="true"/>
<property name="jmeter.save.saveservice.encoding" value="true"/>
<property name="jmeter.save.saveservice.url" value="true"/>
<property name="jmeter.save.saveservice.filename" value="true"/>
<property name="jmeter.save.saveservice.hostname" value="true"/>
<property name="jmeter.save.saveservice.thread_counts" value="true"/>
<property name="jmeter.save.saveservice.sample_count" value="true"/>
<property name="jmeter.save.saveservice.idle_time" value="true"/>
<!-- 如下为原有代码,添加如上代码即可 -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.assertion_results" value="all"/>
<property name="jmeter.save.saveservice.bytes" value="true"/>
<property name="file_format.testlog" value="${format}"/>
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>

2.下载http://shanhe.me/download.php?file=jmeter.results.shanhe.me.xsl,并上传至jmeter/extras下,再次配置extras/build.xml

<target name="report" depends="_message_xalan">
  <xslt
    classpathref="xslt.classpath"
    force="true"
      in="${testpath}/${test}.jtl"
      out="${testpath}/${test}.html"
      //style="${basedir}/jmeter-results-detail-report${style_version}.xsl">  将左侧代码更新为如下代码,即更换xsl文件
      style="${basedir}/jmeter-results-shanhe-me.xsl">  //jmeter-results-shanhe-me.xsl为该文件,若提示未找到,改名即可
    <param name="showData" expression="${show-data}"/>
  </xslt>
</target>

3.将extra目录下的ant-jmeter-1.1.1.jar拷贝到ant/lib下

4.验证之前的配置是否成功

[root@localhost ~]# cd /apiTest/apache-jmeter-5.5/
[root@localhost apache-jmeter-5.5]# cd extras/
[root@localhost extras]# ls
addons.txt            build.xml     expand.png                           jmeter-results-report_21.xsl  proxycert.cmd  schematic.cmd  schematic.xsl  Test.jmx
addons.xml            collapse.png  GrafanaJMeterTemplate.json           jmeter-results-shanhe-me.xsl  proxycert.sh   schematic.sh   startup.bsh    Test.jtl
ant-jmeter-1.1.1.jar  execcode.bsh  jmeter-results-detail-report_21.xsl  printvars.bsh                 remote.bsh     schematic.xml  Test.html
[root@localhost extras]# ant
Buildfile: /apiTest/apache-jmeter-5.5/extras/build.xml

run:
     [echo] funcMode = false
   [delete] Deleting: /apiTest/apache-jmeter-5.5/extras/Test.html
   [jmeter] Executing test plan: /apiTest/apache-jmeter-5.5/extras/Test.jmx ==> /apiTest/apache-jmeter-5.5/extras/Test.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /apiTest/apache-jmeter-5.5/extras/Test.jmx
   [jmeter] Starting standalone test @ August 12, 2022 10:14:09 AM CST (1660270449166)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] summary =     30 in 00:00:03 =    9.6/s Avg:   224 Min:   100 Max:   351 Err:     2 (6.67%)
   [jmeter] Tidying up ...    @ August 12, 2022 10:14:13 AM CST (1660270453465)
   [jmeter] ... end of run

_message_xalan:

xslt-report:
     [xslt] Processing /apiTest/apache-jmeter-5.5/extras/Test.jtl to /apiTest/apache-jmeter-5.5/extras/Test.html
     [xslt] Loading stylesheet /apiTest/apache-jmeter-5.5/extras/jmeter-results-shanhe-me.xsl

verify-images:

copy-images:

report:
     [echo] Report generated at 2022/08/12 10:14

all:

BUILD SUCCESSFUL 
// BUILD SUCCESSFUL即为成功
Total time: 14 seconds

5.运行过后会生成Test.html文件,打开效果如下,可显示请求/响应详细内容,并且可查看断言错误详细信息

三、完成Jenkins自动化构建

1.将已调试的jmx脚本拷到Linux下,建议单独创建目录以便独立操作

//如下为参考目录示例,具体目录按实际需求

[root@localhost ~]# cd /apiTest/jmx/Test_Plan-Bdv_new
[root@localhost Test_Plan-Bdv_new]# ls
build.xml  Test_Plan-Bdv_new.jmx

2.在jmx脚本对应目录下创建build.xml文件,用来ant执行脚本,可以直接复制jmeter/extras中的build.xml文件,配置build.xml

//找到如下字段,修改配置
    </description>

    <property name="testpath" value="/apiTest/jmx/Test_Plan-Bdv_new"/> //测试脚本路径
	<property name="respath" value="/apiTest/report"/> //测试结果存放地址
    <property name="jmeter.home" value="/apiTest/apache-jmeter-5.5"/> //jmeter引用地址
    <property name="report.title" value="Load Test Results"/> //还不晓得,可能是报告标题?
    <property name="xsldir" value="/apiTest/apache-jmeter-5.5/extras"/> //用来转换测试结果为html的文件存放的地址,即二、2中的文件

    <!-- Name of test (without .jmx) -->
    <property name="test" value="${jmx}"/> //所执行测试的脚本名称,这里写成变量,以便后续脚本变多可灵活使用
    
    //-----------------再往下----------------------
      <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
    <path id="xslt.classpath">
        <fileset dir="${lib.dir}" includes="xalan*.jar"/>
        <fileset dir="${lib.dir}" includes="serializer*.jar"/>
    </path>

    <target name="report" depends="xslt-report,copy-images">
        <echo>Report generated at ${report.datestamp}</echo>
    </target>

    <target name="xslt-report" depends="_message_xalan">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
        <xslt
            classpathref="xslt.classpath"
            force="true"
            in="${respath}/${test}.jtl"
            out="${respath}/${test}.html"
            style="${xsldir}/jmeter-results-shanhe-me.xsl"> //这里需要修改成xsldir
            <param name="showData" expression="${show-data}"/>
            <param name="titleReport" expression="${report.title}"/>
            <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
    </target>

3.在对应目录下执行ant测试,验证是否成功

[root@localhost Test_Plan-Bdv_new]# ant -Djmx=Test_Plan-Bdv_new //<property name="test" value="${jmx}"/
/* 如上命令参考:ant -f build.xml -Dparam1=value1 -Dparam2=value2
/* 在build.xml文件中: <property name=build.param1 value=${param1} />
Buildfile: /apiTest/jmx/Test_Plan-Bdv_new/build.xml

run:
     [echo] funcMode = false
   [delete] Deleting: /apiTest/report/Test_Plan-Bdv_new.html
   [jmeter] Executing test plan: /apiTest/jmx/Test_Plan-Bdv_new/Test_Plan-Bdv_new.jmx ==> /apiTest/report/Test_Plan-Bdv_new.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /apiTest/jmx/Test_Plan-Bdv_new/Test_Plan-Bdv_new.jmx
   [jmeter] Starting standalone test @ August 12, 2022 10:57:10 AM CST (1660273030712)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] summary =     77 in 00:00:05 =   14.1/s Avg:    37 Min:     2 Max:   326 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ August 12, 2022 10:57:16 AM CST (1660273036526)
   [jmeter] ... end of run

_message_xalan:

xslt-report:
     [xslt] Processing /apiTest/report/Test_Plan-Bdv_new.jtl to /apiTest/report/Test_Plan-Bdv_new.html
     [xslt] Loading stylesheet /apiTest/apache-jmeter-5.5/extras/jmeter-results-shanhe-me.xsl

verify-images:

copy-images:

report:
     [echo] Report generated at 2022/08/12 10:57

all:

BUILD SUCCESSFUL
Total time: 14 seconds

4.在Jenkins上构建脚本

a.创建自由项目(自行百度如何创建项目)

b.buildEnvironment配置ant

c.addBuildStep,选择Execute Shell

d.在Jenkins上直接生成报告,Post-build Actions,选择Publish HTML reports,配置如下

四、结果展示

写在最后

当前已实现Jenkins+jmeter+ant自动化接口测试并生成测试报告,但仍有优化空间

1.测试报告结果留存问题当前没有解决,因为当前配置为每次生成测试报告都需要目录为空,否则会报错

2.报错发送邮件,内容包含错误信息,也没有展示,看看是否可以实现

3.测试报告不能像jmeter中控制器那样收缩伸展,没有明显的界定,看起来没有条理,较难判断这个HTTP请求的测试目的,这是一个重点优化类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值