JMeter自定义饼图实现:响应数据统计可视化需求问询
JMeter库存状态统计与饼图可视化方案
一、内存中解析库存状态并计数(无需写磁盘)
在你的HTTP请求下添加JSR223 PostProcessor(语言选Groovy,性能最优),用以下代码实时解析JSON响应、统计库存状态:
// 解析JSON响应数据 def jsonResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData()) // 替换成你实际的库存状态字段名,比如jsonResponse.data.stock.status def stockStatus = jsonResponse.stockStatus // 用JMeter全局属性累计各状态计数(线程共享) switch(stockStatus) { case "Available": props.put("availableCount", (props.get("availableCount") ?: 0) + 1) break case "Low on stock": props.put("lowStockCount", (props.get("lowStockCount") ?: 0) + 1) break case "Unavailable": props.put("unavailableCount", (props.get("unavailableCount") ?: 0) + 1) break default: // 可选:处理未知状态 props.put("unknownCount", (props.get("unknownCount") ?: 0) + 1) } // 可选:给当前样本打状态标签,方便后续监听器分组 prev.setSampleLabel(prev.getSampleLabel() + " - " + stockStatus)
这段代码直接在内存中处理响应,完全不需要保存响应到磁盘。
二、测试结束后可视化统计数据
方法1:用内置Pie Chart监听器快速生成饼图
- 添加Pie Chart监听器到测试计划中
- 点击监听器的「Configure」按钮,在「Group by」下拉框选择Sample Label
- 运行测试后,Pie Chart会自动按你设置的带状态标签的样本分组,展示各库存状态的占比饼图
方法2:自定义统计输出(适合需要精确数值的场景)
添加JSR223 Listener,用以下代码在测试结束时输出统计结果,还可生成HTML饼图(可选):
// 仅在最后一个线程结束时执行统计 if (ctx.getThreadNum() == 0 && ctx.getThreadGroup().getActiveThreads() == 1) { def available = props.get("availableCount") ?: 0 def lowStock = props.get("lowStockCount") ?: 0 def unavailable = props.get("unavailableCount") ?: 0 // 在JMeter日志中输出统计 log.info("=== 库存状态统计结果 ===") log.info("Available: " + available) log.info("Low on stock: " + lowStock) log.info("Unavailable: " + unavailable) // 可选:生成HTML饼图文件(若不需要可删除这段) def pieHtml = """ <html> <body> <h2>库存状态统计饼图</h2> <canvas id="stockChart" width="400" height="400"></canvas> <script> new Chart(document.getElementById('stockChart'), { type: 'pie', data: { labels: ['Available', 'Low on stock', 'Unavailable'], datasets: [{ data: [$available, $lowStock, $unavailable], backgroundColor: ['#2ecc71', '#f39c12', '#e74c3c'] }] } }); </script> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </body> </html> """ new File("stock_status_report.html").write(pieHtml) }
运行完成后,你可以在JMeter的日志面板看到精确的计数,也可以打开生成的HTML文件查看交互式饼图。
关于Aggregate Graph的说明
Aggregate Graph主要用于展示样本的耗时、吞吐量等性能指标,虽然可以通过自定义Sample Variables来关联库存状态,但操作复杂度高于上述两种方法,因此更推荐用Pie Chart或自定义统计的方式。
内容的提问来源于stack exchange,提问作者Nickolodeon
相关产品推荐
相关产品推荐

