《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,我们的确创建了这样的角色,他的职责就是让其他的工程师更有效率和质量意识。这些角色常把他们自己看做是测试者,但实际上他们的使命是提高生产率。测试人员的存在是为了让开发人员的工作更有效率,并且很大一部分体现在避免因马虎粗心而导致的返工,因此,质量也是效率的一部分。在接下来的章节里,会花费较多的内容来详细讲解这些角色,所以在这里只进行简单的介绍。

1.2.1 软件开发工程师(SWE)
软件开发工程师(译注:software engineer,后文简称SWE)是一个传统上的开发角色,他们的工作是实现最终用户所使用的功能代码。他们创建设计文档、选择最优的数据结构和整体架构,并且花费大量时间在代码实现与代码审核上。SWE需要编写与测试代码,包括测试驱动的设计、单元测试、参与构建各种大小规模的测试等,这些测试会在本章的后面做详细解释。SWE会对他们编写、修复以及修改的代码承担质量责任。假设一个开发者不得不修改一个函数,如果这次修改导致已有测试用例运行失败,或者需要增加一个新的测试用例,他就必须去实现这个测试用例的代码。开发工程师几乎将所有的时间都花费在了代码编写上。

1.2.2 软件测试开发工程师(SET)
软件测试开发工程师(译注:software engineer in test,后文简称SET)也是一个开发角色,只是工作重心在可测试性和通用测试基础框架上。他们参与设计评审,非常近距离地观察代码质量与风险。为了增加可测试性,他们甚至会对代码进行重构,并编写单元测试框架和自动化测试框架。SET是SWE在代码库上的合作伙伴,相比较SWE是在增加功能性代码或是提高性能的代码,SET更加关注于质量提升和测试覆盖率的增加。SET同样会花费近百分之百的时间在编写代码上,他们这样做的目的是为质量服务,而SWE则更关注客户使用功能的开发实现上。

注意

SET是SWE在代码库上的合作伙伴,与增加功能性代码或提高性能的代码的SWE相比,SET更加关注于质量的提升和测试覆盖率的增加。SET写代码的目的是可以让SWE测试自己的功能。
1.2.3 测试工程师(TE)
测试工程师(译注:test engineer,后文简称TE)是一个和SET关系密切的角色,有自己不同的关注点——把用户放在第一位来思考,代表用户的利益。一些Google的TE会花费大量时间在模拟用户的使用场景和自动化脚本或代码的编写上。同时,他们会把开发工程师和SET编写的测试分门别类地组织起来,分析、解释、测试运行结果,驱动测试执行,特别是在项目的最后阶段,推进产品发布。TE是真正的产品专家、质量顾问和风险分析师。某些TE需要编写大量的代码,而另外一些TE则只用编写少量的代码。

注意

TE把用户放在第一位来思考。TE组织整体质量实践,分析解释测试运行结果,驱动测试执行,构建端到端的自动化测试。
从质量的角度来看,SWE负责功能实现和这些独立功能的质量。他们对容错设计、故障恢复、测试驱动设计、单元测试负责,并和SET一起编写测试代码。

SET也是开发人员,负责提供测试支持。有这样一个测试框架,它可以把新开发的代码隔离,通过模拟一个真实的工作运行环境(一个包含stubs、mock、fake等方法的流程,这些内容会在后面详细讲到)和代码提交队列来管理代码的提交。换句话说,SET编写代码,通过这些代码提供的功能让SWE能够自己测试他们的功能。多数测试代码是由SWE完成,SET存在的目的就是保证这些功能模块具有可测试性,并且相应的SWE还可以积极地参与到测试代码的编写中去。

很明显,SET的主要关注对象就是开发人员。SET的主要职责是让开发者可以很容易地编写测试代码,从而达到独立功能模块的质量要求。专注于用户角度的测试则是TE的职责。考虑到SWE和SET已经做了足够多的模块级别与功能级别的测试,下一步要考虑的就是要验证这些可执行的代码与数据集成在一起之后,是否可以满足最终用户的需求。在这里,TE扮演着一个双重确认的角色,确认开发人员在测试方面的工作是否到位,任何明显的bug都会表明早期开发人员所做的测试工作存在不足或比较马虎。当这些明显的bug变少时,TE会把注意力转移到常见用户使用场景中去,是否满足性能期望,在安全性、国际化、访问权限等方面是否满足用户的要求。TE运行许多测试的同时,也负责和其他团队的TE、合同工编制的测试人员、以众包形式参与的测试者、内部尝鲜者、beta测试者以及早期用户进行合作交流,与各方讨论基本设计带来的风险、功能逻辑复杂性和错误避免的方法。一旦TE参与到项目之中,基本上就会没完没了。

时间: 2024-09-17 04:11:35

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

《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软件测试之道》—第1章1.5节测试类型

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

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

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

《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上发现了前第二章和第三章中文的内容.     在这个世界顶级的企业里,软件测试工程是的测试是怎样的. ------------------------------------------------------------------------------------------------      一.职位名称含义: 即使你给玫瑰花起不同的名字,它闻起来可能还是同样的香.但是,如果