以下Jmeter测试架构有什么区别?
--Test Plan(Run Thread Groups Consecutively not checked)
--Thread Group 1(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 2(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 3(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 4(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 5(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 6(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 7(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 8(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 9(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 10(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Test Plan(Run Thread Groups Consecutively not checked)
--Thread Group 1(No of Threads(users) : 10, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Test Plan(Run Thread Groups Consecutively not checked)
--Thread Group 1(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 2(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 3(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 4(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
--Thread Group 5(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
在我的场景中,我想对我的解决方案进行负载测试,其中我有不同用户执行的不同测试用例。在这里,用户一次只能进行相同的操作。所以我为我的测试用例使用不同的线程组。随着我的场景增加,线程组中的线程数(用户数)对我来说并不合乎逻辑。所以我在我的测试计划中取消选中连续运行线程组,但不确定它是否真的进行了并发性测试。
答案 0 :(得分:3)
如果检查连续运行线程组,则线程组将连续启动。这意味着JMeter将首先启动线程组01,然后启动线程组02,......,依此类推。这是指示JMeter以串行方式而不是并行方式运行线程组的选项。
因此,如果您在测试计划中取消选中连续运行线程组,则会在测试中生成并发。
答案 1 :(得分:2)
在案例1 中,您可以确保从执行开始就拥有10个并发线程。
在 case 2 中,1秒后达到10个线程的并发,速率为每100ms一个线程(假设没有线程在该时间内完成执行)。
案例3 混合了两个选项:5个线程将立即启动,1秒后再启动5个,因此1秒后达到10个线程的并发。
请注意,当我说"并发达到"我的意思是在JMeter方面。根据脚本的设置,稍后可能会达到服务器的并发性。
同样重要的是你有" 循环次数:1 "。如果所有用户长时间(分钟/小时)运行单循环迭代,或者线程组内有循环控制器,则3个选项之间的差异对于统计信息来说无关紧要。但是如果该迭代很短(几秒到几分钟),或者每个线程中的每个操作都是唯一的,那么在选项2和3(尤其是2)的情况下,您的统计信息将存在缺陷,因为在早期开始的线程上进行了许多操作将在达到10个线程并发之前执行,反之亦然。
答案 2 :(得分:1)
JMeter的行为如下:
所以你可以遇到第一个线程已经完成所有事情并被关闭而第10个线程尚未启动的情况。
如果您希望保证并发 - 在Thread Group级别提供足够的循环。您还可以使用具有一些额外功能的Ultimate Thread Group来灵活地定义用户到达率并可视化预期的并发性。
顺便说一下,即使在使用Throughput Controller的同一个线程组中,您也可以让不同的虚拟用户执行不同的场景。有关可能方法的详细说明,请参阅Running JMeter Samplers with Defined Percentage Probability文章。