在JMeter中运行多个线程组
在JMeter中运行多个线程组
在使用JMeter时,我们可以将场景分组,并以不同的方式运行它们,以复制现实世界的流量。
在本教程中,我们将学习如何以及何时使用多个线程组来复制现实世界的场景,以及如何使用简单的测试计划将它们按顺序或并行运行。
2. 创建多个线程组
线程组是JMeter的一个元素,它控制执行测试的线程数量。
JMeter测试计划中的每个线程组模拟一个特定的现实世界应用场景。
大多数基于服务器的应用程序通常有多个场景,因此为每个用例创建一个单独的线程组,可以让我们更灵活地在测试期间正确分配这个负载。
运行多个线程组有两种方式:顺序或并行。
3. 顺序运行线程组
当我们想要一个接一个地执行应用程序场景,特别是当各个场景之间存在依赖关系时,这非常有用。
3.1. 使用案例
假设我们有一个电子商务应用程序,用户可以浏览产品,将他们喜欢的产品添加到购物车,最后启动结账,然后下最终订单。
对于这样的应用程序,当我们想要模拟用户旅程时,我们希望我们的脚本遵循特定的顺序。例如,我们的脚本可能首先执行浏览产品,然后是将产品添加到购物车,最后是下订单。
3.2. 配置
从测试计划中,您可以通过选中复选框_“按顺序连续运行线程组(即一次运行一个)”_来实现这种行为。
4. 并行运行线程组
当各个场景之间没有依赖关系时,这非常有用。
测试操作同时执行,模拟对被测试系统混合负载。
4.1. 使用案例
以一个网站为例,该网站有诸如技术新闻、市场新闻、体育新闻等不同类别的新闻。
这个网站的主页总是显示所有不同类别的最新顶级新闻。
对于这样的应用程序,我们仍然可以创建多个线程组,以在不同页面上有不同的用户负载分布。
然而,由于它们是相互独立的,我们可以同时执行这些线程组。
4.2. 配置
JMeter的测试计划默认配置为并行运行多个线程组,所以我们不需要选中_“按顺序连续运行线程组”_。
5. 测试用例设置
要尝试一个测试计划,我们需要一个API。我们可以使用JSON Placeholder网站公开的一个API。这个网站为我们提供了用于实验的虚假API。
我们将使用两个场景进行我们的测试计划:
场景1:读取特定帖子。
场景2:创建新帖子。
由于大多数最终用户对阅读帖子比写新帖子更感兴趣,我们希望将它们作为两个单独的线程组的一部分。
6. 向测试计划添加线程组
6.1. 创建基本测试计划
我们将运行JMeter以开始。
默认情况下,JMeter创建一个名为_Test Plan_的默认测试计划。让我们将此名称更新为_My Test Plan_。
6.2. 添加多个线程组
要创建线程组,我们将右键单击_Test Plan_并选择_Add -> Threads (Users) -> Thread Group_。
现在我们将创建两个线程组,首先创建一个GET请求线程组:
这个线程组将用于读取特定帖子。
我们在这里指定了一些关键参数:
- 名称:GET请求线程组(我们要给这个线程组的名称)
- 线程数量:5(我们将模拟的虚拟用户数量作为负载的一部分)
- 启动期:10(使配置的线程数量启动并运行所需的时间)
- 循环次数:1(JMeter应该执行特定场景的次数)
接下来,我们将创建POST请求线程组:
这个线程组将用于创建新帖子。
在这里,我们指定了:
- 名称:POST请求线程组(我们要给这个线程组的名称)
- 线程数量:5(我们将模拟的虚拟用户数量作为负载的一部分)。
- 启动期:10(使特定线程组的配置线程数量启动并运行所需的时间)
- 循环次数:1(JMeter应该执行定义在个别线程组中的特定场景的次数)
6.3. 添加请求
现在,对于每个线程组,我们将添加一个新的HTTP请求。
要创建请求,我们右键单击_Test Group_并选择_Add -> Sampler -> HTTP Request_。
现在我们在GET请求线程组下创建一个请求:
在这里,我们指定了:
- 名称:读取帖子(我们要给这个HTTP请求的名称)
- 注释:使用ID =1读取特定帖子
- 服务器名称或IP:my-json-server.typicode.com
- HTTP请求类型:GET(HTTP请求方法)
- 路径:/typicode/demo/posts
- 发送请求的参数:在这里,我们使用了1个参数,即id(这是检索具有特定ID的帖子所需的)
现在我们将在POST请求线程组下创建另一个请求:
在这里,我们指定了:
- 名称:创建帖子(我们要给这个HTTP请求的名称)
- 注释:通过发布到服务器创建新帖子ID =p1
- 服务器名称或IP:my-json-server.typicode.com
- 路径:/typicode/demo/posts
- 发送请求的参数:在这里,我们使用了两个参数,即id和标题(这些是创建新帖子所需的属性)
6.4. 添加摘要报告
JMeter允许我们以多种格式查看结果。
要查看我们的执行结果,我们将添加一个在表格中查看结果的监听器。
要创建请求,我们右键单击_“测试计划”并选择_Add -> Listener -> View Results in Table。
6.5. 运行测试(并行)
现在我们按下工具栏上的_Run_按钮(Ctrl + R)开始JMeter性能测试。
测试结果实时显示:
这表明读取帖子和创建帖子是按配置的线程数量一个接一个(并行)运行的。
这个测试结果是运行多个线程组并行的默认设置(未选中复选框)的结果:
6.6. 运行测试(顺序)
现在我们从我们的测试计划中选中_按顺序连续运行线程组_(即一次运行一个)复选框:
现在我们再次按下工具栏上的_Run_按钮(Ctrl + R)开始JMeter性能测试。
测试结果实时显示:
这表明所有映射到读取帖子的线程首先执行,然后是创建帖子的线程。
7. 结论
在本教程中,我们已经看到如何创建多个线程组,并可以使用它们来模拟真实应用程序的用户负载。
我们还学习了如何配置多个线程组按顺序或并行的场景。