测试体系(QA / Quality Engineering)
目标:让质量前移、让缺陷止于发布之前
P0(测试基础)
├── 测试平台
├── 测试用例管理
├── 测试环境管理
P1(自动化)
├── 自动化测试(API / UI / E2E)
├── 测试数据平台
├── Mock / 虚拟服务
P2(规模化)
├── 性能 / 全链路压测
├── 缺陷管理 & 质量分析
├── 测试左移 / 右移
P3(质量工程)
├── 灰度实验 / A/B 测试
├── 质量度量 & 门禁
├── 测试资产复用
相关开源项目:
数据工厂:https://github.com/houbb/data-factory
性能压测:https://github.com/houbb/junitperf
chat
下面我将 测试数据平台(Test Data Platform)作为一个独立的一等工程系统来详细展开,而不是把它当成“造几条数据的脚本工具”。整体目标只有一句话:
让测试数据“可控、可复现、可规模使用”,从根上解决自动化不稳定问题。
一、测试数据平台的核心定位
1️⃣ 为什么测试数据必须平台化
在真实工程中:
- ❌ 硬编码测试数据
- ❌ 多人共用一套脏数据
- ❌ 自动化跑完环境不可用
- ❌ 数据一变,测试全挂
本质问题只有一个:
测试数据是“隐性共享状态”,但没人管理它。
测试数据平台的使命
- 测试数据 可构造
- 测试数据 可隔离
- 测试数据 可回滚
- 测试数据 可追溯
二、测试数据平台在测试体系中的位置
测试平台
├── 自动化测试
│ └── 依赖
│ └── 测试数据平台 ← 稳定性基石
├── 测试环境
└── Mock / 虚拟服务
结论
自动化不稳定,80% 是数据问题; 数据不平台化,自动化无法规模化。
三、测试数据平台的核心能力拆解
1️⃣ 数据模型管理(Data Model)
目标
把“业务数据结构”变成“测试可理解的模型”。
能力点
- 业务对象建模(用户 / 订单 / 权限 / 资产)
- 主外键关系显式化
- 枚举、状态机建模
示例
订单
├── 订单类型(普通 / 秒杀)
├── 状态(创建 / 支付 / 发货)
├── 金额区间
└── 关联用户 / 商品
2️⃣ 数据构造能力(Data Builder)
构造方式分层
| 层级 | 说明 |
|---|---|
| 模板构造 | 标准业务对象 |
| 规则构造 | 条件组合 |
| 场景构造 | 业务闭环 |
示例
{
"orderType": "NORMAL",
"payStatus": "PAID",
"amount": ">1000",
"userType": "VIP"
}
平台负责:
- 自动补齐依赖数据
- 保证数据合法
3️⃣ 数据隔离机制(Data Isolation)
为什么必须隔离
- 并发测试
- 多人同时跑
- 多环境共存
常见隔离策略
| 策略 | 说明 |
|---|---|
| 租户隔离 | tenant_id |
| 命名空间 | test_run_id |
| 数据前缀 | 自动生成 |
| 库级隔离 | 独立 schema |
推荐
- 自动化测试默认强隔离
- 人工测试可弱隔离
4️⃣ 数据生命周期管理(Data Lifecycle)
创建 → 使用 → 验证 → 回滚 / 清理
能力点
- 数据 TTL
- 批量回滚
- 定时清理
回滚策略
- 事务回滚(短流程)
- 快照回滚
- 标记 + 清理
5️⃣ 数据依赖自动解析(Dependency Resolution)
核心能力
你只声明“我要什么”,平台负责“怎么造”。
例如:
- 你要一个「已支付订单」
- 平台自动创建:用户 → 商品 → 库存 → 订单 → 支付
这是平台价值的分水岭能力。
四、与自动化测试的集成方式
1️⃣ 标准调用模型
测试用例
↓
声明数据需求
↓
测试数据平台
↓
返回数据上下文
↓
自动化执行
2️⃣ 数据上下文示例
{
"userId": "U123",
"orderId": "O456",
"payId": "P789"
}
自动注入到测试变量中。
五、测试数据平台的系统架构
1️⃣ 逻辑架构
测试数据平台
├── 数据模型服务
├── 构造引擎
├── 隔离与上下文管理
├── 回滚 / 清理引擎
└── API / SDK
2️⃣ 数据来源策略
| 来源 | 场景 |
|---|---|
| 构造生成 | 功能 / 自动化 |
| 脱敏复制 | 复杂场景 |
| 生产回放 | 压测 / 回归 |
六、典型使用场景
场景 1:API 自动化
- 测试前申请数据
- 测试后自动回收
场景 2:UI 自动化
- 固定场景数据
- 可重复执行
场景 3:并发压测
- 数据池模式
- 防止竞争冲突
七、成熟度分级
| 等级 | 特征 |
|---|---|
| L1 | 手写 SQL |
| L2 | 脚本造数 |
| L3 | 模板化造数 |
| L4 | 场景化 + 隔离 |
| L5 | 全生命周期治理 |
八、与 Mock / 虚拟服务的关系
- Mock:不落库
- 测试数据:真实落库
两者配合使用:
- Mock 控制外部不稳定性
- 数据平台控制内部状态
九、总结一句话
测试数据平台是自动化测试的“地基工程”,不是锦上添花。
