How Google Test Software

读《Google软件测试之道》后把一些重要的内容记录下来。

1.质量不等同于测试

  • 质量是通过融合开发和测试,直至两者融为不能区分彼此的同一个体而达到的。
  • 测试是开发不可分割的一部分,开发和测试的结合会产生质量。
  • 把测试当做软件的feature。软件工程所交付的不是code,不是test,而是product,所以得让code和test集成在一起。

2.测试环境

  • 小型测试(mock/fake环境)
  • 中型测试(mock/fake或真实环境)
  • 大型测试(真实环境)
  • 在小型和中型测试上强调自动化测试覆盖率,但在端到端测试时并不强调,避免投入过多,并且和特定功能设计绑定
  • 大、中、小型测试比例为1:2:7

3.测试类型

  • 小型测试:测试代码单元的行为
  • 中型测试:测试一个或多个代码单元之间的交互
  • 大型测试:测试整个系统的工作
  • 小型测试保证代码质量,中型和大型测试保证产品质量

4.测试认证级别

  • 5个级别:1~5,5级为最高
  • 分级依据
    • 测试覆盖率
    • 分层测试情况
    • 持续集成
    • 缺陷和测试用例的关系

5.详细测试认证级别

  • 第1级
    • 添加测试覆盖率的bundle
    • 搭建持续集成环境
    • 按照大、中、小型测试来区分测试
    • 识别具有不确定性的测试
    • 创建冒烟测试集
  • 第5级:
    • 为每一个非关键的bug添加测试
    • 主动使用各类分析工具
    • 总的测试覆盖率超过60%

6.文档

  • 所有Google项目都有设计文档
  • 设计文档是一个动态的文档(活文档,Living Document),随着项目的演化也在不断地保持更新

7.测试人员分类

  • 测试开发工程师(SET)
  • 测试工程师(TE)
  • 测试工程经理

8.测试人员职责

  • SET主要负责mock/fake、API测试、测试工具、CI工具,更偏向于代码开发。
  • TE是面向用户的测试,具备测试代码开发和用户为中心测试的双重能力。
  • TE完成测试整个过程,风险评估、测试计划、测试设计、测试执行、探索式测试、用户反馈。
  • 测试工程经理,把TE和SET联系起来,需要足够的技术能力,需要足够了解产品,也需要知人善用的能力。

9.测试人员的未来

  • 测试开发工程师将变成开发人员,而测试开发工程师所具备的测试技能将被平均地分散到各个层级的开发工程师身上。
  • 测试工程师会转型成为测试设计师。测试工程师可以成为如安全工程师这样的专家型角色,或者作为测试活动的管理者。
  • 技术型测试主管,更多地成为资深工程师,同时作为思想领袖和协调者存在。测试活动由具体工作在产品上的人们负责。
  • 测试开发工程师,测试工程师和测试经理分散到各个项目团队中去,更少关注测试流程,更多关注产品本身。

10.测试的未来

  • 测试基础设施会最终整体迁移到云端。
  • 测试用例库,测试代码的编辑、录制和执行都将在一个网站或通过浏览器插件完成。
  • 测试编写、执行和调试需要使用与被测的应用程序本身相同的语言和环境才最为高效。

11.Google测试的原则和秘方

  • Google测试的原则:Ship early and often;Fail fast
  • Google测试的秘方:技能、稀缺、自动化、迭代集成