5.1数据库测试概述
在测试过程中,对于数据库的操作场景一般有:
·测试数据的制造
·查询数据用于测试的输入
·测试完成之后查询数据用于检测结果
·业务SQL的性能测试
JMeter是java应用,所以是JDBC的方式去连接和操作数据库。需要我们去下载JDBC驱动包需要自行下载,放入JMeter的lib目录。
Mysql下载地址:https://dev.mysql.com/downloads/connector/
在JMeter中,和JDBC操作有关的组件总计有四个:
·JDBC Connection Configuration:必选组件,用于配置和建立JDB连接。
·JDBC Request:JDBC请求组件。
·JDBC PreProcessor:JDBC前置处理器组件。
·JDBC PostProcessor:JDBC后置处理器组件。
5.2JDBC Connection Configuration组件
我们先看JDBC Connection Configuration组件:
·Variable Name for created pool:变量名称,由用户指定,用于存储连接配置信息,在后续的JDBC连接请求类组件中使用
连接池设置:
·Max Number of Connections:默认为0,不启用连接池
·Max Wait:最大等待时间,如果在尝试检索连接的过程中超过了超时期限,则Pool会引发错误
·Time Between Eviction Runs: 驱逐运行之间的时间。空闲对象退出线程的两次运行之间要休眠的毫秒数。当为非肯定时,将不运行任何空闲的对象退出线程。(默认为“ 60000 ”,1分钟)。
·Auto Commit:自动提交,打开或关闭连接的自动提交
·Transaction Isolation:交易隔离
·Preinit Pool: 预初始化池连接池可以立即初始化
·Test While Idle: 测试池的空闲连接
·Soft Min Evictable Idle Time: 在空闲对象退出者有资格驱逐连接之前,连接可能在池中处于空闲状态的最短时间,另外还有至少最少空闲连接保留在池中的额外条件。
·Validation Query:验证查询,一个简单的查询,用于确定数据库是否仍在响应。不同的数据库语句不同,Mysql数据库选择select 1即可,如有其它需要自行百度。
·Database URL:数据库的URL,每个数据库的连接格式不同,Mysql的格式为:jdbc:mysql:// host [:port] / dbname
其它的数据库,可参考JMeter官方帮助文档:
https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration
·JDBC Driver class: JDBC驱动类,其它数据库可参考JMeter官方帮助文档。
·Username:数据库用户名
·Password:数据库密码
·Connection Properties: 建立连接时要设置的连接属性
5.3 JDBC Request组件
· Variable Name of Pool declared in JDBC Connection Configuration :该处填写的就是JDBC Connection Configuration组件中所设置的variable name的值,表示使用对应的连接配置。
· Query Type:请求类型,要求实际执行的SQL语句的类型和所选类型匹配。
可用类型有:
·Select Statement:Select 类型,支持的关键字为select
·Update statement:Update类型,支持的关键字为:
create/alter/drop,insert/update/delete
·Callable statement:理论上支持所有关键字,但是主要是用于存储过程的调用。
·Prepared select statement:预处理select类型,支持的关键字和select statement是一样的。
·Prepared Update statement:预处理Update类型,支持的关键字和Update statement是一样的。
Prepared类型支持在sql语句中通过问号来预编译和接收传入数据。
· Parameter values:该选项是用于给Prepared类型的请求中的问号传参的。多个参数之间使用逗号分隔。参数的个数、类型、顺序要求和问号保持一致。参数是按照顺序一一传递给sql语句中的问号的。
· Parameter types:该选项是用来指定参数类型的。参数类型的数量、顺序要求和Parameter values保持一致。
到这里呢,我们用这些知识就可以完成数据测试准备,以及业务SQL的性能的测试。
· Variable names:变量名称,是用来存储查询语句的查询结果的。
变量名称可以有多个,使用逗号分隔。变量是按照顺序,依次存储查询结果中的每一列值,一个变量存储一列值。存储方式采取的是类似于数组的方式变量名_1=value_1,变量名_2=value_2,…,变量名_N=value_N,与之同时,每一个变量都会产生一个衍生变量:变量名_#=每一列值的个数。
对于场景:查询数据用于测试的输入(JDBC前置),测试完成之后查询数据用于检测结果(JDBC后置)。一般建议用于自动化测试,而不要用于性能测试,对于性能测试,还是建议将数据查出做参数化处理。