51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 173|回复: 0
打印 上一主题 下一主题

[原创] 如何自定义Jmeter性能测试报告

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2024-7-4 15:00:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谈到Jmeter测试报告,大家应该知道Jmeter自身提供了默认的html报告,但是配置起来比较机械,每次都要去选择jtl目录,选择properties文件,选择输出目录等(如下图的步骤),而且同一个脚本执行多次,不能自动化的存储每次的结果。可以看出,这种手动的方式还是存在很多不足。
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结果文件也保存到了报告的目录。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-8 12:27 , Processed in 0.066008 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表