Google软件测试之道(一):软件测试开发工程师

设计文档

项目发起人要做的第一件事情就是设计文档。
这是一个动态的文档。最早期的项目设计文档,主要包括项目的目标、背景、团队成员、系统设计。团队成员一起协同完成设计文档的不同部分。对于一些大规模的项目,需要针对主要子系统也创建相应的设计文档。在初期版本完成后,将来需要完成的工作清单也可作为项目路标。从这一点讲,设计文档必须经过相关技术负责人审核。作为SET,比较幸运的是在初期阶段加入了项目。SET在团队中有一个巨大优势,就是拥有产品方面最广阔的视野。通常代码复用和模块交互方面的设计会由SET来做,而不是SWE。

SET需要熟悉了解负责的系统设计,作为第一个审阅所有设计文档的人很了解项目整体,也有助于在在项目初期与开发工程师建立良好的工作关系。如何审阅?要点有:完整性,正确性,一致性,设计,接口与协议,测试。在SET与相应的SWE一起沟通文档的审阅结果时,关于测试工作量以及各个角色如何共同参与测试,会有个比较正式的讨论。

接口与协议
SET是第一个实现所有接口和协议的人,在系统真正搭建之前,集成测试的运行依赖于这些接口实现。为了能够尽早开始做集成测试,SET针对各个模块的依赖提供了mock或fake的实现。在任何阶段,集成测试总是依赖mock或fake,因为有了它们,一些依赖服务的期望错误场景和条件异常,比较容易产生。

自动化计划
尽早提供一个可实施的自动化计划,SWE不会被一个无所不包的设计所吸引,计划必须合情合理。规模更小且目的性更强的自动化,并存在测试框架,会吸引SWE一起参与测试。常见错误是在端到端的自动化测试上过度投入,会把你与产品特定功能设计绑定一起,这部分测试在整个产品稳定之前都不会特别有用。在google,SET用下面的方法:先把容易出错的接口隔离,针对它们创建mock和fake,控制接口之间的交互,确保良好的测试覆盖率。接下来构建一个轻量级的自动化框架,控制mock系统的创建和执行,把修改的代码提交之前运行相应的自动化测试,确保测试通过后才能被提交。SET除了自动化(mock,fake,框架)外,还要使用报表和仪表盘(dashboard)展示收集到的测试结果和测试进度。

可测试性

SET扮演一个质量顾问的角色,提供程序结构和代码风格方面的建议给开发人员。 代码以一个被称为变更列表(CL)的单元被编写和封装起来。CL在编码结束后会提交审查,用google内部工具Mondrian把需要审查的代码发送给有审阅资格的SWE或SET,并最终通过代码审查。CL提交审查前,会经过一系列的自动化检查,检查完成后Mondrian会给相应的CL审阅者发送一封包含这个CL链接的通知邮件。随后审查者会进行代码检查并反馈意见,反复进行这个过程直到双方都满意。提交队列是构建系统和版本控制系统之间的最后一道防线。通过编译并测试,提交队列系统可以捕获在开发机器上无法发现的环境错误。

测试执行
自动化测试运行也很重要,一个代码编译,执行,结果分析,数据存储,报表展示的通用测试框架形成了。google工程师专注于测试程序的编写,运行的细节留给通用基础执行框架。对于工程师来说,测试代码和功能代码一样,都是代码。

测试规模
小中大型测试比例由一个经验法则:70/20/10原则。持续集成按照下面基本步骤:(1)得到最新代码,(2)运行所有测试,(3)报告运行结果,重复(1)-(3)。
代码库规模越来越大,一个持续集成系统如果测试失败,应该提供具体哪次变更导致失败。利用依赖分析技术寻找所有可能受影响的模块,针对一个代码变更至运行受影响模块的测试。这个持续集成系统在云平台上构建,使得许多构建可以并发执行,并在代码变更提交时立刻运行可能受影响模块的测试。

SET招聘
期望有这样的混合人才:对测试有强烈兴趣和天资的开发人员。一个通用且有效的招募优秀SET的方法是,给候选人和其他开发角色一样的编程问题,并考察他们在处理质量与测试方面的方法。SET的面试重点是候选人如何思考问题的解决方案,而不是解决方案本身的实现有多高雅。

与WebDriver创建者的对话
比较Selenium与WebDriver:Selenium是Jason Huggins在ThoughtWorks时创建的一个项目。Selenium在浏览器内部使用JavaScript实现,而WebDriver使用浏览器本身API集成到浏览器内部。 Seleinum可以瞬间打开一个新的Chrome浏览器,但却不能上传文件或者很好处理用户交互,因为它是JavaScript实现必须限定在JS沙箱内。由于WebDriver构建在浏览器内,不受这些限制,但打开一个浏览器却比较痛苦。在两个创始人都为Google工作的时候,他们决定把两个工具集成到一起。Selenium是所有浏览器自动化工具集,webDriver只是其中一个工具(官方名字是Selenium WebDriver)。WebDriver的未来会是怎样?Simon说希望他们都消失在后台中。自动化的API会对所有浏览器适用,人们不用去担心这些基础框架,而把精力放在web应用本身。

posted on 2016-10-04 11:38  鎃鎃  阅读(267)  评论(0编辑  收藏  举报