Google软件测试之道笔记
第一章:Google软件测试介绍
质量与测试
测试人员任务是使那些非测试人员(自我理解为开发人员)可以更好地去做测试。 质量不是被测试出来的,但未经测试不可能开发出有质量的软件。 QA所做的工作更像是一种预防,而不是检测。 作者认为:质量不等于测试。当把开发过程和测试携手一起同时开展,不单独分开可以达到质量(自我总结【中文翻译过的文字感觉怪怪的】)。
角色
开发人员自己要对自己写的代码负责。 测试人员为让开发人员工作更有效率,很大程度上体现在规避因马虎粗心而导致的返工,即质量也是效率的一部分。 1.软件开发工程师(SWE) SWE(software engineer)工作是实现最终用户所使用的功能代码。花费大量时间在代码编写实现与代码审核上。 2.软件测试开发工程师(SET) SET(software engineer in test)工作中心在可测试性和通用测试基础框架上。为增加可测试性,甚至对代码进行重构,并编写单元测试框架和自动化测试框架。SET更注重质量的提升和测试覆盖率的增加。SET同样花费百分之百的时间在编写代码上,其目的是为质量服务,而SWE更关注客户使用功能的开发实现上。 3.测试工程师(TE) TE(test engineer)把用户放在第一位来思考,代表用户的利益。模拟用户使用场景和自动化脚本或代码的编写上。TE把SWE和SET编写的测试分门别类地组织起来,分析、解释、测试运行结果,驱动测试执行,推进产品发布。TE是真正的产品专家、质量顾问和风险分析师。某些TE需要编写大量代码,而另一些TE则只需编写少量的代码。即TE把用户放在第一位来思考。TE组织整体质量实践,分析解释测试运行结果,驱动测试执行,构建端到端的自动化测试。 三者 从质量的角度看,SWE负责功能实现和独立功能的质量。他们对容错设计、故障恢复、测试驱动设计、单元测试负责,并和SET一起编写测试代码。SET负责提供测试支持。如其编写一个测试框架,可把新开发的代码隔离,通过模拟一个真实的工作运行环境(一个包含stubs、mock、fake等方法的流程)和代码提交队列来管理代码的提交。SET编写的代码提供的功能让SWE能测试他们的功能。SET存在目的是保证这些功能模块具有可测试性,并且相应的SWE还可积极地参与到测试代码的编写中去。TE扮演双重角色,确认SWE在测试方面的工作是否到位,bug变少后,专注至常见用户场景中去,是否满足性能期望,在安全性、国际化、访问权限等方面是否满足用户的要求。
组织架构
资深管理者一般都来自产品经理或开发经理,而不是来自测试团队。在产品发布时,优先考虑的是功能是否完整和易用性方面是否足够简单,却很少考虑质量。作为同一个团队,测试总是在为开发让路。 测试人员在不同项目之间的借调模式,可以让SET和TE时刻保持新鲜感并且总是很忙碌,另外还能保证一个好的测试想法可以快速在公司内部蔓延。推广测试技术方面创新的最佳方式,莫过于把这个创新的发明者直接借调过来。 在Google有一个广泛被接受的做法:对于一个测试人员,如果在某个产品中工作满18个月后,就可以无理由地自愿转岗到其他产品,转岗不是强制。对于整个公司而言,保持各个产品与技术都了解的测试人员的存在。
爬走跑
Google经常在最初的版本里只包含最基本的可用功能,然后再后续的快速迭代过程中得到内部和外部用户的反馈,而且在每次迭代的过程中都非常注重质量。一个产品在发布给用户使用之前,一般要经历金丝雀版本、开发版本、测试版本、beta或正式发布版本。 金丝雀版本 每日构建版本(理解:日常环境),用来排除过滤一些明显不适宜的版本。该版本可能无法使用应有的基本功能。一般只有产品工程师(开发或测试)和管理人员才会安装该版本。 开发版本 开发人员日常使用版本,一把每周发布一个。该版本具有一定的功能并通过了一系列的测试。一个开发版本不能够满足日常真实工作的需求,将被打回金丝雀版本。 测试版本 通过了持续测试的版本。基本上是一个月里的最佳版本,也是工程师在日常工作中使用的最稳定和最信任的版本。测试版本可被挑选作为内部尝鲜版本,如果该版本有比较持续的优良表现,也是作为beta测试的候选版本。一些情况下,如果测试版本在公司内部使用得足够稳定,一些想更早尝试的外部合作也会使用该版本。 beta或发布版本 由非常稳定的测试版本演变而来,并经历了内部使用和通过所有质量考核的一个版本,也是对外发布的第一个版本。
该模式给Google的应用程序尽早提供了一个测试验证的良好机会。与从自动化测试哪里得到的反馈一样,每天都能从内部用户哪里得到关于这些版本的质量反馈。 测试类型 Google没有使用代码测试、集成测试、系统测试等这些命名方式,而是使用小型测试、中型测试、大型测试,着重强调测试的范畴规模而非形式。小型测试涵盖较少量代码,以此类推。测试规模越小,越有可能被实现为自动化的测试。
|