6. 构建数据库测试计划¶
在本节中,您将学习如何创建一个基本的 测试计划来测试数据库服务器。您将创建 50 个向数据库服务器发送 2 个 SQL 请求的用户。此外,您将告诉用户运行他们的测试 100 次。因此,请求总数为(50 个用户)x(2 个请求)x(重复 100 次)= 10'000 个 JDBC 请求。要构建测试计划,您将使用以下元素: 线程组、 JDBC 请求、摘要报告。
6.1 添加用户¶
您想要对每个 JMeter 测试计划执行的第一步是添加一个 线程组元素。线程组告诉 JMeter 你想模拟的用户数量,用户应该多久发送一次请求,以及他们应该发送多少请求。
继续添加 ThreadGroup 元素,首先选择 Test Plan,单击鼠标右键以获取Add菜单,然后选择 。
您现在应该在测试计划下看到线程组元素。如果您没有看到该元素,则通过单击“测试计划”元素展开“测试计划”树。
接下来,您需要修改默认属性。如果尚未选择树中的线程组元素,请选择它。您现在应该在 JMeter 窗口的右侧看到线程组控制面板(参见下面的图 6.1)
![图 6.1。 具有默认值的线程组](/images/threadgroup1.png)
首先为我们的线程组提供一个更具描述性的名称。在名称字段中,输入JDBC Users。
接下来,将用户数增加到50。
在下一个字段 Ramp-Up Period 中,保留10 秒的值。该属性告诉 JMeter 在启动每个用户之间延迟多长时间。例如,如果您输入 10 秒的 Ramp-Up Period,JMeter 将在 10 秒结束时完成启动所有用户。因此,如果我们有 50 个用户和 10 秒的 Ramp-Up Period,那么启动用户之间的延迟将为 200 毫秒(10 秒 / 50 个用户 = 每个用户 0.2 秒)。如果您将该值设置为 0,那么 JMeter 将立即启动您的所有用户。
最后,在 Loop Count 字段中输入值100 。此属性告诉 JMeter 重复测试多少次。要让 JMeter 重复运行您的测试计划,请选中 Forever 复选框。
有关已完成的 JDBC 用户线程组,请参见图 6.2。
![图 6.2。 JDBC 用户线程组](/images/threadgroup2.png)
6.2 添加 JDBC 请求¶
现在我们已经定义了我们的用户,是时候定义他们将要执行的任务了。在本节中,您将指定要执行的 JDBC 请求。
首先选择JDBC 用户元素。单击鼠标右键以获取Add菜单,然后选择 。然后,选择这个新元素来查看它的控制面板(见图 6.3)。
设置以下字段(假设我们将使用名为“云”的 MySQL 数据库):
- 绑定到池的变量名称(此处为:myDatabase )。这需要唯一标识配置。JDBC 采样器使用它来识别要使用的配置。
- 数据库地址:jdbc:mysql://ipOfTheServer:3306/cloud
- JDBC驱动类:com.mysql.jdbc.Driver
- 用户名:数据库的用户名
- 密码:用户名的密码
屏幕上的其他字段可以保留为默认值。
JMeter 使用控制面板中指定的配置设置创建数据库连接池。该池在 JDBC 请求中的“变量名”字段中引用。可以使用几个不同的 JDBC 配置元素,但它们必须具有唯一的名称。每个 JDBC 请求都必须引用一个 JDBC 配置池。多个 JDBC 请求可以引用同一个池。
![图 6.3。 JDBC 配置](/images/jdbc-config.png)
再次选择 JDBC Users 元素。单击鼠标右键以获取Add菜单,然后选择
。然后,选择这个新元素来查看它的控制面板(见图 6.4)。![图 6.4。 JDBC 请求](/images/JDBCRequest.png)
在我们的测试计划中,我们将发出两个 JDBC 请求。第一个是选择所有“正在运行”的虚拟机实例,第二个是选择“正在删除”虚拟机实例(显然您应该将这些更改为适合您特定数据库的示例)。这些如下图所示。
首先编辑以下属性(参见图 6.5):
- 将名称更改为“正在运行的 VM ”。
- 输入池名称:“ myDatabase ”(与配置元素中的相同)
- 输入 SQL 查询字符串字段。
- 使用“正在运行”值输入参数值字段。
- 使用“ VARCHAR ”输入参数类型。
![图 6.5。 第一个 SQL 请求的 JDBC 请求](/images/JDBCRequest2.png)
接下来,添加第二个 JDBC 请求并编辑以下属性(参见图 6.6):
- 将名称更改为“ VM Expunging ”。
- 将 Parameter values 的值更改为“ Expunging ”。
![图 6.6。 第二个请求的 JDBC 请求](/images/JDBCRequest3.png)