【连载 20】实时信息展示
3.6 测试中信息实时展示
在性能测试中,实时展示测试数据是一个非常重要的功能。它可以帮助测试人员实时监控系统的性能表现,及时发现性能瓶颈或异常情况,从而做出相应的调整或停止测试,避免对系统造成不必要的损害。为了实现这一功能,我们需要对现有的性能测试引擎进行进一步的升级。
实时展示功能的核心需求
实时统计 TPS(每秒事务数)和平均耗时:在测试过程中,实时展示系统的 TPS 和平均响应时间,帮助测试人员了解系统的当前负载和性能表现。
异步线程监控:通过一个独立的异步线程,定期收集和展示性能数据,确保主线程的性能测试任务不受影响。
动态控制监控线程:在测试结束后,能够优雅地关闭监控线程,避免资源浪费。
实现实时展示功能的关键步骤
增加实时统计属性:
使用
LongAdder
来记录实时总耗时和总次数。LongAdder
在高并发场景下性能优于AtomicLong
或AtomicInteger
。增加一个布尔类型的开关(
realTimeKey
),用于控制监控线程的启停。创建监控线程:
在
start()
方法中创建一个独立的线程,用于定期收集和展示实时性能数据。该线程每隔 1 秒(或其他自定义时间间隔)统计一次 TPS 和平均耗时,并输出到控制台。
多线程任务类上报数据:
在多线程任务类的
run()
方法中,每次执行测试任务后,将耗时和执行次数上报到执行类的LongAdder
属性中。优雅关闭监控线程:
在测试结束后,将
realTimeKey
设置为false
,并等待监控线程结束。
代码实现
以下是实现实时展示功能的关键代码片段:
执行类(TaskExecutor)
多线程任务类(ThreadTask)
启动脚本(TestEngineDemo)
控制台输出示例
在测试过程中,控制台会实时输出类似以下内容:
总结
通过增加实时展示功能,性能测试引擎能够更好地满足实际测试需求。测试人员可以实时监控系统的性能表现,及时发现并解决问题,从而更高效地完成性能测试任务。
版权声明: 本文为 InfoQ 作者【FunTester】的原创文章。
原文链接:【http://xie.infoq.cn/article/f2e2876856ff6e6a065755bc4】。文章转载请联系作者。
评论