Jmeter——测试报告的配置与优化

发表于:2017-9-05 15:25

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

 作者:程守正    来源:51Testing软件测试网采编

  Jmeter有个默认的测试报告,就是使用jtl转换成网页格式的测试报告,使用方法如下:
  Jmeter -n -t xxx.jmx -l xxx.jtl -e -o  path-name
  参数说明:
  ●n : 非GUI 模式执行JMeter
  ●t : 执行测试文件所在的位置及文件名
  ●r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
  ●l : 指定生成测试结果的保存文件, jtl 文件格式
  ●e : 测试结束后,生成测试报告
  ●o : 指定测试报告的存放位置
  ●o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错
  这种默认格式太难看了,而且是英文的,就想到去网上找模板,免去造轮子的时间;
  接下来就是我真正想表达的了,因为想展示的信息更多,那么需要修改"bin/jmeter.properties"这个文件,原来很多都被注释了,所以复制下面的内容粘贴到最下面就可以了;
  jmeter.save.saveservice.data_type=true
  jmeter.save.saveservice.label=true
  jmeter.save.saveservice.response_code=true
  # response_data is not currently supported for CSV output
  jmeter.save.saveservice.response_data=true
  # Save ResponseData for failed samples
  jmeter.save.saveservice.response_data.on_error=false
  jmeter.save.saveservice.response_message=true
  jmeter.save.saveservice.successful=true
  jmeter.save.saveservice.thread_name=true
  jmeter.save.saveservice.time=true
  jmeter.save.saveservice.subresults=true
  jmeter.save.saveservice.assertions=true
  jmeter.save.saveservice.latency=true
  jmeter.save.saveservice.connect_time=true
  jmeter.save.saveservice.samplerData=true
  jmeter.save.saveservice.responseHeaders=true
  jmeter.save.saveservice.requestHeaders=true
  jmeter.save.saveservice.encoding=false
  jmeter.save.saveservice.bytes=true
  jmeter.save.saveservice.url=true
  jmeter.save.saveservice.filename=true
  jmeter.save.saveservice.hostname=true
  jmeter.save.saveservice.thread_counts=true
  jmeter.save.saveservice.sample_count=true
  jmeter.save.saveservice.idle_time=true
  修改好保存后,就需要使用构建工具来生成测试报告,比如选择ant或者maven,gradle,本文使用的是ant,其他的我就没花时间去弄了,大家有时间可以去研究下;
  1.Ant的安装
  1.1 下载Ant
  在官网上下载Ant的二进制文件:http://ant.apache.org/bindownload.cgi
  #解压 apache-ant-1.10.1-bin.zip 到C:\Program Files
  在环境变量中 Path 增加 C:\Program Files\apache-ant-1.10.1\bin
  CLASSPATH中添加:%ANT_HOME%lib
  打开cmd,输入:ant -version #能显示版本号就可以确认安装成功了;
  1.2 Jmeter的Ant插件
  在C:\Program Files\apache-jmeter-3.2\extras中有ant的插件:ant-jmeter-1.1.1.jar,需要把这个复制到ant的C:\Program Files\apache-ant-1.10.1\lib里面去,我只用Ant工具,是因为Jmetr的Maven和Gradle的插件需要自己去找,我就懒得去下载了,哈哈哈
  2.配置build.xml和选择报告模板
  2.1 下载模板
  接口与性能模板
  下载好模板后,把模板的xsl文件都放在C:\Program Files\apache-jmeter-3.2\extras里面,以后下载更好的模板也是放到这里目录下;
  2.2配置build.xml
  好了,有了模板,我就可以开始生成测试报告了,首先,需要先建立一个reportdemo文件夹,然后建立一个build.xml内容可以直接复制下面的:
  <?xml version="1.0" encoding="Gb2312"?>
  <project name="ant-jmeter-test" default="run" basedir=".">
  <tstamp>
      <format property="time" pattern="yyyyMMddhhmm" />
  </tstamp>
  <property environment="env"/>
  <property name="ReportName" value="TestReport" />
  <!-- 需要改成自己本地的 Jmeter 目录-->
  <property name="jmeter.home" value="C:\Program Files\apache-jmeter-3.2" />
  <!-- jmeter生成jtl、html格式的结果报告的路径-->
  <property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" />
  <!-- 生成的报告的前缀--> 
  <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" />
  <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" />
  <target name="run">
      <echo message="start..."/>
      <antcall target="clean" />
      <antcall target="test" />
      <antcall target="report" />
  </target>
  <target name="clean">
      <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" />
  </target>
  <target name="test">
      <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
      <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
          <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
          <testplans dir="C:\Users\qian\reportdemo" includes="*.jmx" />
          <property name="jmeter.save.saveservice.output_format" value="xml"/>
      </jmeter>
  </target>
  <path id="xslt.classpath">
      <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
      <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
  </path>
  <target name="report">
      <tstamp> <format property="report.datestamp" pattern="yyy/MM/dd HH:mm" /></tstamp>
      <xslt
  classpathref="xslt.classpath"
  in="${jmeter.result.jtlName}"
            out="${jmeter.result.htmlName}"
            style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" />
  <param name="dateReport" expression="${report.datestamp}"/>
      <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
      <copy todir="${jmeter.result.dir}">
          <fileset dir="${jmeter.home}/extras">
              <include name="collapse.png" />
              <include name="expand.png" />
          </fileset>
      </copy>
  </target>
  </project>
  你只需要修改Jmeter的安装目录和jmx的脚本目录并且把模板的路径改成你想要的模板就可以了"style="${jmeter.home}/extras/jmeter.results.api.xsl" />";
  然后在reportdemo目录下执行ant命令,就可以出现测试报告了。不过我还是有遇到过以下很奇葩的错误:
  c:\reportdemo\build.xml:18: The following error occurred while execu  ting this line:
  c:\reportdemo\build.xml:24: The <jmeter> type doesn't support nested   text data ("      ").
  造成这种错误的原因是因为编码格式的问题:你可以使用Vim the editor编辑器来打开你复制的build.xml文档,你就会发现有空格的地方会出现很多?或者奇怪的字符。那是因为Unix和Windows的编码格式问题。删除掉奇怪的字符就可以了;
  最后,如果想在报告展现更多,更详细的数据,那就去配置jmeter.properties;
  如果想让报告变的更加漂亮,更加好看,那就去配置build.xml文件;
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号