返回数据与分布式测试模块
Data & Systems / Tutorial 11
测试数据设计与环境治理教程
把“临时找几条数据”升级为可准备、可验证、可清理、可审计的工程资产,让手工测试、自动化和 AI 生成用例都能真正执行。
01
用例能否执行,先看数据是否可信
数据是一等公民常见失败
用例写着“前置:用户已有 3 条反馈”,执行时却没人知道用哪个账号、怎样创建、状态是什么、测试后如何清理。问题不是少一条 SQL,而是数据准备没有进入用例设计。
一条数据前置必须回答
| 问题 | 可执行答案 |
|---|---|
| 谁的数据 | 专用账号或租户 |
| 多少条 | 精确数量,不写“若干” |
| 什么状态 | 待处理、已完成或已作废 |
| 怎样创建 | 接口、SQL、脚本或页面 |
| 怎样验证 | 创建后查询并断言关键字段 |
| 怎样清理 | 按唯一标记回收本次数据 |
02
按生命周期管理测试数据
需求到回收测试数据生命周期
设计场景与字段
生成接口/SQL/脚本
使用断言与留痕
清理回收或重置
巡检发现漂移
数据台账
- 数据集名称、用途、环境和负责人。
- 创建方式、唯一标记、依赖关系与有效期。
- 敏感等级、脱敏规则和可访问角色。
- 清理方式、最近验证时间和当前状态。
03
按场景选择造数方式
快不等于稳四种常用方式
| 方式 | 适合 | 风险 |
|---|---|---|
| 页面操作 | 验证真实用户流程、小量数据 | 慢,容易受 UI 变化影响 |
| 业务接口 | 批量、稳定地建立业务状态 | 必须同时确认接口没有绕过关键规则 |
| SQL | 构造查询边界或修复测试环境 | 可能绕过业务逻辑,只在授权环境使用 |
| 脚本/数据工厂 | 参数化生成、自动清理和重复执行 | 需要维护字段与业务规则同步 |
生产环境默认只读。任何写 SQL、批量造数和清理动作都应限定在授权测试环境,并明确影响范围与回退方式。
04
边界数据要围绕业务状态构造
不是只改一个数字高价值数据组合
| 场景 | 数据准备 | 验证重点 |
|---|---|---|
| 0 条 | 干净账号或清理脚本 | 空态、统计与分页 |
| 1 条 | 唯一记录 | 首条展示、详情关联 |
| 恰好满页 | 按排序字段补齐 | 分页边界与稳定排序 |
| 唯一性冲突 | 相同业务键两条请求 | 重复校验与幂等 |
| 状态边界 | 已完成/已作废记录 | 按钮、接口和数据不可变 |
| 并发提交 | 多线程发送相同入参 | 编号唯一、只产生一份业务结果 |
数据必须服务判定
造出“满页 20 条”只是准备;真正的测试还要说明第 21 条进入哪一页、排序是否稳定、刷新后总数是否一致。
05
用隔离和清理保证可重复
避免互相污染隔离策略
| 层级 | 做法 |
|---|---|
| 账号/租户 | 每组用例使用独立账号、机构或租户 |
| 命名 | 数据带 run_id、用例号或时间批次 |
| 事务 | 可以回滚的测试在事务结束后回滚 |
| 资源 | 文件、消息和缓存使用独立前缀 |
| 并发 | 避免多个任务共享同一业务主键 |
清理原则
- 只删除本次 run_id 创建的数据,不用宽泛条件。
- 先清子表、消息、缓存与文件,再处理主记录。
- 清理后再次查询,确认没有残留。
- 清理失败应显示为测试失败或独立告警,不能静默忽略。
06
脱敏要换值不换测试特征
真实但不暴露脱敏校验
| 要求 | 检查 |
|---|---|
| 不可逆 | 无法从脱敏值反推真实身份 |
| 一致性 | 同一实体跨表、跨字段保持可关联 |
| 格式有效 | 证件号、手机号等仍通过格式校验 |
| 分布保真 | 金额、长度、空值和长尾特征仍能支撑测试 |
| 最小权限 | 只有需要的人和系统可以访问样本 |
把真实姓名统一替换成“张三”会破坏唯一性和关联测试。脱敏后的数据仍应保留长度、格式、重复关系和业务分布。
07
数据准备之后还要验证四层一致
页面到数据库一致性对照
| 对照 | 常见问题 |
|---|---|
| 列表 ↔ 详情 | 点开后不是同一记录或字段口径不同 |
| 页面 ↔ 接口 | 前端缓存、写死或二次计算错误 |
| 接口 ↔ 数据库 | 查错表、漏过滤条件、字段转换错误 |
| 主表 ↔ 附属表 | 状态更新了,消息或流水没有生成 |
| 本系统 ↔ 外部系统 | 全量、增量、时间窗或失败重放不一致 |
状态变更的固定动作
每次写操作都核对页面、详情、接口、主表和附属表。若存在异步同步,再验证处理中的中间态、最终状态和失败补偿。
08
让数据准备成为自动化的一部分
准备、验证、清理用例数据四件套
- 准备:调用哪个接口、SQL 或脚本,参数是什么。
- 标记:使用唯一 run_id,便于识别和回收。
- 验证:先证明数据已到位,再执行正式断言。
- 清理:后置步骤按 run_id 删除,并确认无残留。
AI 生成用例时的约束
| 不要输出 | 应该输出 |
|---|---|
| 前置:已有测试数据 | 调用数据工厂创建 3 条待处理记录并校验编号唯一 |
| 准备大量订单 | 按分页大小生成 N 条,N 来自页面配置或需求 |
| 使用生产数据测试 | 使用脱敏样本,并说明敏感字段校验方式 |
09
完成一次可重复的数据方案
练习与检查清单练习
- 为一个状态流转功能列出正常、边界、异常与并发数据。
- 分别选择接口、SQL 或脚本造数,并说明原因。
- 给每组数据添加 run_id、到位断言和清理步骤。
- 验证页面、接口、主表、附属表四层一致。
- 模拟同步失败,验证重放、对账与告警。
完成检查
前置数量与状态精确
造数方式可重复
测试数据彼此隔离
清理只作用于本次数据
真实数据已合规脱敏
环境漂移有巡检
跨层一致性有证据