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

发表于:2023-3-03 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Holy_zzZ    来源:CSDN

  这是本人第一次在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请求的测试目的,这是一个重点优化类。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号