51Testing软件测试论坛

标题: 如何自定义Jmeter性能测试报告 [打印本页]

作者: 全都不要香菜    时间: 2024-7-4 15:00
标题: 如何自定义Jmeter性能测试报告
谈到Jmeter测试报告,大家应该知道Jmeter自身提供了默认的html报告,但是配置起来比较机械,每次都要去选择jtl目录,选择properties文件,选择输出目录等(如下图的步骤),而且同一个脚本执行多次,不能自动化的存储每次的结果。可以看出,这种手动的方式还是存在很多不足。
[attach]147596[/attach]
[attach]147597[/attach]
[attach]147598[/attach]
Jmeter测试报告,其实业界也有成熟的解决方案,比如Jenkins持续集成直接用其报告的插件,还能做到定时执行等功能;再比如influxdb+grafana,可以输出实时炫酷的报告。今天呢,我们通过一个简单案例来聊聊另一种方法-直接通过java代码去定义报告生成的过程。


【核心代码】
直接上代码如下,注意点:
1.本程序只在Windows环境下执行。
2. jmxFilePath(脚本文件路径),jmeterDirJmeterbin目录),根据自己实际情况填写即可。
3.每次只需要修改jmxFilePath的脚本文件路径即可。
String jmxFilePath = "E:\\Jmeter_custom\\百度项目性能测试.jmx"; //文件名自己根据实际情况填写即可
//定制文件夹+时间戳
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String timeStamp = dateFormat.format(new Date());
String foldName = jmxFilePath.substring(0, jmxFilePath.indexOf(".")) + "_" + timeStamp;
//新建带有时间戳的文件夹
File directory = new File(foldName);
directory.mkdir();
//执行测试脚本,并生成结果
try {
    // 执行的Shell命令
    String jmeterDir = "D:\\jmeter-5.5_src\\apache-jmeter-5.5\\bin"; //目录根据实际情况填写即可
    String command = "cmd /c "+jmeterDir+"\\jmeter -n -t "+jmxFilePath+" -l "+foldName+"\\result.jtl -e -o "+foldName;

    // 执行命令
    Process process = Runtime.getRuntime().exec(command);

    // 等待执行完成
    process.waitFor();

} catch (IOException | InterruptedException e1) {
    e1.printStackTrace();
}


【执行结果验证】
从下图可看出,每次执行结果全部自动存储下来了,并且文件夹以脚本文件名+时间戳来命名。另外,jtl结果文件也保存到了报告的目录。
[attach]147599[/attach][attach]147600[/attach]

【后记】
自定义代码,为后续其他扩展提供了可能,大家可以根据需求自定义测试报告。比如,我们还可以接着上面代码来解析rsult.jtl文件。大家有兴趣可继续探索,也欢迎大家共同交流学习。





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2