← 返回列表

阅读 —下载 —

测试分类与大厂需求上线测试流程

本文整合《测试不同维度的分类》和《大厂需求上线测试流程》,按两条主线重新组织:

  1. 测试分类:回答“测多大、测什么、什么时候测、怎么测、谁来执行”。
  2. 大厂常见测试流程:回答“一个成熟需求如何从需求评审一路走到上线和线上监控”。

测试分类是能力地图,上线流程是工程落地路径。前者帮助你识别测试范围,后者帮助你理解团队在每个阶段如何设置质量门禁。


第一部分:测试分类

图 1. 软件测试的五类观察维度

1. 核心结论:测试经常是多个维度交叉分类

面试时建议先记住以下 5 个最常见维度。它们不是互斥选项,也不是完全相同的层级,而是从不同角度描述同一个测试活动。

分类维度 常见类型 核心回答
按测试范围 单元、集成、系统、E2E 测多大?
按测试目的 功能、性能、安全、兼容性、可用性 测什么能力?
按测试阶段 / 策略 冒烟、回归、验收 什么时候测?
按实现方式 黑盒、白盒、灰盒 怎么测?
按执行方式 手工、自动化 谁来执行?

例如,“自动化 E2E 回归测试”就是一个完全成立的复合描述:

  • 按执行方式:自动化;
  • 按测试范围:E2E;
  • 按测试阶段 / 策略:回归。

2. 按测试范围:测多大?

测试范围通常由小到大排列:

单元 → 集成 → 系统 → E2E
范围 关注点
单元测试 最小代码单元是否正确
集成测试 模块、服务之间的协作是否正确
系统测试 完整系统作为一个整体的行为是否正确
E2E 测试 真实用户链路能否完整跑通

3. 按测试目的:测什么能力?

常见测试目的包括:

功能
性能
安全
兼容性
可用性
稳定性

其中,性能测试还可以继续细分:

性能
├── 负载测试
├── 压力测试
├── 峰值测试
└── 稳定性 / Soak 测试

这些类型可以叠加使用。例如一个高并发接口,可能需要同时做负载、压力和稳定性测试。

4. 按测试阶段 / 策略:什么时候测?

常见类型包括:

冒烟测试
功能测试
回归测试
验收测试

典型顺序可以这样理解:

新版本部署
   ↓
冒烟:基本功能能不能跑?不会把所有功能都测一遍,只挑最核心、最基本的几个流程。
   ↓
功能测试:需求实现是否正确?冒烟通过以后,才进入详细功能测试:
   ↓
回归:旧功能有没有被改坏?
   ↓
验收:是否满足上线要求?

这里最重要的区别是:

  • 冒烟测试负责判断“这个版本能不能继续测”。
  • 功能测试负责判断“本次需求是否实现正确”。
  • 回归测试负责判断“改动是否影响了原有功能”。
  • 验收测试负责判断“是否满足产品、业务或上线验收标准”。

5. 按实现方式:怎么测?

黑盒测试

输入 → 系统 → 输出

不关心内部代码怎么实现,只根据输入和输出验证系统行为。

白盒测试

查看代码内部逻辑,包括分支、条件、路径等,通常更接近开发和单元测试视角。

灰盒测试

对内部实现有一定了解,但测试方式仍以外部行为为主。它介于黑盒和白盒之间。

6. 按执行方式:谁来执行?

手工测试
自动化测试

自动化测试常见分层如下:

自动化
├── 单元测试:JUnit
├── 接口自动化
└── E2E:Playwright / Selenium

手工测试和自动化测试不是互斥关系。成熟团队通常让自动化覆盖高频、稳定、适合重复执行的场景,让手工测试聚焦探索性、复杂交互和暂时难以自动化的场景。

7. 最后要记住:这些维度不是同一层级的概念

可以把测试分类理解成一张多维地图:

软件测试
│
├── 按范围
│   ├── 单元
│   ├── 集成
│   ├── 系统
│   └── E2E
│
├── 按目的
│   ├── 功能
│   ├── 性能
│   │   ├── 负载
│   │   ├── 压力
│   │   ├── 峰值
│   │   └── 稳定性 / Soak
│   ├── 安全
│   ├── 兼容性
│   ├── 可用性
│   └── 稳定性
│
├── 按阶段 / 策略
│   ├── 冒烟
│   ├── 回归
│   └── 验收
│
├── 按实现
│   ├── 黑盒
│   ├── 白盒
│   └── 灰盒
│
└── 按执行
    ├── 手工
    └── 自动化

所以“自动化 E2E 回归测试”完全成立:它同时说明了执行方式 + 测试范围 + 测试策略。


第二部分:大厂常见测试流程

图 2. 大厂成熟需求从评审到上线的测试流程

1. 总览:成熟需求通常经历什么?

可以把大厂一个成熟需求从开发到上线理解为一条标准流水线:

需求评审
   ↓
测试分析 / 测试用例
   ↓
开发
   ↓
