4、数据驱动性能测试
数据驱动的理念
什么是数据驱动
定义
- 从数据文件中读取测试数据,驱动测试过程的一种测试方法
- 数据驱动可以理解为更高级的参数化
特点
- 测试数据与测试代码分离
- 数据控制过程
优势
- 减少测试代码量
- 降低脚本开发和维护的成本
- 便于用例的修改和维护(不需要修改代码)
数据驱动的使用场景
- 复杂的业务流程
- 根据业务场景分流(金牌,银牌,铜牌)
- 符合条件的并发场景
JMeter中的数据驱动
- 控制方式
- 参数化
- 逻辑控制器
JMeter数据驱动演示
JMeter中参数化的五种方式:
- User Defined Variables:用户定义的变量
- 函数助手:_CSVRead
- CSV Data Set Config:CSV数据集配置
- User Parameters:用户参数
- 数据库
用户定义变量
- 添加方法:选择“线程组”,添加-配置元件-用户定义变量,在这个控件中,定义所需要的参数
- 使用方法:在对应的需要使用参数的位置,使用${host}替代
- 应用场景:当测试环境变化时,只需要修改一处的IP就可以让脚本马上应用于另外一个环境的测试,而不需要逐个脚本进行修改
_CSVRead函数
CSV 数据文件设置
- 配置元件/CSV Data Set Config
- 适合于大数据量的并发,注意使用英文,进行分割
可以从指定的文件中一行一行地提取文本内容
- 文件名:指保存参数化数据的文件目录,可以相对或者绝对路径
- 文件编码:UTF-8,文件的编码格式
- 变量名称:user,pwd 参数名称(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,分隔符在下面的“分隔符”中定义,为了和文件中的“,”对应,这里也用“,”分割每个参数名,这里的 user,pwd,可以被可以利用变量名来引用:${user},${pwd}
- 遇到文件结束符再次循环(默认是True):是否循环读入,因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
用户参数
- JMeter主要用来一些全局的用户变量的存储
- 比如一些hostname,server,port,database,username等参数都可以存储在User Defined Variables里,取变量的时候直接使用${变量名}的格式即可
“前置处理器/用户参数”
JMeter之数据库
需求
- 测试student表
环境准备
https://dev.mysql.com/downloads/connector/j/
- mysql驱动 mysql-connector-java-5.1.6-bin.jar
- jmeter->jdbc 配置
- jmeter->jdbc请求
步骤:
- 在测试计划中加入jar包
- jdbc配置 jdbc:mysql://localhost:3306/test
- com.mysql.jdbc.Driver
- jdbc请求
- 断言、结果树
实现jdbc请求与http请求的关联
获取指定的数据:
cv = vars.getObject("result").get(0).get("sname");
vars.put("rr",cv);