JMeter+Ant实现性能测试自动化

发表于:2018-3-02 08:20

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

 作者:瑾沐沐    来源:51Testing软件测试网原创

  五、报告优化
  1、报告增加性能指标
  JMeter性能测试中,我们主要会关注聚合报告中Average time、Throughput、90% Line等指标,因此我们在测试报告中增加TPS(Throughput)和90% Line等指标,
  (1)在build.xml的代码中可以看出测试报告调用的模板是 %JMETER_HOME%\extras 路径下的jmeter-results-detail-report_21文件,
  (2)因此我们在jmeter-results-detail-report_21文件中进行修改,小编自己修改了很久,但是TPS得值总是不显示,最后参考了其他博客文章得以解决.
  (3)由于该模板的代码非常多,优化后的模板代码可以在我的CSDN上进行下载;下载地址:http://download.csdn.net/download/okkczf/10233753
  2、加接口详情的报告
  该报告的原始模板也可以在网上进行下载,下载地址:http://blog.csdn.net/luozhuwang/article/details/51889159 (感谢作者的分享)
  (1)将该模板 jmeter.results.detail.me.xls 放在 %JMETER_HOME%\extras路径下;
  (2)要想调用该模板输出测试报告需要在build.xml文件中增加以下代码,我用reportdetail定义该测试活动;
  (3)cmd进入命令行,进入build.xml的目录下输入ant,回车执行后,邮件即可收到两个HTML附件,第一个附件为测试报告,第二个附件即为增加的接口测试详情;
  接口测试详情如下截图:
  3、代码展示
  以下是build.xml构建代码:
<?xml version="1.0" encoding="utf8"?>
<project name="TestPlan" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的Jmeter目录-->
<property name="jmeter.home" value="Jmeter目录" />
<!--jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\JMeterTest\JTL" />
<!--jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\JMeterTest\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="jmeter.resultdetail.htmlName" value="${jmeter.result.html.dir}
/Interface-detail.html" />
<target name="all">
<antcall target="test" />
<antcall target="report" />
<antcall target="reportdetail" />
<antcall target="sendmail" />
</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="D:\JMeterTest\JMX" 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">
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${time}"/>
</xslt>
<!-- 因为上面生成报告时,不会将相关的图片也一起拷贝至目标目录,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<target name="reportdetail">
<xslt
in="${jmeter.result.jtlName}"
out="${jmeter.resultdetail.htmlName}"
style="${jmeter.home}/extras/jmeter.results.detail.me.xsl"/>
</target>
<!--发送邮件-->
<target name="sendmail" >
<mail mailhost="mail.star-net.cn"
user="***@***.com"
password="***"
subject="接口测试报告"
from="***@***.com">
<to address="***@***.com"/>
<message>详细报告请查看附件,请用浏览器打开查看!</message>
<attachments>
<fileset dir="${jmeter.result.html.dir}">
<include name="${ReportName}${time}.html"/>
</fileset>
<fileset dir="${jmeter.result.html.dir}">
<include name="Interface-detail.html"/>
</fileset>
</attachments>
</mail>
</target>
</project>
  六、遇到问题
  本文为JMeter+Ant实现性能测试自动化过程所有遇到的问题的整理汇总
  (1)ant构建遇到问题:1字节的UTF-8序列的字节1无效;
  解决方法:build.xml中UTF-8改为UTF8;
  (2)ant构建遇到问题:运行ant 报错Could not find the TestPlan class!
  解决办法: 运行的jmeter脚本 TestPlan.jmx要测试计划层做保存,而不是在threads层做保存。
  (3)ant构建时遇到如下报错:
  解决办法:下载mail-1.4.7.jar,放在 D:\apache-ant-1.9.9\lib 目录下
  (4)生成报告存在的问题:
  生成的报告中Min time 和Max time的时间显示为NaN,Date report: date not defined ,如下截图:
  解决办法:
  (1)将apache-jmeter-3.2\lib中的serializer-2.7.2.jar、xalan-2.7.2.jar复制到apache-ant-1.9.9\lib中即可解决问题(1);
  (2)build.xml代码中增加以下内容
  注意事项:变量${time}在代码中的定义 ,如果两处名称不一致则构建失败;
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
  截止目前,Jmeter+Ant的性能自动化框架已经搭建完成,如果需要你也可以使用Jenkins集成,本文中暂不介绍Jenkins的配置。文章依然存在很多的不足,沐沐会继续努力争取以后分享更多有价值的干货。古人云"The more we share,   the more we have",将分享进行到底...

相关推荐:《51测试天地—原创测试文章系列(四十八)》
版权声明:本文出自51Testing会员投稿。51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • zaza9084
    2018-3-02 17:30:51

    估计是微信上直接复制过去,因为格式原因,报的错~

  • shenyang_7331
    2018-3-02 17:10:14

    楼主能请教个问题不?我照着你这边的xml写的,然后我构建的时候提示我:
    BUILD FAILED
    F:\JmeterTest\XML\build.xml:21: The following error occurred while executing this line:
    F:\JmeterTest\XML\build.xml:28: taskdef class org.programmerplanet.ant.taskdefs. jmeter.JMeterTask cannot be found
    using the classloader AntClassLoader[]

  • cfgeshen2000
    2018-3-02 13:19:35

    楼主写得非常详细,非常感谢

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号