单元测试
   ↓
提测
   ↓
冒烟测试
   ↓
功能测试
   ↓
集成 / 联调测试
   ↓
回归测试
   ↓
性能 / 安全等专项测试(按需)
   ↓
预发布 / 灰度
   ↓
验收
   ↓
正式上线
   ↓
线上监控

核心不是死记每个阶段的名字,而是理解每个阶段在回答什么问题、在什么条件下允许进入下一阶段。

2. 需求评审

产品、研发、测试一起确认:

  • 需求是什么;
  • 正常流程;
  • 异常流程;
  • 边界条件;
  • 验收标准;
  • 影响哪些已有功能。

测试通常会在需求评审阶段提前介入,而不是等开发写完再测。这里的目标是尽早发现需求歧义、遗漏的异常分支和不可验证的验收标准。

3. 测试设计

测试根据需求设计:

正常场景
异常场景
边界场景
兼容性
权限
性能

最终形成测试用例。

例如订单场景可以设计:

正常下单 ✓
库存不足 ✓
余额不足 ✓
重复提交 ✓
并发下单 ✓
未登录 ✓

这一阶段要把“需求描述”转换成“可执行、可验证、可追踪”的测试用例。

4. 开发 + 单元测试

开发实现功能,同时编写 Unit Test。

例如 Java:

@Test
void createOrder() {
    // ...
}

CI 通常会自动执行单元测试。单元测试是最靠左的质量门禁,失败时应该在进入集成和系统测试之前暴露问题。

5. 提测 → 冒烟测试

开发完成后,把版本部署到测试环境。

测试首先不做全面测试,而是确认核心链路能不能跑:

登录 → 商品 → 下单 → 支付

如果冒烟都过不了:

打回开发,测试不继续。

这里的判断标准是“版本是否具备继续测试的基本条件”,而不是“需求是否已经全部正确”。

6. 功能测试

冒烟通过以后进行完整测试,重点关注:

正常
异常
边界
权限
数据一致性
接口
前端

发现 Bug 后进入修复验证闭环:

测试发现 Bug
      ↓
开发修复
      ↓
重新提测
      ↓
针对 Bug 验证

功能测试主要回答:“本次需求是否按照预期实现?”

7. 集成 / 联调测试

如果需求涉及多个服务:

订单服务
   ↓
库存服务
   ↓
支付服务
   ↓
消息队列

就需要验证整个链路,重点关注:

  • RPC;
  • MQ;
  • 数据库;
  • Redis;
  • 第三方接口;
  • 数据一致性。

集成 / 联调主要回答:“多个系统或服务协作时,整体链路是否正确?”

8. 回归测试

Bug 修完或者代码发生较大修改后,需要重新验证:

新功能 ✓
相关功能 ✓
核心老功能 ✓

核心目标是防止:

修 Bug → 又引入新 Bug。

回归不一定是“把所有用例全部重跑”,而是根据变更影响范围选择新功能、相关功能、核心链路和高风险场景。

9. 专项测试(按需)

不是每个需求都需要专项测试。常见触发场景如下:

场景 重点关注
高并发接口 性能 / 压测
支付相关 安全、幂等、数据一致性
大规模用户功能 稳定性、容量、兼容性

专项测试主要回答:“除了功能正确,非功能质量是否达到上线要求?”

10. 预发布 + 灰度

测试通过后,不一定直接全量上线。成熟大厂经常采用分级放量:

测试环境
   ↓
预发布环境
   ↓
线上 1%
   ↓
5%
   ↓
20%
   ↓
50%
   ↓
100%

灰度期间观察:

错误率
P99
QPS
CPU
数据库
业务指标

发现异常时:

异常
 ↓
停止灰度
 ↓
回滚

灰度验证的价值是用小流量、低影响的方式确认真实生产环境中的行为。

11. 正式上线 + 线上验证

全量之后继续观察:

技术指标
├── RT
├── QPS
├── 错误率
├── CPU
└── 内存

业务指标
├── 下单量
├── 支付成功率
└── 转化率

所以:

“上线”不等于测试结束。

上线后的监控、异常发现、回滚和修复,仍然是完整质量闭环的一部分。

12. 面试版总结

一个成熟需求一般经历:

需求评审 → 测试设计 → 开发单测 → 提测冒烟 → 功能测试 → 集成联调 → 回归测试 → 必要的性能 / 安全专项测试 → 预发布和灰度验证 → 验收 → 正式上线 → 持续线上监控和异常回滚。

最核心的逻辑可以压缩成:

开发自测
  ↓
冒烟:版本能不能测
  ↓
功能:需求对不对
  ↓
集成:系统协作对不对
  ↓
回归:老功能有没有被影响
  ↓
专项:性能 / 安全等是否达标
  ↓
灰度:线上小流量验证
  ↓
全量:正式上线
  ↓
监控:线上有没有问题

这套流程比单纯背“单元、集成、E2E”更接近真实的大厂研发流程。