Google软件测试之道

  • 成为优秀的测试工程经理的三条建议:

    1. 去了解你的产品;
    2. 知人善用;
    3. 经常相互交流经验共同提高;
解决掉一些难题来赢得尊重。

Ankit Mehta

  • Ankit在Gmail的经验:

    1. 不要把你所有的精力都放在前端;
    2. 使用与应用程序开发语言相同的编程语言来编写测试;
    3. 开发新特性的人同时负责相应测试的执行,他需要对漏掉的测试负责;
    4. 关注测试基础设施的建设,让测试的编写和执行非常容易,甚至比忽略他们还要容易;
    5. 20%的用例覆盖了80%的使用场景(数值仅做参考)。把这20%自动化而别管剩下的,剩下的测试通过手工完成。
    6. 与开发团队的沟通至关重要;
    7. 测试团队也应该被看做创新者。发现重要的问题并能创造性地提出解决方案。
  • 团队可能遇到的陷阱:试图构造完美的解决方案。

    • 应该快速迭代,展现阶段性成果。
  • 个人可能遇到的陷阱:他们写了很多测试,但忘记思考为什么要写这些测试,怎么让这些测试为整体目标服务。

  • Ankit为团队寻找人才:

    1. 那些不会沉迷于系统的复杂性、遇到困难的问题时能够分解为可执行的步骤并能最终解决的人;
    2. 有执行力的人,他们会被紧迫感激发而不是吓跑;
    3. 能够在创新和质量中掌握平衡的人,他们不应该只满足于发现更多的bug;
    4. 那些有激情,真正想做测试的人。

Hung Dang

当你建立好了合适的团队,建设好正确的基础框架和测试流程,无论产品最终变得多么复杂和多样化,测试起来对你来说也不是什么难事。

  1. 让大家熟悉产品。每个人都必须了解产品系列的每个方面,没有商量的余地。
  2. 了解测试中的困难是什么,然后你就可以根据这些需求来建设你的团队了。
  3. 团队建立好之后,定下基调:创造价值!最好还能找到可复制的创造价值的方法。

探索式测试就是深入学习理解一个产品的最佳途径。

手工测试对我来说就是抓重点和做沟通。

我可以继续抱怨或者开始做点儿什么产生价值,我选择了后者。

Joel Hynoski

竞品分析*自动化:竞品可以是产品的历史版本。

通过代码层面的工具定位改动对整体的影响范围。——现在的概念“精准化测试”

Shelton Mar

能够获取开发工程师的支持是特别重要的。合作变成团队的一种氛围,整个项目团队(开发+测试)共同对组件级别的产品质量负责,而测试可以集中精力来改进流程、框架、工具集和集成测试。

把测试推向上游,让整个团队(开发+测试)为交付的质量负责。

决定要关注哪些问题是最难的!

  • 接手一个新项目的时候,你通常怎么做?

    1. 首先会让我的团队思考,“对被测系统来说,什么是最为重要的东西?”
    2. 当这些重要的事情搞定以后,再去关心那些简单的事情(用户界面这些锦上添花的东西)。还要关注那些核心的不容易改动的方面(如性能设计),而不对那些很容易修改的方面花费太多精力。

Ashish Kumar

  • 整个工具集:

    1. 源码工具:一系列用于简化创建工作环境、提交代码变更、代码风格检查的工具。
    2. 开发工具:集成开发环境的一些插件,让其他各种工具适应Google的代码并连接后端的云服务。代码审查工具。
    3. 构建框架:把代码构建的版本分发到各种语言开发的项目。
    4. 测试基础架构:规模化的持续集成。每个开发人员的每次代码提交都会引发自动测试,每天要运行数百万测试用例集。我们的目标是为开发者提供立即反馈(或者尽量及时)。
    5. 本地化工具
    6. 度量、可视化和报表:管理所有google产品的bug,跟踪所有研发活动(编码、测试和发布)中工程师的各种指标,把这些数据集中存储,并向团队提供可操作的反馈意见进行改进。

关注团队里新来的开发工程师必须使用到的开发环境。要让代码的获取、编辑、测试、运行、调试和部署都非常简单。

Brad Green

  • 关于测试的改变:

    1. 开发人员更多地介入测试过程,并编写自动化测试。他们了解单元测试、API测试、集成测试和系统测试。
    2. 我们能够吸引数百名一流工程师加入测试岗位。

入职谷歌的经验:先虚心学习,再在一线做出成绩,然后开始寻求创新的方法。

  • Google在测试方面的秘方:

    • 测试人员所拥有的技术能力
    • 测试资源的稀缺从而获得开发人员帮助和不断进行测试优化、优先考虑自动化
    • 快速迭代、集成
    • 获得用户反馈的能力

Google软件测试改进

  • 目前的致命缺陷:

    1. 测试成了开发的拐杖。越不让开发考虑测试的问题,把测试变得越简单,开发就越来越不会去做测试。
    2. 测试人员更关注自己的角色,而不是他们的产品。
    3. 测试人员往往崇拜测试产物胜过软件本身。
    4. 产品经过最严格的测试发布以后,用户有多大可能仍然发现测试中遗漏的问题:几乎必然发现。

是谁在做测试并不重要,关键是进行了测试。实际上,让TE做的测试越少,支持其他人做的测试越多,效果就越好。

  • 测试开发的未来就是开发。

    • 测试开发是开发的最好的起步点。
  • 测试的未来是测试设计。

    • 这个工作需要的是规划、组织和管理近于免费的测试资源。
  • 测试基础设施的未来:最终整体迁移到云端。

测试编写、执行和调试需要使用与被测的应用程序本身相同的语言和环境才最为高效。

项目层面的测试开发人员可以专注于测试覆盖,而不必关心基础设施,从而获得更高的产品质量和更快的发布周期。——很像阿里的现状啊。

这种转变迫使我们更加敏捷、更少关注测试流程、更多关注产品本身。

  • 一些工具:

    • 提bug工具:集成在产品中。
    • 比对版本表现差异工具。
    • 录制回放工具。
    • ACC取代测试计划。
      • 测试分析系统可以分步骤创建ACC,提供可视化功能,并自动更新风险矩阵。

评论

此博客中的热门博文

一加氧OS使用大陆本地化应用

NETGEAR R6220 变砖后刷回原厂固件

Redmine Webhook plugin 使用问题记录