Jmeter数据驱动理念
数据驱动
什么是数据驱动:
- 1. 从数据文件中读取测试数据,驱动测试过程的一种测试方法(excel)
- 2. 数据驱动可以理解为更高级的参数化
特点:
- 1. 测试数据与测试代码分离
- 2. 数据控制过程
好处:
- 减少测试代码量
- 降低脚本开发和维护的成本
- 便于用例的修改和维护(不用修改代码)
要求:
- 较强的代码能力
- 较强的分层架构设计思维
- 对开发框架要有一定的了解
数据驱动的使用场景:
- 1. 复杂的业务流程
- 2. 根据业务场景分流
- 3. 符合条件的并发场景
电商业务模型(场景):
- 打开首页
- 登录(浏览生活用品, 浏览床上用品, 查看购物车)
- 注册(重定向登录, 退出登录)
- 浏览电子商品
Jmeter中数据驱动的控制方式:
- 参数化(csv, txt, 数据库)
- 逻辑控制器(分流针对不同用户行为)
Jmeter数据驱动实战:
场景:
- 1. 登录后男人浏览电子商品
- 2. 登录后女人浏览化妆品
Jmeter使用(使用数据库来保存测试数据):
- 测试计划->添加->Threads(Users)->线程组
- 测试计划->添加->配置元件->JDBC Connection Config-> Variale Name:user database URL:
jdbc:mysql://10.30.50.214:3306/ faw_fusion?serverTimezone=UTC
- JDBC Driver calss:可选择
- Username:root
- Password:root
- 线程组->添加->Sampler->JDBC Request->Variable Name:user(与数据库设置的变量名称一致)->查询语句:select sex from user;-> Variable names:sex(存储查询结果的变量名称) 备注: Parameter values 和parameter types的作用.如果查询语句中写的是select sex from user where id = ?; 占位符?, 即可以使用Parameter values输入的值, 类型则是parameter types输入的类型; Result variable name作用,是查询语句返回的结果集,如果sexArray
- 线程组->添加->监听器->查看结果树
- 线程组->添加->Sampler->Debug Sampler
- 线程组->添加->逻辑控制器->如果(If)控制器->条件${sex_1}==0(debug Sampler里返回的值) 如果控制器->添加->Sampler->添加http请求(此处添加BeanShell Sampler打印结果, System.out.println(“男人浏览了电子商品”))
- 线程组->添加->逻辑控制器->如果(If)控制器->条件${sex_1}==1如果控制器->添加->Sampler->添加http请求(此处添加BeanShell Sampler打印结果, System.out.println(“女人浏览了化妆品”))
- 因有四条数据之前仅限制了(sex_1),线程组->添加->配置元件->CSV Data Set Config->新建test.csv放到jmeter的bin目录下,每一行放一个id,即4个id,可以从数据库中导出-> CSV Data Set Config中Filename是csv的绝对路径,Fileencoding选择UTF-8,Variable Names:id, 目的是JDBC Request取数据的时候能够一条一条取
- 进入JDBC Request : 将SQL语句修改为select sex from user where id = ${id};将线程组的线程数修改为4
- 不将线程组修改为4,直接用循环控制,去掉JDBC Request中的where条件,csv删除,使用sex_# =4来控制,循环去1,2,3,4的值
- 线程组->添加->配置元件->计数器->启动:1, 递增1,最大值${sex_#},引用名称:count
- 选项->函数助手对话框->sex_${count}(计数器里的值)->点击生成,然后进入到如果控制器->条件修改成${__V(sex_${count})}==0
- 线程组->添加->逻辑控制器->循环控制器->循环次数:${sex_#}