您的位置:

JMeter生成报告

一、概述

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应用性能测试。