我正在尝试使用JMeter对我的应用程序进行负载测试,该测试包括测试一个遵循openid流程的登录,总共有5个rest调用,如下所示:
为了进行测试,我使用了事务控制器和经典的rest调用,问题是我无法达到我的目标,即同时从1到N逐渐增加登录;让我更好地解释,我想登录发生在第1秒,2同时登录在第2秒,等多达N同时登录.我试图使用并发线程组如图所示,但登录号总是错误的,在这个意义上,我期望在5秒的测试中最多有5个并发用户,我应该有1+2+3+4+5 = 15次登录,相反,我总是有一个高得多的数字。我做错了什么?使用并发线程组可以吗?
更新
我遵循了@Dmitri T的建议,并添加了吞吐量整形计时器,其中包含以下设置:
还有这些:
问题是在每次测试结束时,响应值变得非常高,我记录了许多套接字连接错误。我做错了什么?
1条答案
按热度按时间jogvjijk1#
登录号没有错,你不懂the relationship between users and hits per second
让我们稍微简化一下,假设您只有一个Sampler,它在Thread Group下执行登录。
您的期望是:
1.测试的第一秒:1个用户,1个请求,共1个请求
1.测试第二秒:2个用户,2个请求,共3个请求
1.测试第3秒:3个用户,3个请求,共6个请求
1.测试第4秒:4个用户,4个请求,共10个请求
1.第五秒测试:5个用户,5个请求,共15个请求
这可能是真的,但只有满足一个重要条件:登录请求的响应时间为1秒整。
如果希望JMeter每秒执行X个请求,可以使用Concurrency Thread Group,但我建议添加Throughput Shaping Timer,这样会将JMeter的吞吐量降低到所需的值。