一、概述
JMeter是一款纯Java开发的性能测试工具,由于其强大的能力和开源免费的特点,已被广泛应用于各种Web应用的性能测试中。在测试过程中,生成报告是评估测试结果的重要手段之一。JMeter提供了多种方式生成报告,本文将重点介绍其中较常用的几种方式,以及如何对报告进行配置和自定义。
二、JMeter默认报告
JMeter内置了一个简单的报告生成器,可以生成测试结果的HTML报告。在JMeter中,通过勾选"Generate parent sample"和"Save response data"两个选项,即可生成HTML报告。这种方式简便快捷,对于简单的应用测试来说足够使用。
1、勾选"Generate parent sample"和"Save response data"选项;
2、在测试计划中添加"View Results Tree"配置元件;
3、运行测试计划,测试结束后在"View Results Tree"中点击"Save Table Data"和"Save Tree Data";
4、通过"File" -> "Generate HTML Report" 生成HTML报告;
三、使用JMeter插件生成报告
除了内置的报告生成器外,JMeter还有丰富的插件可供选择。常用的插件有"html report dashboard"和"jmeter plugins-manager"。这些插件可以为测试结果提供更详细和专业的分析。下面将以"jmeter plugins-manager"为例进行说明。
"jmeter plugins-manager"是一个管理JMeter插件的工具,通过它可以安装、更新和卸载插件。在使用该插件之前,需先安装它。安装方式如下:
1、下载插件安装包(https://jmeter-plugins.org/install/Install/);
2、将安装包解压到JMeter的"lib/ext"目录下;
3、重启JMeter即可使用。
安装成功后,在JMeter中将出现"Plugins Manager"菜单。
通过"Plugins Manager"菜单可以快速查找和安装插件。安装插件后,就可以在测试计划中使用插件配置元件。以"jp@gc - Composite Graph"插件为例,操作步骤如下:
1、通过"Plugins Manager"菜单安装"jp@gc - Composite Graph"插件;
2、在测试计划中添加"jp@gc - Composite Graph"配置元件;
3、配置"jp@gc - Composite Graph"元件,输入数据源;
4、运行测试计划,测试结果将以"jp@gc - Composite Graph"的形式展示;
5、通过"File" -> "Save as Image 按钮" 可以将测试结果保存为图片;
四、使用Ant生成报告
JMeter自带了使用Ant生成报告的实例脚本。使用Ant生成报告需要掌握一定的Ant知识,但相对于插件方式有更大的灵活性。
Ant是一种基于Java的自动化构建工具,可以自动化地执行编译、测试、部署等任务。JMeter提供了一个基于Ant的实例脚本,可以生成测试报告。具体步骤如下:
1、下载"jmeter-ant"插件并解压(https://apache.org/dyn/closer.cgi/jmeter/binaries/);
2、将解压后的"extras"目录下的"jmeter-results-report"和"jmeter-results-detail-report"文件夹拷贝到JMeter的"bin"目录下;
3、编写Ant脚本,脚本示例代码如下:
<!DOCTYPE project PUBLIC "-//ANT//DTD Project//EN" "http://ant.apache.org/dtds/ant-1.9.1.dtd">
<project name="JMeter-report">
<target name="report">
<taskdef name="jmeterreport" classname="org.apache.jmeter.report.ant.ReportTask" classpath="${basedir}/lib/ext/ApacheJMeter_core.jar:${basedir}/lib/ext/ApacheJMeter_jms.jar:${basedir}/lib/ext/ApacheJMeter_http.jar:${basedir}/lib/ext/ApacheJMeter_java.jar:${basedir}/lib/ext/ApacheJMeter_functions.jar:${basedir}/lib/ext/ApacheJMeter_junit.jar:${basedir}/lib/ext/ApacheJMeter_ftp.jar:${basedir}/lib/ext/ApacheJMeter_mail.jar:${basedir}/lib/ext/ApacheJMeter_tcp.jar:${basedir}/lib/ext/ApacheJMeter_udp.jar:${basedir}/lib/log4j-core.jar:${basedir}/lib/log4j-api.jar:${basedir}/lib/slf4j-api.jar:${basedir}/lib/slf4j-log4j12.jar:${basedir}/lib/mockobjects-0.09.jar:${basedir}/lib/junit-4.13.jar:${basedir}/lib/hamcrest-core-1.3.jar:${basedir}/lib/slickerbox-0.9.jar:${basedir}/lib/xmlgraphics-commons-1.5.jar" />
<jmeterreport
source="${result.file}"
outputFormat="${output.format}"
dashboardConfiguration="${dashboard.file}"
/>
</target>
</project>
4、修改脚本中的具体参数,如"source"、"outputFormat"和"dashboardConfiguration"等;
5、运行脚本,即可生成测试报告。
五、自定义报告
JMeter提供了多种方式自定义报告,以满足不同用户的需求。常用的自定义方式有"BeanShell Listener"和"Response Assertion"等。
"BeanShell Listener"是一个灵活而强大的插件,可以通过编写BeanShell脚本,实现自定义的报告格式。通过 "BeanShell Listener" 插件实现自定义报告,需要注意以下几点:
1、确保插件已安装;
2、在"Thread Group"下添加"BeanShell Listener"插件;
3、在脚本中自定义报告格式。
// 此处是一个简单的示例脚本,将结果按照指定格式输出
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String file = "result.log";
FileWriter writer = new FileWriter(file, true);
writer.write("\n\n" + df.format(new Date()) + " 测试报告:\n\n");
while (SampleResult is_next = SampleResult.getSamplerData()) {
writer.write(
"测试用例: "
+ is_next.getSampleLabel()
+ "\n"
+ "测试结果: "
+ is_next.isSuccessful()
+ "\n"
+ "响应时间: "
+ is_next.getTime()
+ " ms\n\n"
);
}
writer.close();
"Response Assertion"是JMeter中一种常用的测试脚本,用于在测试过程中验证某些条件。通过"Response Assertion"插件生成详细的断言报告,需要注意以下几点:
1、在"Thread Group"下添加"Response Assertion"配置元件;
2、配置"Response Assertion"条件,选择"JMeter Report"格式即可。
六、总结
JMeter提供了多种方式生成报告,具备一定的灵活性和可定制性。如果需要生成更加专业和详细的报告,可以通过插件、Ant脚本和自定义脚本等方式实现。通过深入学习JMeter报告生成的使用和应用,可以更好地进行Web应用性能测试。