您的位置:首页 > 编程语言 > Go语言

[读书笔记]《Google软件测试之道》---Google是如何测试的?

2015-03-23 13:03 253 查看
第一章:Google是如何测试的?

在Google,软件测试团队归属于一个被称为“工程生产力”(Engineering Productivity 简称:EP 工程效率)的中心组织部门,这个部门的职责横跨开发测试人员使用工具的研发,产品发布和各种级别的测试,从单元测试的测试到探索性级别的测试。

Google拥有大量针对互联网产品的共享工具和测试基础框架,服务员各种内部产品,成功解决了有关速度和扩展性的问题。

目前Google测试人员1200人

分析:其实有点类似我们内部的生产力促进组,专门提供测试框架等技术方面的支持

《Google软件测试之道》该书的核心内容:讲述了一个Google的测试人员究竟意味着什么?同时也包含是如何解决软件的扩展性,复杂性和大并发方面的问题

Google是一家以创新和速度为基础的公司,快速地发布有用的代码,迭代低增加早期用户希望使用的功能(最大化用户反馈)在这样的环境下,测试不得不变的异常灵活,并且在技能上要做许多前期的规划,只是不停地简单维护并不能真正解决问题,有时,测试和开发交织在一起,达到了无法区分彼此的程度,而在另外一些时候,测试和开发又是完全分离,甚至开发人员都不知道测试在做什么

由于资源的匮乏,这也是我们向特种部队方向法阵的根本原因,没有足够的人手,使得我们不得不去做好优先级的安排

Google在测试人员如此缺乏的情况下是如何应对的呢?简单的说,在Google,写代码的开发人员也承担了质量的重任,质量从来就不仅仅是一些测试人员的问题,在Google,每个写代码的开发者的本身就是测试者,质量在名义上也由这样的开发测试组合共同承担,如果你是一名工程师,那么你同时也是一名测试人员,如果你的头衔上有测试的头衔,你的任务就是怎样使哪些头衔上没有测试的人可以更好地去做测试。

1.1 质量不等于测试

质量不等于测试,当你把开发过程和测试放在一起,就像在搅拌机里混合搅拌那样,直到不能区分彼此的时候,你就得到了质量

这意味着质量更像一种预防行为,而不是检测

1.2 角色

测试人员的存在是为了让开发人员的工作更有效率,并且很大一部分体现在避免因马虎粗心而导致的返工,因此,质量也是效率的一部分

SWE:软件开发工程师

SWE需要编写与测试代码,包括测试驱动的社交,单元测试,参与构建各种大小的规模的测试

SET:软件测试开发工程师

工作重心是在可测试性和通用测试基础框架上,参与设计评审,非常近距离地观察代码质量与风险,编写单元测试框架和自动化测试框架,SET是SWE在代码库上的合作伙伴,更关注质量提升和测试覆盖率的增加,SET写代码的目的是可以让SWE测试自己的技能

TE:测试工程师

TE和SET是关系密切的角色,有自己不同的关注点-把用户放在第一位来思考,代表用户的利益。TE是真正的产品专家、质量顾问和风险分析师,组织整体质量事件,分析解释测试运行结果,驱动测试执行,构建端到端的自动化测试。

1.3 组织结构

资深管理者一般是来自产品经理或开发经理,而不是来自测试团队,在产品发布时,优先考虑的是功能是否完整性和易用性方面是否足够简单,却很少考虑质量。作为同一团队,测试总是在为开发过路

工程生产力团队会根据不同的产品团队的优先级、复杂度,并与其它产品实际比较之后,再来分配测试人员。

1.4 爬走跑

在拥有如此少量测试人员的情况下,Google还可以取得不错的成果,核心原因在于Google从来不会再一次产品中包含大量的功能。Google经常在最初的版本里面包含最基础的可用功能,然后再后继的快速迭代的过程中得到内部和外部用户的的反馈,而且在每次迭代的过程中非常注重质量,一个产品在发布给用户之前,一般都要经历金丝雀版本、开发版本、测试版本、beta或正式发布版本。

Android团队在这方面有更勇敢的尝试,所有核心开发团队成员的手机都安装每日构建的版本,这样做是为了减少往代码 库中提交有问题的代码,一旦有问题,他们手机将无法使用基础功能,如通话

1.5 测试类型

小型测试覆盖单一的代码段,一般运行在完全虚假实现的环境里。中型测试覆盖多个模块且重点关注在模块之间的交互上,一般运行在虚假实现环境或真实环境中。大型测试涵盖任意多个模块,一般运行在真实的环境中,并使用真实的用户数据与资源。

关于自动化测试和手动测试的比例,对于所有的三种类型测试,当然更倾向于前者。如果能够自动化,并不需要人脑的智睿与直觉来判断,那就应该以自动化的方式实现。但在一些情况下需要人类智慧的判断,例如:UI是否漂亮、保留的数据是否包含隐私等,这些还是需要手动测试来完成

Google也有大量的手动测试,有些使用脚本的方式在记录,通过使用定位点击的验证方式、录制技术等可以把一些手动测试转变自动化测试,这些自动化测试在每次建立之后都会重复地回归运行,而手动测试更倾向于关注新功能。

个人总结:

从这一章的介绍当中,测试方面,觉得我们现在的模式跟Google非常像.........
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: