测试体系(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 规模化(回归、质量度量)
  • 服务 发布门禁与信心构建

自动化测试的三个核心目标

  1. 降回归成本
  2. 提高反馈速度
  3. 阻断高风险发布

二、为什么要分 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 发布信心可量化