·在测试工作中,需要用到数据库的场景有哪些?
·测试数据的制造。
·查询数据,用于测试的输入。
·查询数据,用来检测业务结果是否准确。
·对sql语句进行性能测试。
·Jmeter如何去操作数据库?
Jmeter是一款基于java语言开发的工具,它操作数据库的方式主要是JDBC方式。
需要用到的组件有四个:
·JDBC Connection Configuration:JDBC连接配置组件。属于必选组件,根据需要可以添加多个。。
·JDBC Request:JDBC请求。用于操作数据库。
·JDBC PreProcessor:JDBC前置处理器,作用和JDBC请求类似,只是运行在请求之前。
·JDBC PostProcessor:JDBC后置处理器,作用和JDBC请求类似,只是运行在请求之后。
·Jmeter操作数据库的准备工作:
·准备JDBC驱动的jar包:
去所需要操作的数据库官网下载对应的JDBC驱动包(jar包),下载之后解压将jar包放入到jmeter的lib目录。
到mysql的官网下载数据库驱动包:
访问网站https://www.mysql.com/downloads/,在网页的下面找到“Mysql Community (GPL) Downloads”,进入
下载Connector/J:
根据自己的操作系统下载对应的包:
我是用的是Mac,所以下载了下面这个:
解压后将mysql-connector-java-8.0.22.jar放入了apache-jmeter-5.3/lib目录下,然后重启Jmeter。
·获取数据库相关的信息:
数据库的地址:ip地址,比如10.10.10.244
用户名:root
密码:123456
数据库名:testingedu
表信息:和sql有关。
JDBC Connection Configuration:
在线程组下面添加JDBC Connection Configuration的组件,用于配置需要使用的Mysql数据库信息:
可以查找Jmeter安装目录下面的 apache-jmeter-5.3/printable_docs/usermanual/component_reference.html#JDBC_Connection_Configuration配置说明来填写:
·Variable Name:变量名称,是用来存储连接配置信息,即连接的别名。后续的JDBC请求、前置后置处理器都需要用到该变量名,表示使用对应的连接去连接操作数据库。
·DatabaseURL:是用来指定需要连接的数据库的JDBC的URL地址。
PS:不同的数据库的写法和参数是不一样的。
·JDBC Driver class:JDBC驱动类的package,选择即可。
比如说mysql数据库:
jdbc:mysql://host[:port]/dbname
实际就是:
jdbc:mysql://10.10.10.244:3306/testingedu
·username:数据库的用户名
·password:密码
PS:在mysql中,用户名和访问地址是有关的。
·JDBC request:
·Variable name:变量名称,该处填写的是我们在JDBC Connection Configuration中所设置的变量名称,表示使用对应的连接配置中所填写的信息去连接和操作数据库。
·Query type:请求类型,要求实际执行的SQL语句的关键字和所选择的请求类型匹配。
可供选择的请求类型及其对应的SQL关键字如下:
·select statement:select类型,对应的关键字为:
select
·Update statement:update类型,对应的关键字为:
create/alter/drop 针对结构
insert/update/delete 针对数据
·callable statement:该类型支持所有的关键字,但是实际中主要是用于存储过程的调用。
·Prepared select statement:前置select类型,又叫批量select类型,所支持的SQL关键字和select statement一致。
·Prepared update statement:前置update类型,又叫批量update类型,所支持的SQL关键字和update statement一致。
对于Prepared类型来说,是支持在SQL语句中通过问号来实现传参的。一旦SQL语句中有问号,则需要用到下方的两个Parameter选项。
·Parameter values:参数值,是用于传递给带问号的SQL中问号的。
参数值可以有多个,使用逗号进行分隔。
参数值将按照顺序一一传递到SQL中的问号(所在的位置)。
·Parameter type:参数类型。
参数类型可以有多个,使用逗号进行分隔。
参数类型的顺序、数量要求和参数值的顺序、数量保持一致。
·Variable Names:变量名称,该处可以指定变量名称用来存储查询语句的结果。
·变量名称可以有多个,使用逗号进行分隔。
·一个变量只能存储结果中的一列值,变量是按照顺序和查询结果一一对应,即第N变量存储查询结果中的第N列值。
·存储采用的是类似于数组的方式。
效果为:
Vname_1=value1,Vname_2=value2,...,Vname_N=valueN
使用变量来传递SQL语句中的参数,Jmeter会提前编译sql语句,效率比较高,也是就是会预编译。
·JDBC前置处理器和JDBC后置处理器的选项和JDBC请求是完全一致的,区别在于:
·JDBC请求执行过程可见,会被统计。
JDBC前置和后置处理器只是辅助类型组件,执行过程不可见,不会纳入统计。
·JDBC前置和后置处理器的执行时机不同。
提取器:JDBC Request
此取样器允许您将JDBC请求(SQL查询)发送到数据库。
后置处理器:JDBC PostProcessor
JDBC后置处理程序使您可以在样本运行后立即运行一些SQL语句。如果JDBC样本更改了某些数据,并且您希望将状态重置为JDBC样本运行之前的状态,那么这将非常有用。
JDBC Preprocessor查出来的数据为啥foreach 读不出来呢,JDBC request查出来的数据foreach 就能数出来?我也不知道。刚开始学习Jmeter