Jmeter学习笔记:数据库连接及参数化

Apache JMeter是Apache组织开发的基于Java的压力测试工具。同时也可以用来做接口测试。本期我将分享一些Jmeter的学习笔记,欢迎大家指正。

前面逻辑控制器的笔记中我们有用到csv文件做为参数文件,今天我们使用数据库来作为参数化数据来源,首先需要准备的数据表如下:

一、JDBC数据库连接

1.在Jmeter的线程组中分别添加JDBC Connection ConfigConfiguration、JDBC Request、Debug Sampler、查看结果树,如图:

2.JCBD连接设置:

首先,需要在测试计划中将连接mysql需要的包加到classpath中,如图:

接下来,在JDBC Connection Configuration 中添加JDBC的配置,如图:

这里特别说明一下以下配置:

DatabaseURL:

前部分jdbc:mysql:为mysql固定写法;

localhost:3306是我的数据库地址和端口号;

jmeter_test是连接的数据库名称;

问号后面的是一些连接时的参数,这个根据具体配置添加

JDBC Driver class :

这个是mysql数据库连接的驱动,为固定写法。

Username和Password是数据库的用户名密码。

3.JDBC 请求设置

在JDBC Request中设置如下:

我们这里查询出所有用户的name。

4.执行结果

执行之后,结果如下:

在这里我们需要关注的是Debug Sampler中的内容,如图:

可以看出,返回的结果是一个List列表,name_#=7表示一个有7条name数据,分别为name_1,name_2...name_7。那么我们假设有这样一个场景,我们需要根据不同的年龄段来执行不同的动作,而返回结果的格式和我们上一篇写的ForEach格式相同,所以我们可以使用ForEach来遍历查询到的结果。

二、参数化

首先,添加ForEach控制器,配置如图:

我们遍历所有的name,然后在ForEach中再添加一个JDBC Request,配置如下:

这里面我们使用到了JDBC的另一个查询类型,Prepared Select statement 参数化查询。因为我们遍历出来的name不是固定值,所以这里使用参数化查询,使用“?”作为占位符,然后在下面“Parameter values”和“Parameter type”中填写参数和参数类型。

需要执行不同的动作自然少不了判断,所以在这里添加两个如果(If)控制器,用来判断年龄小于18和年龄大于18,如图:这里需要注意的是age我们写的是age_1,因为从上面查询name的时候我们可以看到,返回结果是以varName_num的格式来命名的,由于我们的数据表中name是唯一的,所以查到的结果必然只有一条,所以这里使用age_1。

然后在如果控制器中分别添加一个BeanShell,来打印出不同结果,如图:这个意思是,年龄小于18时,打印出来姓名年龄和未成年,年龄大于或等于18时,打印出姓名年龄和成年人。

执行结果如下:

可以看出和我们的预期结果是一样的。

以上,便是Jmeter数据库连接和参数化的简单使用,如有疏漏,欢迎批评指正。欢迎关注公众号添加好友一起学习。

马达蒙的学习笔记

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181217G0JB2W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券