在这个例子中,我们将演示如何在 Apache JMeter 中配置随机变量。我们将着手配置一个随机变量并将其应用于一个简单的测试计划。在我们看Random Variable的用法之前,我们先来看一下它的概念。
一、简介
Apache JMeter 是一种基于 Java 的开源工具,可让您对应用程序执行功能、负载、性能和回归测试。该应用程序可能在 Web 服务器上运行,也可能是独立的。它支持在包含静态和动态资源的客户端-服务器和 Web 模型上进行测试。它支持用于执行测试的各种协议,包括 HTTP、HTTPS、JDBC、FTP、JMS、LDAP、SOAP 等。
快速浏览一些功能:
- 它提供了一个全面的基于 GUI 的工作台来进行测试。它还允许您在非 GUI 模式下工作。 JMeter 也可以移植到服务器上,允许在分布式环境中执行测试。
- 它提供了模板的概念,模板是为各种方案或协议预先定义的测试计划,可以直接用于创建您需要的测试计划。
- 它使您能够使用强大的功能(如线程组、控制器、采样器、监听器等)在结构上构建测试计划。
- 它通过有效的日志记录提供调试和错误监控。
- 它通过变量的概念支持参数化测试。
- 它支持创建不同风格的测试计划,包括 Web、数据库、FTP、LDAP、Web 服务、JMS、监视器等。
- 它允许通过让不同的 JMeter 实例作为跨节点的服务器运行并从单个客户端应用程序访问来进行远程测试。
- 它为您提供实时测试结果,涵盖延迟、吞吐量、响应时间、活动线程等指标。
- 它使您能够基于正则表达式和许多其他功能执行测试。
1.1.随机数生成
今天的大多数编程语言都有一个 API 可以生成或生成随机数。生成器算法通常生成任意的数字序列,不遵循任何顺序、结构或格式。设计随机性的算法基于一些也称为种子的值。种子驱动序列生成。两个相同的种子将始终生成相同的序列。基于种子的方法也称为伪随机数生成。
1.2. JMeter 中的随机变量
JMeter 允许您生成随机数值并在变量中使用它。您可以通过随机变量配置元素来执行此操作。随机变量配置元素允许您设置以下参数:
- 变量名称:您可以提供可在测试计划元素中使用的变量名称。随机值将存储在此变量中。
- Format String:可以指定生成数字的格式。它可以以字符串作为前缀或后缀。例如,如果您希望生成器生成字母数字值,您可以指定类似 SALES_000 的格式(000 将替换为生成的随机数)。
- 最小值和最大值:您可以指定要生成的数字的范围。例如,最小数量可以设置为 10,最大数量可以设置为 50。生成器将生成该范围内的任何数字。
- 每个线程(用户):您可以指定随机生成器是由所有线程(用户)共享还是每个线程都有自己的随机生成器实例。这可以通过分别设置 false 或 true 来指示。
- 随机种子:您还可以为生成器指定种子值。如果每个线程都使用相同的种子(每个线程设置为 true),那么它将为每个线程生成相同的数字。
2. 随机变量举例
我们现在将配置随机变量配置元素。寻找随机变量的测试用例总是一件棘手的事情。你可能有一个测试随机数本身的测试用例,比如它是否在正确的范围内或者数字的格式是否有效。另一个测试用例可能是您需要提供一些随机数作为 URL 的一部分,例如订单 ID (orderId=O122) 或用于分页的页码 (my-domain.com/category/apparel/page/5)。它可能最适合对此类 URL 页面执行负载测试。我们将在 HTTP 请求采样器中使用配置的变量作为请求 URL 的一部分。作为此示例的一部分,我们将测试 JCG 网站 (www.javacodegeeks.com) 的 Java 类别页面 (1 – 10)。
http://www.javacodegeeks.com/category/java/page/2/
将使用随机变量获取 URL 上的页码 2。
2.1. JMeter 安装和设置
在安装 JMeter 之前,请确保您已安装 JDK 1.6 或更高版本。使用此处的链接下载最新版本的 JMeter。在撰写本文时,JMeter 的当前版本是 2.13。要安装,只需将存档解压缩到您希望安装 JMeter 的主目录中。将 JAVA_HOME 环境变量设置为指向 JDK 根文件夹。解压缩归档文件后,导航到 /bin 文件夹并运行命令 jmeter。对于 Windows,您可以使用命令窗口运行。这将打开 JMeter GUI 窗口,您可以在其中构建测试计划。
2.2.配置随机变量
要配置随机变量,我们必须使用 Config Element 选项。右键单击 测试计划 并选择 添加 -> 配置元素 -> 随机变量 。
随机变量配置
我们将元素的名称命名为“Page Counter Variable”。
变量名称
是“page_number”。
page_number
变量将在稍后的测试计划中使用。保持输出格式为空。我们将
Minimum Value
和
Maximum Value
字段值分别设置为 1 和 10。这意味着这样生成的数字将介于 1 和 10(包括两者)之间。将种子选项保留为空白。将
Per Thread (User)
字段的值保留为
False
。这意味着如果您配置多个线程,所有线程都将使用同一个随机生成器实例。
接下来,我们将创建一个名为“Single User”的
线程组
,并将
循环计数
设置为“10”。在这个例子中我们将只使用 1 个线程(用户)。您可以尝试使用多个线程来模拟负载测试。我们这篇文章的主要目的是展示我们如何配置和使用随机变量,因此我们将使其简单到 1 个用户测试。值为 10 的循环计数将对每个用户重复测试十次。
单用户线程组
对于我们的 线程组, 我们将创建名为“JCG Java 类别”的 HTTP 请求 采样器。
JCG Java 类别 HTTP 请求采样器
它将指向服务器 www.javacodegeeks.com。将
路径
值设置为
/category/java/page/${page_number}
。您可以在这里注意到变量
${page_number}
的使用。由于此测试将重复 10 次(循环计数),因此在运行时
page_number
变量将替换为 1 到 10 范围内的随机值。
您可以通过配置
View Results Tree
侦听器来查看测试结果。运行测试,您将看到以下输出。
测试输出
如您所见,每个请求都会在 URL 中生成随机页面值。
3.结论
当您想要使用具有可在运行时动态替换的参数值的 URL 加载测试多个页面时,随机变量功能会很方便。您还可以设计其他使用随机变量的用例。本文简要介绍了 JMeter 的随机变量功能。