《Google软件测试之道》—第1章1.5节测试类型

1.5 测试类型
Google并没有使用代码测试、集成测试、系统测试等这些命名方式,而是使用小型测试、中型测试、大型测试这样的称谓(不要和敏捷社区发的那些T恤型号混为一谈),着重强调测试的范畴规模而非形式。小型测试意味着涵盖较少量的代码,其他的测试类型以此类推。Google的三类工程师都会去执行其中的任何一种测试,无论是自动化的还是手动的。测试的规模越小,就越有可能被实现成为自动化的测试。

提示
Google并没有使用代码测试、集成测试、系统测试这些命名方式,而是使用小型测试、中型测试、大型测试这样的称谓,着重强调测试的范畴规模而非形式。
小型测试__一般来说(但也并非所有)都是自动化实现的,用于验证一个单独函数或独立功能模块的代码是否按照预期工作,着重于典型功能性问题、数据损坏、错误条件和大小差一错误(译注:大小差一(off-by-one)错误是一类常见的程序设计错误)等方面的验证。小型测试的运行时间一般比较短,通常是在几秒或更短的时间内就可以运行完毕。通常,小型测试是由SWE来实现,也会有少量的SET参与,TE几乎不参与小型测试。小型测试一般需要使用mock和fake(译注:mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果。fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果。更多参见http://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing)才能运行。TE几乎不编写小型测试代码,但会参与运行这些测试,来诊断一些特定错误。小型测试主要尝试解决的问题是“这些代码是否按照预期的方式运行”。

中型测试__通常也都是自动化实现的。该测试一般会涉及两个或两个以上,甚至更多模块之间的交互。测试重点在于验证这些“功能近邻区”之间的交互,以及彼此调用时的功能是否正确(我们称功能交互区域为“功能近邻区”)。在产品早期开发过程中,在独立模块功能被开发完毕之后,SET会驱动这些测试的实现及运行,SWE会深度参与,一起编码、调试和维护这些测试。如果一个中型测试运行失败,SWE会自觉地去查看分析原因。在开发过程的后期,TE会通过手动的方式(如果比较难去实现自动化或实现的代价较大时),或者自动化地执行这些用例。中型测试尝试去解决的问题是,一系列临近的模块互相交互的时候,是否如我们预期的那样工作。

大型测试__涵盖三个或以上(通常更多)的功能模块,使用真实用户使用场景和实际用户数据,一般可能需要消耗数个小时或更长的时间才能运行完成。大型测试关注的是所有模块的集成,但更倾向于结果驱动,验证软件是否满足最终用户的需求。所有的三种工程师角色都会参与到大型测试之中,或是通过自动化测试,或是探索式测试。大型测试尝试去解决的问题是,这个产品操作运行方式是否和用户的期望相同,并产生预期的结果。这种端到端的使用场景以及在整体产品或服务之上的操作行为,即是大型测试关注的重点。

注意
小型测试涵盖单一的代码段,一般运行在完全虚假实现(fake)的环境里。中型测试涵盖多个模块且重点关注在模块之间的交互上,一般运行在虚假实现(fake)环境或真实环境中。大型测试涵盖任意多个模块,一般运行在真实的环境中,并使用真正的用户数据与资源。
小型、中型、大型等描述术语是什么并不重要,怎么称呼它们也都可以,只要大家都一致认可。重要的是,在Google测试人员使用统一术语来谈论他们测试的是什么,以及这些测试范围是如何划分的。一些雄心勃勃的测试者有时会说到第四级别的测试,即被称为“超大型测试”,公司里的其他测试同仁会认为这是一个超大级别的系统测试,涵盖所有的功能且运行时间会非常长。对于一些术语,不需要用过多的文字去解释,按照字面意思就可以理解,这样做是最好的。

我们的测试对象以及测试范围的大小是动态变化的,不同产品之间的区别也比较明显。Google喜欢频繁地发布,并快速地从外部用户那里得到产品的真实反馈,然后再迭代开发出新功能。Google积极努力地开发用户非常感兴趣的产品特性,并尽可能早地提供一些功能给用户使用。另外,我们也在避免做一些用户不想要的产品特性,这就要求我们要非常及时地把用户和外部开发者一起拉进来参与,这样可以更有利于判断我们发布的产品是否满足用户的真正需求。

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

注意
对于所有的三种类型测试,当然更倾向于前者。如果能够自动化,并不需要人脑的智睿与直觉来判断,那就应该以自动化的方式实现。
正如上文中提到的,同时也是值得重点关注的一点,Google也有大量的手动测试,有些使用脚本的方式在记录(译注:scripted case,把每一个步骤都记录下来的用例表示方式。注意,这里scripted case,不是指通过脚本实现的自动化用例,这里只是强调一种case的实现方式),而另外一些使用探索式的方法,这些测试都在被密切地关注,以后可能被自动化方式所替代。通过使用定位点击的验证方式、录制技术等可以把一些手动测试转变成自动化测试,这些自动化测试在每次建立之后都会重复地回归运行,而手动测试更倾向于关注于新功能。我们甚至把开bug和日常的手动工作都自动化实现了,例如,如果自动化用例运行失败,系统会自动检查到最后一次代码变更的内容,这些变更极有可能是造成失败的罪魁祸首。系统会自动给代码变更的提交者发送一封邮件,并新开一个bug来记录这个问题。将自动化做到,力争克服“人类智慧的最后一英寸”这也是Google的设计理念与目标,也正是正在构建之中的下一代测试工具的努力方向。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-01 13:39:22

《Google软件测试之道》—第1章1.5节测试类型的相关文章

《Google软件测试之道》—第2章2.1节SET的工作

第2章 软件测试开发工程师 Google软件测试之道 C:\Documents and Settings\Administrator\桌面\页面提取自- 9780321803023_book.jpg 在理想情况下,一个完美的开发过程是怎样进行的呢?测试先行,在一行代码都没有真正编写之前,一个开发人员就会去思考如何测试他即将编写的代码.他会设计一些边界场景的测试用例,数据取值范围从极大到极小.导致循环语句超出限制范围的情况,另外还会考虑很多其他的极端情况.这些测试代码会作为产品代码的一部分,以自检

《Google软件测试之道》—第2章2.2节测试认证

本节书摘来自异步社区<Google软件测试之道>一书中的第2章2.2节测试认证,作者[美]James Whittaker , Jason Arbon , Jeff Carollo,更多章节 2.2 测试认证 Patrick Copeland在本书的序中强调了让开发人员参与测试的难度.招聘到技术能力强的测试人员只是刚刚开始的第一步,我们依然需要开发人员参与进来一起做测试.其中我们使用的一个 关键方法就是被称为"测试认证"(译注:Test Certified)的计划.现在回过头

《Google软件测试之道》目录—导读

内容提要 Google软件测试之道 每天,Google都要测试和发布数百万个源文件.亿万行的代码.数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行.面对这些看似不可能完成的任务,谷歌是如何测试的呢? 本书从内部视角告诉你这个世界上知名的互联网公司是如何应对21世纪软件测试的独特挑战的.本书抓住了Google做测试的本质,抓住了Google测试这个时代最复杂软件的精华.本书描述了测试解决方案,揭示了测试架构是如何设计.实现和运行的,介绍了软件测试工程师的角色:讲解了技术

《Google软件测试之道》—第2章2.3节SET的招聘

2.3 SET的招聘 优秀的SET在各个方面都很出色:是一个编码能力很强的程序员,可以写功能代码:也是一个能力很强的测试者,可以测试任何产品,有能力管理他们自己的工作和工具.优秀的SET不仅可以看到树木而且可以看到整个森林,在看到小段函数原型或者API的时候,就能想到各种使用这段代码的方法以及怎样破坏这段代码. 在Google,所有的代码都存放在同一个代码库中,这意味着任何人可以在任何时间使用里面的任何代码,所以代码本身一定要可靠且稳定.SET不仅仅要发现功能开发人员遗漏的代码缺陷,而且还要去关

《Google软件测试之道》—第1章1.2节角色

1.2 角色 为了保证"解铃还需系铃人"这句名言成为事实(译注:"you build it,you break it",摘自"you build it,you break it,you fix it".原意指在构建实验室(Build Lab)的人永远不会去修复构建失败(build break)的问题,只有开发人员自己才能修复.这里的意思是开发人员自己要对自己写的代码负责,比专职的测试人员更适合做测试工作.在传统的开发岗位之外我们又增加了几种角色.

《Google软件测试之道》—第2章2.4节与工具开发工程师Ted Mao的访谈

2.4 与工具开发工程师Ted Mao的访谈 Ted Mao是一位Google的开发工程师,但Ted的主要工作专注于测试工具的开发方面.特别要提到的是,Ted制作的Web应用程序方面的测试工具,所有的Google内部应用上都在使用.Ted本身在SET这个圈子里也很有名气,一般情况下SET都对优秀工具有需求,否则效率就会非常低下.Ted可能是Google内部对通用Web测试基础框架最熟悉的人员. HGTS:你是什么时候加入Google的?是什么吸引你来这里工作的? Ted:我是2004年6月加入G

《Google软件测试之道》—第1章1.3节组织结构

1.3 组织结构在我过去曾经工作过的多数组织中,开发人员和测试人员都一起隶属于同一个工程产品团队.从组织架构上讲,开发人员和测试人员汇报给同一个产品团队的管理者.这样看起来,同一个产品.同一个团队.所有参与的人都在一起,应该可以做到平等相处.患难与共. 但不幸的是,我还从来没见过有团队能真正做到这样.资深管理者一般都来自产品经理或开发经理,而不是来自于测试团队.在产品发布时,优先考虑的是功能的完备性和易用性方面是否足够简单,却很少考虑质量问题.作为同一个团队,测试总是在为开发让路.为何我们这个行

《Google软件测试之道》—第1章1.4节爬、走、跑

1.4 爬.走.跑在拥有如此少量测试人员的情况下,Google还可以取得不错的成果,核心原因在于Google从来不会在一次产品发布中包含大量的功能.实际上,我们的做法恰恰相反,在一个产品的基本核心功能实现之后,就立刻对外发布使用,然后从用户那里得到真实反馈,再进行迭代开发.这也是我们在Gmail产品上的经验,Gmail带着beta标签在线上运营了四年,这个标签用以警示我们的用户,Gmail仍处于改良之中.对于最终用户,只有该产品达到99.99%的可用性时,我们才会把beta标签去掉.在Andro

微软的软件测试工程师——《微软的软件测试之道》

   好多人极力推荐<微软的软件测试之道>这本书,于是在网上搜索了一番,英文版的阅读起来有难度,在51CTO上发现了前第二章和第三章中文的内容.     在这个世界顶级的企业里,软件测试工程是的测试是怎样的. ------------------------------------------------------------------------------------------------      一.职位名称含义: 即使你给玫瑰花起不同的名字,它闻起来可能还是同样的香.但是,如果