JMeter(5)、测试数据库

·测试一般什么时候需要去操作数据库呢?

·详细设计阶段,针对数据库进行测试。

范式、表名、表字段、类型的检查、测试等。

1、需要用到数据库的场景

·1根据测试用例去构造测试数据。

·2查询数据库的数据、获取预期结果。(使用JDBC后置处理器)

·3查询数据库的数据、作为测试的输入。(使用JDBC前置处理器)

·4查询数据库的数据、判断业务操作是否成功。(使用JDBC后置处理器)

·5性能测试。

2、JMeter操作数据库

1.Jmeter如何去操作数据库呢?

Jmeter是一个java应用,所以对于数据库的操作是通过JDBC的方式来实现的。那就意味着要使用Jmeter完成对数据库的测试,需要用户自行根据实际情况去下载相应的数据库的JDBC驱动,如:mysql-connector-java-5.1.20-bin.jar。驱动下载之后,将jar包放入Jmeter的lib目录。

在Jmeter中,针对数据库进行测试的话,常用到的组件有四个:

1、JDBC Connection Configuration:实现JDBC连接配置,属于必选组件。

2、JDBC Request:JDBC请求、是用来实现数据库请求的。结果会计入查看结果树和聚合报告

3、JDBC前置处理器:是用来在不同的协议请求之前去实现相关的数据库操作。

比如说:测试数据的初始化、查询数据作为请求参数等。结果不会计入查看结果树和聚合报告

4、JDBC后置处理器:是用来在不同的协议请求之后去实现相关的数据库操作。

比如说:测试数据的还原、查询数据作为检查条件等。结果不会计入查看结果树和聚合报告

PS:JDBC Request、JDBC前置处理器、JDBC后置处理器这三个组件的配置选项基本一致,只是用途不同、使用场景不同而已。

2.各组件配置

1·JDBC Connection Configuration:

Variable Name:变量名称,由用户自定义的,用来标识JDBC连接配置器,在后续的JDBC请求组件中需要用到。

Validation Query:select 1,用来测试连接

Database URL:数据库的链接地址,不同类型的数据库,写法不一样。如果遇到解析Date异常,在URL后面加参数:

?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull

JDBC Driver class:不同类型的JDBC驱动中的Driver类的package路径,包括类名本身。不同类型的数据库是不一样的。

PS:URL和Driver class在Jmeter的帮助是有示例的。

用户名:具有访问权限的数据库用户名。

密码:用户的密码。

2·JDBC Request的配置:

·Variable Name:该处填写的是在JDBC Connection Configuration组件中所设置的Variable Name,表示使用对应的JDBC Connection Configuration组件来实现数据库连接。

·Query Type:请求类型,可选的类型如下:

·Select StateMent:表示执行的sql是select语句。

·Update StateMent:表示执行的SQL是增删改类操作。关键字:update、insert、delete、create、drop等。

·Callable StateMent:主要是用来调用存储过程的,但是也可以用来实现其它所有SQL请求。

·PrePared Select StateMent:表示执行的sql是select语句,但是允许在SQL语句中通过?来实现传参(SQL层面的传参,不是Jmeter)。

·PrePared Update StateMent:类似于Update StateMent,表示执行的SQL是增删改类操作。但是允许在SQL语句中通过?来实现传参(SQL层面的传参,不是Jmeter)。

 

PrePared类型的专属选项有以下两个

·Parameter values:该处填写的就是需要传递给带?的SQL的参数值。参数值的数量、顺序和SQL语句中的问号保持一致。参数值之间使用逗号分隔。如:35,male

·Parameter Types:该处填写的是参数的类型,数量、类型和Parameter values保持一致,要求大写,使用逗号分隔。如:INTEGER,VARCHAR

 

通用选项

·Variable Names:该处可以填写的是由用户自定义的变量名称,用来存储SELECT语句查询的结果。

1·变量名称可以有多个,使用逗号分隔。

2·变量是按照顺序去存储查询结果,一个变量存储一列值,即第N个变量存储结果中的第N列值。

3·存储方式采用的是数组方式,下标是从1开始,即下标1表示当列的第一个值。下标N表示第N个值。并且每一个变量都会有一个隐藏的参数叫:Vname_#=N,用来存储值的个数

原文地址:https://www.cnblogs.com/yjh1995/p/12578467.html