# JMeter官方文档：6. 建立数据库测试计划



[《JMeter官方文档--翻译计划》](/2017/08/24/jmeter-translation-plans/) [原文地址](http://jmeter.apache.org/usermanual/build-db-test-plan.html)

## 6. 建立数据库测试计划（Building a Database Test Plan）
----
在本节中，您将学习如何创建测试数据库服务器一个简单的[测试计划](http://jmeter.apache.org/usermanual/build-test-plan.html)。您将创建五十个用户向数据库服务器发送2个SQL请求。并且，使这些用户运行测试100次。所以，请求的总数是（50个用户）x（2个请求）x（重复100次）= 10'000个JDBC请求。要构建测试计划，您将使用以下元素： [线程组](http://jmeter.apache.org/usermanual/test_plan.html#thread_group)， [JDBC请求](http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request)，[摘要报告](http://jmeter.apache.org/usermanual/component_reference.html#Summary_Report)。

<font color=#930000>
此示例使用MySQL数据库驱动程序。要使用此驱动程序，它包含.jar文件（例如mysql-connector-java-XXX-bin.jar）
必须复制到JMeter __./lib__ 目录（有关详细信息，请参阅[JMeter的Classpath](http://jmeter.apache.org/usermanual/get-started.html#classpath)）。
</font>


### 6.1添加用户（Adding Users）
----
您要对每个JMeter测试计划执行的第一步是添加一个[线程组](http://jmeter.apache.org/usermanual/test_plan.html#thread_group)元件。线程组告诉JMeter您想要模拟的用户数量，用户应发送请求的频率以及应发送的请求数量。
继续添加线程组元件，首先选择测试计划，单击鼠标右键获取 __添加__ 菜单，然后选择 __添加__  →  __线程组__。

您现在应该看到“测试计划”下的“线程组”元件。如果没有看到该元件，则通过单击“测试计划”元件,从而展开“线程组”元件。

接下来，您需要修改默认属性。如果尚未选择它，请选择树中的线程组元件。您现在应该在JMeter窗口的右侧部分看到线程组控制面板（参见下面的图6.1）

![](http://img.testclass.net/06_thread_group.png)

图6.1 具有默认值的线程组

首先为我们的线程组提供更具描述性的名称。在名称字段中，输入：JDBC users。

> 您将需要有效的数据库，数据库表和对该表的用户级访问。在这里显示的例子中，
数据库是“guest_test”，表名是“vm_instance”。

接下来，将用户数增加到50个。

在下一个字段中，“Ramp-Up Period” 的值为10秒。此属性告诉JMeter启动每个用户需要多长时间。例如，如果您输入10秒的Ramp-Up Period时间，JMeter将在10秒之后完成所有用户的启动。所以，如果我们有50个用户和10秒的 Ramp-Up Period，则起始用户之间的延迟将是200毫秒（10秒/ 50个用户=每秒0.2个用户）。如果将值设置为0，那么JMeter将立即启动所有用户。

最后，在循环计数字段中输入值100。此属性告诉JMeter重复测试多少次。要让JMeter循环运行测试计划，请选中“永远”复选框。

> 在大多数应用程序中，您在控制面板中进行的更改必须点击确定按钮。但是，在JMeter中，控制面板会在您进行更改时自动保存您的更改。如果更改元素了名称，在离开控制面板后（例如，当选择另一个树形元件）时，系统将自动保存您的更改。


有关完成的JDBC用户线程组，请参见图6.2。

![](http://img.testclass.net/06_jdbc_users_group.png)
图6.2 JDBC用户线程组

#### 6.2 添加JDBC请求（Adding JDBC Requests）
----
现在我们已经定义了我们的用户组，现在是定义他们将要执行的任务的时候了。在本节中，您将指定要执行的JDBC请求。

首先选择“JDBC Users”元件。单击鼠标右键获取 __“添加”__ 菜单，然后选择 __添加  →  配置元素  →  JDBC Connection Configuration__ 。然后，查看此控制面板（参见图6.3）。

设置以下字段（这些假设我们将使用名为“cloud”的MySQL数据库）：

* 绑定到池的变量名（这里：myDatabase）。这需要唯一地标识配置。JDBC采样器使用它来标识要使用的配置。
* 数据库URL：jdbc:mysql://localhost:3306/guest_test
* JDBC驱动程序类：com.mysql.jdbc.Driver
* 用户名：数据库的用户名
* 密码：用户名密码

屏幕上的其他字段可以保留为默认值。

JMeter使用控制面板中指定的配置设置创建数据库连接池。该池在“变量名称”字段中的JDBC请求中引用。可以使用几个不同的JDBC配置元素，但它们必须具有唯一的名称。每个JDBC请求都必须引用JDBC配置池。多个JDBC请求可以引用同一个池。

![](http://img.testclass.net/06_mysql_configuration.png)

图6.3 JDBC配置

再次选择JDBC Users元件。单击鼠标右键获取 __“添加”__ 菜单，然后选择__添加  →  Sampler  →  JDBC Request__。然后，选择此新元件以查看其控制面板（参见图6.4）。

![](http://img.testclass.net/06_add_jdbc_request.png)
图6.4 JDBC请求

在我们的测试计划中，我们将做出两个JDBC请求。第一个是选择所有“运行”VM实例，第二个是选择“展开”VM实例（显然，您应该将这些更改为适合您的特定数据库的示例）。这些如下所示。

> JMeter按照您将它们添加到树中的顺序发送请求。

首先编辑以下属性（见图6.5）：

* 在Name输入框中输入为：VM Running。
* Variable Name名称为：'myDatabase'（必须与JDBC Connection Configuration元件中Variable Name的命名保持相同）
* 输入SQL查询字符串字段。
* 在 Parameter values 输入框中输入：Running。
* 在 Parameter types 输入框中输入：VARCHAR。

![](http://img.testclass.net/06_VM_request_new.png)  截图也需要改。

图6.5 JDBC请求第一个SQL请求。

接下来，添加第二个JDBC请求并编辑以下属性（参见图6.6）：

* 在Name输入框中填入：VM Expunging。
* 在Parameter values输入框中填入：Expunging。

![](http://img.testclass.net/06_VM_expunging_new.png)

图6.6 JDBC请求第二个请求

#### 6.3 添加监听器以查看/存储测试结果（Adding a Listener to View/Store the Test Results）
---
您需要添加到测试计划中的最后一个元件是 [监听器](http://jmeter.apache.org/usermanual/component_reference.html#listeners)。此元件负责将您的JDBC请求的所有结果存储在文件中并呈现结果。

选择 __JDBC Users__ 元素并添加[Summary Report](http://jmeter.apache.org/usermanual/component_reference.html#Summary_Report) 监听器（__“ 添加  →  监听器”  →“ Summary Report”__ ）。

保存测试计划，并使用菜单 __Run__  →  __Start__ 或 ```Ctrl + R ``` 运行测试

监听器显示结果。

![](http://img.testclass.net/06_summary_report.png)

图6.7。图形结果监听器




原始封面

![课程图片](https://images.unsplash.com/photo-1667312402038-4845f64bc27c?w=300)


