浅谈取样器插件之bzm - Free-Form Arrivals Thread Group
bzm - Free-Form Arrivals (Ultimate Thread Group) 是一个高级且灵活的线程组插件,专为Apache JMeter设计。它扩展了JMeter的标准线程组功能,允许用户以自由形式定义线程(用户)的启动、持续和结束模式,从而模拟复杂的负载场景。此插件由Blazemeter团队开发,为性能测试提供了更高的控制度和精确性。
功能特点
- 自定义线程行为:通过图形界面,你可以绘制线程启动、增长、保持和减少的曲线,模拟任意复杂的用户行为模式。
- 多阶段配置:支持设置多个阶段,每个阶段可以独立配置线程的起始数量、递增/递减速率、持续时间和结束时的行为。
- 预览功能:提供线程行为的预览图,帮助你直观地理解测试计划中的负载分布。
操作步骤
- 添加线程组:在JMeter测试计划中,右键点击测试计划或线程组层级,选择bzm - Free-Form Arrivals Thread Group。
- 配置阶段:点击“Add Row”添加阶段,为每个阶段设置:
○ Start Value:开始每秒事务数。
○ End Value:最终每秒事务数。
○ Duration:持续时间。
○ Thread iterations Limit:线程循环次数限制
○ Log Threads Status into File:保存线程状态至文件
○ Concurrency Limit:最大线程数限制 - 绘制曲线:在图表区域直接绘制或调整阶段,直观设定线程行为。
- 预览与调整:利用预览功能检查设置,确保符合预期的负载模型。
- 保存并运行测试:配置完成后,保存测试计划并执行以验证性能。
应用实例
我们编写如下脚本
BeanShell取样器:编写如下测试代码
log.info("test");
bzm - Concurrency Thread Group:
● Start Value: 设置为1。
● End Value: 设置为10
● Duration: 设置为10
● Log Threads Status into File:设置路径为D:\test.txt
我们可以看到绘图内容如下:
运行脚本,我们查看聚合报告
TPS维持在5.5附近,可以这么理解得出:总共执行10s,每秒都在递增,则总共样例发送为(1+10)*10/5=55,得到的总样例数处理执行时间:55/10 = 5.5,然后每秒打开对应保存的路径内容,我们可以获取下面信息
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
2024/08/05 11:27:51.987,0,0.1,ARRIVAL,bzm - Free-Form Arrivals Thread Group-ThreadStarter 1-1,false,0,0,0,0,null,0,0,0
2024/08/05 11:27:52.000,0,0.1,COMPLETION,bzm - Free-Form Arrivals Thread Group-ThreadStarter 1-1,false,0,0,0,0,null,0,0,0
注意事项
● 确保理解每个配置参数的意义,以避免创建不切实际或资源过度消耗的负载场景。
● 考虑到资源限制,合理设置线程数和持续时间,避免对目标系统造成不必要的压力。
● 在大规模测试前,先进行小规模的测试验证,以确保测试计划的正确性和有效性。
总结
bzm - Free-Form Arrivals Thread Group插件极大地增强了JMeter在模拟复杂用户行为和负载测试方面的能力。通过其高度定制化的设置,测试工程师能够设计出更贴近真实世界的负载测试方案,从而更准确地评估系统的性能与稳定性。