Jmeter数据驱动理念

数据驱动

什么是数据驱动:

  1. 1.       从数据文件中读取测试数据,驱动测试过程的一种测试方法(excel)
  2. 2.       数据驱动可以理解为更高级的参数化

特点:

  1. 1.       测试数据与测试代码分离
  2. 2.       数据控制过程

好处:

  1. 减少测试代码量
  2. 降低脚本开发和维护的成本
  3. 便于用例的修改和维护(不用修改代码)

要求:

  1. 较强的代码能力
  2. 较强的分层架构设计思维
  3. 对开发框架要有一定的了解

数据驱动的使用场景:

  1. 1.       复杂的业务流程
  2. 2.       根据业务场景分流
  3. 3.       符合条件的并发场景

电商业务模型(场景):

  1. 打开首页
  2. 登录(浏览生活用品, 浏览床上用品, 查看购物车)
  3. 注册(重定向登录, 退出登录)
  4. 浏览电子商品

Jmeter中数据驱动的控制方式:

  1. 参数化(csv,  txt, 数据库)
  2. 逻辑控制器(分流针对不同用户行为)

Jmeter数据驱动实战:

         场景:

  1. 1.       登录后男人浏览电子商品
  2. 2.       登录后女人浏览化妆品

Jmeter使用(使用数据库来保存测试数据):

  1. 测试计划->添加->Threads(Users)->线程组
  2. 测试计划->添加->配置元件->JDBC Connection Config-> Variale Name:user database URL:

jdbc:mysql://10.30.50.214:3306/ faw_fusion?serverTimezone=UTC

  1. JDBC Driver calss:可选择
  2. Username:root
  3. Password:root
  4. 线程组->添加->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
  5. 线程组->添加->监听器->查看结果树
  6. 线程组->添加->Sampler->Debug Sampler
  7. 线程组->添加->逻辑控制器->如果(If)控制器->条件${sex_1}==0(debug Sampler里返回的值) 如果控制器->添加->Sampler->添加http请求(此处添加BeanShell Sampler打印结果, System.out.println(“男人浏览了电子商品”))
  8. 线程组->添加->逻辑控制器->如果(If)控制器->条件${sex_1}==1如果控制器->添加->Sampler->添加http请求(此处添加BeanShell Sampler打印结果, System.out.println(“女人浏览了化妆品”))
  9. 因有四条数据之前仅限制了(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取数据的时候能够一条一条取
  10. 进入JDBC Request : 将SQL语句修改为select sex from user where id = ${id};将线程组的线程数修改为4
  11. 不将线程组修改为4,直接用循环控制,去掉JDBC Request中的where条件,csv删除,使用sex_# =4来控制,循环去1,2,3,4的值
  12. 线程组->添加->配置元件->计数器->启动:1, 递增1,最大值${sex_#},引用名称:count
  13. 选项->函数助手对话框->sex_${count}(计数器里的值)->点击生成,然后进入到如果控制器->条件修改成${__V(sex_${count})}==0
  14. 线程组->添加->逻辑控制器->循环控制器->循环次数:${sex_#}

 

posted @ 2020-03-19 09:19  jiyanjiao  阅读(225)  评论(0编辑  收藏  举报