Jmeter - 了解线程组用户和循环计数之间的差异

时间:2016-10-28 13:57:02

标签: testing jmeter load performance-testing

我被要求进行一些测试,以评估在我当前工作中开发的API的不同负载下的响应时间。我对jMeter有一个非常基本的知识,所以我把它看作是我选择使用的工具。

这是我正在努力实现的目标的快速背景信息: 我想通过模拟每个由不同用户创建的一些独特的Json调用来测试API。每个唯一的Json调用都包含唯一的用户ID和项目编号。

让我们举例说,我想测试一下,10个不同的用户,一次性调用API的不同项目。

我对线程组和用户之间的术语和区别以及循环计数(在线程组中找到)以及如何最好地使用它们有点混淆。我在jMeter网站上找不到答案,或者在这里找到答案,所以想出了我认为可能的方法....

从我对jMeter如何工作的理解。为了实现我的目标,我需要在测试计划中创建10个独立的线程组,每个线程组都配置了独特的Json主体数据。

例如:包含请求1的线程组1,包含请求2的线程组2,包含请求3的线程组3,包含请求4的线程组4,包含请求5的线程组5 ....等等。 (注意,我会取消选中'连续运行线程组,以便立即发送所有请求)

如果每个线程组中的用户数和循环计数设置为1,则每次调用只进行一次。这意味着在单次测试运行期间总共会进行10次调用吗?

我想,我有点问的是在我的场景中,术语线程组实际上是代表唯一用户,如果是,那么线程(用户)实际代表什么

我认为我已经做到了这一点,但是如果有经验者可能能够添加一些确认或建议,指出我的方向是正确的,如果我犯了这个错误,那就太好了。

2 个答案:

答案 0 :(得分:0)

线程组是JMeter测试计划中的一个元素,负责执行给定用户组的场景/业务工作流程。对于给定的持续时间(或迭代/循环计数)。

假设我有这样的业务流程。

users login
search for product
select a product
order the product

同一应用程序的另一个业务流程是

Admin users login
Search for users
modify the order/cancel the order/issue refund

我会为2个不同的工作流创建2个线程组。

在生产/实时环境中,我可能有1000个用户在搜索产品,500个用户可能正在下订单。

我可能只有10位管理员用户为1000位用户提供支持 - 提供退款/修改订单等[有些可能会退款/有些取消/有些修改]

所以,

Thread Group 1 [users1=1000, rampup=3600,loop count=forever, duration=7200(2 hrs)]

users login
search for product
If Controller [let only 500 users to order product]
    select a product
    order product



Thread Group 2 [users1=10, rampup=600,loop count=forever, duration=7200(2 hrs)]

Admin users login
Search for users
Throughput controller [40%]
    modify the order
Throughput controller [30%]
    cancel the order
Throughput controller [30%]
    some other support

如你所说,你是JMeter的新手,我建议你检查一下。

  1. JMeter Tips/Tricks for beginners / Best Practices
  2. JMeter - REST API Testing

答案 1 :(得分:0)

我相信使用Synchronizing Timer来确保所有10个线程在完全相同的时刻运行将更容易和更明智的选择。

这是关于JMeter如何工作的一些一般信息:

  • JMeter在提升期间启动指定数量的主题
  • 每个线程开始颠倒(或根据Logic Controllers
  • 执行采样器
  • 当没有要执行的采样器和循环进行迭代时 - 线程正在关闭。然后重新开始,直到达到/超过所需的测试持续时间循环计数。

希望它澄清一切