测试体系(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 控制外部不稳定性
  • 数据平台控制内部状态

九、总结一句话

测试数据平台是自动化测试的“地基工程”,不是锦上添花。