作者:宋赟 编辑:毕小烦
最近有不少测试同学问我 JMeter 线程组如何设置并发的问题,发现很多人对线程组里的参数不是很清楚,今天就科普一下 JMeter 线程组的信息,也简单介绍一下不同场景的并发策略。
一个线程相当于一个虚拟用户,线程组顾名思义是多个线程的一个集合,是执行特定测试用例的用户池,是任何一个测试计划的开始点,它能使本线程组内的所有元件按照设定的测试用例来执行,故要执行性能测试的元件都必须在某个线程组下,否则没法控制。
在线程组的 GUI 页面中,我们可以模拟用户线程数、启动所有线程所需时间、执行测试的次数,也可通过调度器来执行测试的循环时长、定时执行等。
测试计划 – 右键 --添 加 – 线程(用户)-- 线程组
当压测需要有前提条件或预设值时,会用到 setUp 线程组;当压测执行完成后要做一些清理或预后工作时,会用到 tearDown 线程组。
「setUp 线程组」用于执行预测试操作,它的配置项与普通的线程组完全一样,不同之处在于 setUp 线程是在执行常规线程组之前执行。通常用在运行测试任务前,做初始化工作。例如建立数据库连接初始化工作。
「tearDown 线程组」用于执行测试后操作,它的配置项与普通的线程组完全一样,不同之处在于 tearDown 线程组是在完成常规线程组执行之后执行。
在 JMeter 中,压测场景设置是在线程组里完成的,在线程组里我们需要组合用户的各种操作,特别是在复杂场景下,还需要配合多个控制器来进行场景设置,今天这里先不讲复杂场景,先把我们常用的场景如何在 JMeter 中完成设置讲一下。
下面通过两个场景粗略讲解下不同场景下使用的不同压测策略。
压测目标:购物场景【登录-挑选商品-加入购物车-支付】,这个场景的性能目标是响应时间不超过 1s,各接口 TPS 需要达到 50 以上。
测试分析:针对这种类型的场景我们一般压测时建议选择按时间执行该性能场景,执行可参考以下进行,具体线程数、Ramp-Up 时间以及持续时间可根据实际情况调整。
线程数 | Ramp-Up时间 | 循环次数 | 调度器 | 持续时间 |
---|---|---|---|---|
1 | 1 | 永远 | √ | 300s |
50 | 1 | 永远 | √ | 300s |
100 | 1 | 永远 | √ | 300s |
… | 1 | 永远 | √ | 300s |
**压测目标:**每天平均有 20 个左右的用户会进行导出操作,导出次数最多 60 次,希望导出响应时间不超过 3 秒。
测试分析:针对这类次数型场景建议选择按循环次数执行该性能场景压测。
线程数 | Ramp-Up时间 | 循环次数 | 调度器 | 持续时间 |
---|---|---|---|---|
1 | 1 | 60 | × | × |
10 | 1 | 6 | × | × |
20 | 1 | 3 | × | × |
30 | 1 | 2 | × | × |
通过以上两个场景,我们大概可以看出,一般涉及到次数或对请求量要求较低的情况,可以使用循环次数,但绝大部分场景用按时间循环会比较多,这场景设置不是绝对的,需要根据业务场景及用户使用习惯、再配合脚本请求相关设置等众多因素综合考虑。
以上两个场景情况作为引导读者更好理解不同场景使用不同压测策略,不作为压测策略推荐,仅供参考。
本文粗略的讲了下线程组的定义及相关参数说明,并对线程组在测试场景中如何应用作了案例讲解,希望对大家有所启发。
(完)
如果文章对你有帮助,记得留言、点赞、加关注哦!