在Google的软件测试体系中,测试活动被高度工程化,并通过明确的角色分工实现高效协作。以下是Google对测试角色的详细划分及其职责解析:
1. SWE(Software Engineer,开发工程师)
核心职责:编写功能代码并对其质量负责。
测试相关任务:
- 单元测试(Unit Tests)
- 编写覆盖所有代码分支的单元测试(通常使用
GTest等框架)。 - 目标:确保每个函数/模块在隔离环境下正确运行。
- 编写覆盖所有代码分支的单元测试(通常使用
- 代码可测试性设计
- 采用松耦合架构(如依赖注入),便于Mock和测试。
- 避免隐藏状态或全局变量,减少测试复杂度。
- 代码审查(Code Review)
- 在代码评审中检查测试覆盖率和边界条件处理。
关键能力:
- 将测试视为开发的一部分,而非后续阶段。
- 熟悉测试框架和Mock技术(如Google Mock)。
2. SET(Software Engineer in Test,测试开发工程师)
核心职责:构建测试基础设施,提升测试效率。
测试相关任务:
- 开发测试框架与工具
- 设计自动化测试框架(如UI自动化工具、API测试工具)。
- 开发静态代码分析工具、覆盖率统计工具等。
- 编写中大型测试
- 集成测试:验证模块间交互(例如服务间API调用)。
- 端到端测试:模拟用户流程(如从登录到下单)。
- 优化测试执行
- 并行化测试、减少测试依赖,加速CI/CD流水线。
- 维护测试稳定性(处理Flaky Tests)。
关键能力:
- 兼具开发技能(如C++/Python)和测试思维。
- 精通系统架构,能设计可扩展的测试方案。
3. TE(Test Engineer,测试工程师)
核心职责:从用户视角验证产品整体质量。
测试相关任务:
- 探索性测试(Exploratory Testing)
- 模拟真实用户行为,发现逻辑漏洞或体验问题。
- 例如:尝试极端操作路径(如连续快速点击按钮)。
- 场景测试(Scenario Tests)
- 设计基于用户故事的测试用例(如“购物车并发结算”)。
- 非功能性测试
- 性能测试:评估系统负载能力(如QPS极限)。
- 安全测试:渗透测试、数据泄露风险检查。
- 国际化测试:多语言、时区兼容性验证。
- 众测协调
- 组织内部或外部众测(如通过
Google Dogfood让员工试用未发布版本)。
- 组织内部或外部众测(如通过
关键能力:
- 深刻理解用户需求与业务场景。
- 擅长手动测试技巧和缺陷分析(如根因定位)。
角色协作模式
| 场景 | SWE | SET | TE |
|---|---|---|---|
| 新功能开发 | 编写代码 + 单元测试 | 提供测试框架支持 | 设计用户场景测试用例 |
| 发现缺陷 | 修复代码并补充单元测试 | 优化自动化测试捕获同类问题 | 验证修复并探索关联风险 |
| 发布前评估 | 确保功能达标 | 检查自动化测试通过率 | 执行手动验收测试 |
与传统测试角色的区别
- SET ≠ 普通测试开发
- 传统角色可能仅维护脚本,而SET需要深度参与系统设计。
- 例如:SET会推动开发团队采用可测试的API设计。
- TE ≠ 纯手动测试员
- TE需分析测试数据并提出改进建议,而非单纯执行用例。
- 例如:TE通过缺陷模式推动SWE改进代码习惯。
Google分工的优势
- 质量左移:开发阶段即嵌入测试,减少后期成本。
- 专业化效率:SET专注工具创新,TE专注用户体验。
- 全员质量意识:打破“测试仅是测试团队的事”的传统思维。
通过这种分工,Google实现了测试活动的规模化,同时适应了高速迭代的开发节奏。这种模式尤其适合复杂、高并发的互联网产品(如Search、Gmail)。

2009

被折叠的 条评论
为什么被折叠?



