首页/开发/软件测试速查/数据驱动测试(Data-Driven)
用例设计方法62 条

数据驱动测试(Data-Driven)

把测试逻辑与数据分离:脚本固定,数据来自表格、CSV 或数据库;新增覆盖往往只需增加数据行。

软件测试速查开发更新于 2026-10-13

数据驱动测试是什么

数据驱动测试把测试逻辑与数据分离:脚本固定,数据来自表格、CSV 或数据库,新增覆盖往往只需增加数据行而不改代码。它适合同一逻辑需要大量取值组合的场景,配合参数化机制(如 pytest.mark.parametrize)逐行生成用例并独立报告结果。

基本信息

数据组织按场景分组数据行,标注预期与依据
边界数据每组数据覆盖正常、边界与异常三类取值
常见载体CSV/Excel 表格、数据库查询结果、代码内参数化列表
报告要求每条结果标注对应的数据行,便于追错

典型使用场景

  • 表单校验矩阵:同一字段的大量合法非法取值
  • 接口参数组合:金额、渠道、币种等多参数交叉
  • 多地域多语言:同一流程在不同配置下的展示与计算
  • 权限矩阵:角色与操作的允许拒绝组合
  • 回归补充:上线缺陷修复后追加数据行,防止复发
  • 算法与规则表:定价、运费等规则引擎的批量验证

结构示意

结构示意
cases.csv:
case_id,amount,expect_code
C1,100,OK
C2,-1,INVALID
C3,999999,INSUFFICIENT
# 逻辑侧固定:读取数据行 -> 执行 -> 断言 expect_code
# 新增覆盖只加数据行,不改测试代码
# 数据文件纳入版本管理,报告标注用例对应的数据行

数据来源怎么选

来源适用场景注意点
CSV/Excel业务可维护的用例矩阵列名与预期列变更要评审
数据库大体量或从生产脱敏取样数据快照与环境隔离
代码内参数化开发自测与单元层数据可读性与分组命名
数据文件要纳入版本管理;测试报告中标注用例对应的数据行,便于追溯;数据改动后要同步更新预期列。
参数化命名要可读:为每组数据指定明确 ID(如「边界-负数金额」),失败时能一眼定位是哪组数据出错。

易错点

  • 数据文件改动后不同步更新预期列,静默错位
  • 所有场景共用一份数据,用例之间产生隐性依赖
  • 只堆数据行不看组合:重复等价的数据让执行时间白涨
  • 数据文件不进版本管理,环境间不一致导致结果无法复现
  • 参数 ID 使用默认序号,报告里分不清失败对应哪组数据

数据来源与参考

  • ISTQB CTFL 4.0 大纲(数据驱动方法)
  • pytest 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