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数据库连接和参数化的简单使用,如有疏漏,欢迎批评指正。欢迎关注公众号添加好友一起学习。
欢
迎
关
注
马达蒙的学习笔记
领取专属 10元无门槛券
私享最新 技术干货