使用场景:
例1:在做接口测试涉及到后端数据校验时,比如成功增添一条用户信息,单存依赖接口返回值来做断言是不够的,同时还需要连接数据库将新增的数据找到并把各个字段对应的值提取出来和你插入的数据进行匹配断言,如果都pass那才能证明这个接口能够完成成功添加一条用户信息的功能。
例2:当你要执行一条异常流的测试用例,比如无法添加已存在用户信息,那在你这次的http请求之前就需要设置前置处理器-jdbc预处理程序,进行预先将你要输入的数据预置在数据库中,怎样才满足这条测试用例的前置条件。
当然还有后置处理,连接数据库删除你进行这次测试中所添加的数据,以还原测试环境等。因此利用Jmeter连接数据库的操作作为测试人员是一定需要熟练掌握的。
具体操作步骤:(以mysql数据库举例,其它数据库的连接方式也类似)
第一步:下载数据库连接的驱动文件:mysql-connector-java-8.0.11(注意驱动jar包的版本需要高于mysql的版本)
第二步:进入到jmeter测试计划中,设置一个变量-连接数据库的参数(以便于设置jdbc connection configuration时填写url时直接调用)
注意:url的结构是这样的:jdbc:数据库类型://数据库地址:数据库的端口/数据库名?参数1=xx&参数2=xx
特别注意:为了避免编码问题和时区问题建议参数部分这样填:useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
第三步:让jmeter读取连接驱动,即将下载好的jar添加到classpath中。
第四步:在setup线程组里添加一个配置元件-jdbc connection configuration,并进行设置。
表示箭头的几个参数是一定要设置的,其他值都用默认的就好了。
Variable Name for create pool:数据库变量名,你连接哪个数据库就取对应数据库的名称,后续JDBC Request中会用到这个值;
Database URL:用我们之前在测试计划中设置的变量db_url就可以了。引用方式${db_url}
JDBC Driver class:mysql驱动类选择com.mysql.jdbc.Driver ;
Username/Password:数据库的用户名和密码;
第五步:在普通的线程组里添加取样器-jdbc request就可以对数据库进行操作了,操作的结果可以通过查看结果树进行查看。
其中简单介绍几种数据库的常用操作。
数据库操作之前呢,一定记得在variable name of pool......这一项填写上第四部中你设置的数据库变量名,让jmeter知道你到底要连接哪一个数据库。这里我们连接test数据库,所以填写test。
针对不同的数据库操作类型,query type提供了12种类型,我们最常用的就是前四种。比如select statement:查询类语句,update statement:更新类语句。callable statement:存储过程类语句......记住对应的操作类型选择对应的query type就可以了。
同样的针对数据库的操作举两个常用的操作实例。
例1:新增一条员工信息到test库中的emp表中。
因为新增语句是更新类sql语句首先选择query type为update statement。然后在编辑区域直接写入更新类的sql语句,如下图所示。
点击运行之后,我们可以在数据库中看到这条数据成功添加到数据库中了。
例二:查询员工信息,并把刚才新增的那条信息中的几个值提取出来。
因为是查询类语句,query type当然选择select statement。然后写查询语句。将需要提取的几个字段的名称作为变量名依次写在variable name里
注意用西文,隔开。
首先我们通过查看结果数看一下查询效果。
然后我们试着去使用我们提取到的值再插入一行数据到emp2空表中。我们就使用第三排的empno(1002),empname(shoulder),job(技术经理);和第二排的mgr(6000),sal(5000);和第一排的hiredate(20101010),deptno(20)作为插入。这里也想演示到一个现象,因为刚才我们是用的select * from test,每一个字段提取的数据个数等于行数。比如empname,empname这个变量的值有frank,tiger,shoulder,三个值,那到底怎么去使用其中一个呢。那请注意,以注意的方式去使用值,${变量名_n}n代表第几排的数据,比如我想用empname中的tiger,就是${empname_2},下面针对我之前提出的插入信息规则进行演示。
数据库的连接与常用到基本的使用技巧就分享到这里,如果觉得这篇文章对你有帮助请为文章点个赞吧,有问题也欢迎大家评论指正,第一次分享技术知识,后续还会继续做分享的,谢谢!