测试体系(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
下面对 自动化测试(API / UI / E2E)进行工程化、可规模落地的系统拆解。整体视角不是“如何写脚本”,而是:自动化测试如何成为发布体系中的“质量防线”。
一、自动化测试的总体定位
一句话定位
自动化测试是“可重复执行的质量校验能力”,而不是工具或脚本集合。
自动化测试在体系中的角色
- 承接 P0 测试基础(用例、环境、平台)
- 支撑 P2 规模化(回归、质量度量)
- 服务 发布门禁与信心构建
自动化测试的三个核心目标
- 降回归成本
- 提高反馈速度
- 阻断高风险发布
二、为什么要分 API / UI / E2E 三层
测试金字塔原则(必须遵守)
E2E
UI / Web
API / Service
| 层级 | 主要目的 | 成本 | 稳定性 |
|---|---|---|---|
| API | 逻辑正确性 | 低 | 高 |
| UI | 关键路径 | 中 | 中 |
| E2E | 业务闭环 | 高 | 低 |
反模式
- UI 自动化过多
- 所有场景都做 E2E
三、API 自动化测试(核心主力)
1️⃣ API 自动化的定位
API 自动化是自动化体系的“基本盘”
适合:
- 业务规则复杂
- 接口稳定
- 需要高频回归的系统
2️⃣ API 自动化覆盖内容
| 类型 | 示例 |
|---|---|
| 正向路径 | 正常参数 |
| 异常路径 | 参数缺失 / 越权 |
| 边界 | 极值 / 空值 |
| 状态流转 | 创建 → 更新 → 删除 |
3️⃣ 工程化能力设计
(1)接口定义管理
- OpenAPI / Swagger 作为单一事实源
- 自动生成基础测试用例
(2)参数与断言模型
- 请求参数模板化
- 断言支持:状态码 / 业务码 / 数据一致性
(3)上下文与变量传递
- 接口间参数依赖自动解析
- 支持动态变量(ID、Token)
4️⃣ 执行与集成
- 与 CI Pipeline 绑定
- PR / Merge 自动触发
- 失败即阻断
5️⃣ 常见反模式
- 硬编码测试数据
- 一个脚本测一切
- 断言只校验 HTTP 200
四、UI 自动化测试(关键路径保障)
1️⃣ UI 自动化的合理定位
UI 自动化只验证“人一定会走的路径”
适合:
- 登录
- 下单
- 支付
- 核心配置流程
2️⃣ UI 自动化的工程挑战
| 问题 | 本质 |
|---|---|
| 易失败 | DOM / 样式变化 |
| 慢 | 浏览器驱动 |
| 难维护 | 定位不稳定 |
3️⃣ 工程化解决思路
(1)页面对象模型(POM)
- 页面元素统一封装
- 测试逻辑与页面解耦
(2)稳定定位策略
- data-testid
- 业务唯一属性
- 禁用 XPath 滥用
(3)最小断言原则
- 验证“结果”,而非过程
4️⃣ 执行策略
- 夜间回归
- 发布前冒烟
- 不作为 PR 强门禁(多数场景)
五、E2E 自动化测试(兜底防线)
1️⃣ E2E 的正确认知
E2E 测试是“信心校验”,不是“全覆盖”
2️⃣ 覆盖的内容
- 多系统协同流程
- 核心业务闭环
- 高风险变更路径
3️⃣ 典型 E2E 场景
下单 → 支付 → 库存扣减 → 发货 → 通知
4️⃣ 工程化关键点
- 环境高度可控
- 测试数据严格隔离
- 与监控 / Trace 联动
5️⃣ E2E 的使用原则
- 数量极少
- 失败必须人工确认
- 不追求高频执行
六、自动化测试执行体系设计
1️⃣ 分级执行策略
| 场景 | API | UI | E2E |
|---|---|---|---|
| PR | ✅ | ❌ | ❌ |
| Merge | ✅ | 部分 | ❌ |
| Nightly | ✅ | ✅ | 部分 |
| Release | ✅ | ✅ | ✅ |
2️⃣ 失败治理机制(非常关键)
- 自动重试(识别偶发失败)
- 失败归因(脚本 / 环境 / 代码)
- Flaky Test 清理机制
七、自动化测试与测试平台的关系
测试用例
↓
自动化脚本
↓
测试平台调度
↓
结果归一化
↓
质量门禁
关键点
- 自动化测试不是“自己跑”
- 必须被平台统一治理
八、成熟度分级(你可以对号入座)
| 等级 | 特征 |
|---|---|
| L1 | 有零散脚本 |
| L2 | 有 API 自动化 |
| L3 | 与 CI 深度集成 |
| L4 | 质量门禁 |
| L5 | 发布信心可量化 |
