DDT 数据驱动测试
- 数据驱动
- 数据怎么来?
- 怎么用数据?
- 数据怎么来?
- 用文本工具,批量造一批数据
- 如用Excel
- 问题:必须先注册,才能登录
- 从数据库表中导出一份数据
- 数据库导出
- 问题:不能用于注册
- 用注册接口造数据,后续登录…接口用这个数据
- 先调用注册,然后调用登录
- 问题:这个数据不能迭代第二次,只能用一次
- 解决方法: 把这些数据写入本地文件
- 怎么用数据?
- 使用数据文件 ------ csv数据文件设置功能
- csv格式:本身就是一个文本文件, 一种用
逗号分割列
的文本文件- csv数据文件设置 这个功能,支持的就是文本格式文件
- 可以是 csv、txt、json
csv数据文件设置
强调: **csvRead函数**,尽可能不用
- csv数据文件设置
- 文件: 可以是 txt、csv
- 路径:默认时是 绝对路径
相对路径 -----建议使用相对路径
相对路径的起始点?
- 两个地方:
默认的是 jmeter的bin文件夹 ----默认时,jmeter文件保存路径就是 bin文件夹
当前保存的jmx文件
相对路径的写法?
- 两个地方:
- 默认的是 jmeter的bin文件夹 ----默认时,jmeter文件保存路径就是 bin文件夹
- 当前保存的jmx文件
相对路径的写法?
建议
:/
开头 文件地址如果路径取不到文件,整个jmeter就报错,不执行任何请求
- 因为csv数据文件设置,是 配置元件 优先级最高
文件格式,建议使用 txt
- txt文件,在Windows下,默认是utf8编码
- csv文件,编辑器很多时候用 Excel,Excel在Windows下保存文件时,默认不是utf8
- 而csv数据文件设置,选择用utf8, 两个编码不一致,就会导致中文乱码
- 解决: csv文件,不用 Excel打开,而用记事本
- 文件编码:
- 选择与你文件格式一致的编码
- 变量名称:
- 定义变量来接受读取的值
- 定义多个变量名称,之间用英文逗号分割
- 分割符:
- 分割符合 要与 文件中的分割符一致
- 文件中用 tab键 分割列, 填
\t
- 忽略首行:选择
False
就是不忽略首行,选择True
就是忽略首行。- 是否允许带有引号:
- true: 忽略一对双引号(英文),单引号是不能忽略的。
- 遇到文件结束符再循环?
- true: 会循环——> 遇到最后一条数据,又会从头开始
- false: 不会循环。超过这个行数后,就会是空值
EOF
- 遇到文件结束符停止线程?
- false: 不停止线程
- true: 停止线程,不干活
- 线程共享模式:
- 当前线程: ------所有的线程,都会单独读取一份csv文件,从自己读取的文件中读取值
csv数据文件设置,默认情况下,所有的并发用户,都是从同一份文件串行的从上往下执行
默认情况下,csv文件只读取了一次
csv数据文件设置这个功能存在的问题: 在分布式执行性能测试时候,因为它是从第1行开始读
取,所以所有的分布式机器也都是从第1行开始读取,导致重复读取同一行数据问题。
逻辑控制器
控制取样器执行的逻辑的,如果逻辑控制器下面没有取样器,这个逻辑控制器就没有意义
if条件控制
- 满足条件执行下面的取样器
- 默认情况下,条件需要使用 jexl3 或 groovy函数的运算结果为真true
- 用表达式 :就要去掉 interpret condition as varibale expression
循环控制器
foreach控制
- 在jmeter中,有 一个取样器执行一次完成的请求,就算一个事物 ----单接口请求
- jmeter中,多个取样器,完整的执行一次请求,也可以算一个事物 ----业务接口