谷歌是怎么做测试的--SET的工作

在谷歌,SET是一个融合开发角色和质量意识于一身的角色。

SET首先是工程师角色,他使得测试存活于所有谷歌的开发过程之中,他是一个100%的编码角色。SET要尽早介入到开发流程中去,但不是通过“质量模型”和“测试计划”的方式,而是通过参与设计和代码开发的方式。这会使得功能的开发工程师和测试的开发工程师处于相同的地位,SET积极参与各种测试,使测试富有成效。

SET与功能开发人员坐在一起,测试也是应用产品的一种功能特性,而SET是这个产品功能特性的负责人。SET参与SWE的代码评审,反之亦然。在面试SET的时候,在代码要求标准上与SWE的要求是一样的,而且SET还需要了解如何去测试他们编写的代码。

一、SET在什么时候参与项目?

谷歌没有规定SET何时进入项目,同样也没有规定怎样的项目才算是“真正”的项目。通常情况下,SET不会在早期参与项目,但是当项目得到正式批准立项,开发总监就会找到工程生产力团队,寻求测试资源。没有项目会认为如果得不到测试资源,他们的产品就将不复存在。开发团队在寻求测试帮助的时候,有义务让测试人员相信他们的产品是令人兴奋且充满希望的。实际上,许多技术负责人希望SET能够在早期参与到他们的项目。SET可以在项目早期提供什么帮助呢?

二、参与设计文档的评审。

所有谷歌项目都有设计文档,这是一个动态的文档,随着项目的演化也在不断地保持更新。最早期的项目设计文档,主要包括项目的目标、背景、团队成员、系统设计。在初期阶段,团队成员一起协同完成设计文档的不同部分,对于一些规模足够大的项目来说,需要针对主要子系统也创建相应的设计文档,并在项目设计文档中增加子系统设计文档的链接。在初期版本完成后,里面会囊括所有将来需要完成的工作清单,这也可以作为项目前进的路标。从这一点上讲,设计文档必须要经过相关技术负责人的审核。在项目设计文档得到足够的评审和反馈之后,初期版本的设计文档就接近尾声了,接下来仙姑就正式进入实施阶段。

作为SET,可以在设计阶段推进项目的同时,简化相关项目成员的工作,可以从不同的视角来审核设计文档,对文档的质量和可靠性方面增加一些必要的内容。SET从如下几个方面审核初期设计文档:

1、完整性。找出文档中残缺不全或一些需要特殊背景知识的地方。通常情况下团队里没人会理解这些知识,特别是对新人而言。鼓励文档作者在这方面添加更多的细节,或增加一些外部文档链接,用以补充这部分背景知识。

2、正确性。看一下是否有语法、拼写、标点符合等方面的错误,这一般是马虎大意造成的,并不意味着他们以后编写的代码也是这样。但也不能为这种错误而破坏规矩。

3、一致性。确保配图和文字描述一致。确保文档中没有出现与其他文档中截然相反的观点和主张。

4、设计。文档中的一些设计要经过深思熟虑。考虑到可用的资源,目标是否可以顺利达成?要使用何种基础的技术框架?期望的设计在框架方面使用方法上是否正确?设计是否太过复杂?有可能简化吗?还是太简单了?这个设计还需要增加什么内容?

5、接口与协议。文档中是否对所使用的协议有清晰地定义?是否完整地描述了产品对外的接口与协议?这些接口协议的实现是否与他们期望的那样一致?对于其他的谷歌产品是否满足统一的标准?是否鼓励开发人员自定义协议数据格式?

6、测试。系统或文档中描述的整套系统的可测试性怎么样?是否需要新增测试钩子?如果需要,确保他们也被添加到文档中。系统的设计是否考虑到易测试性,而为之也做了一些调整?是否可以使用已有的测试框架?预估一下在测试方面我们都需要做哪些工作,并把这部分内容也增加到设计文档中去。

审阅设计文档的时候要具有一定的目的性,需要完成特定的目标,而不是像读报纸那样随意看两眼。

为了能够尽早可以运行集成测试,针对依赖服务,SET提供了mock与fake实现,这时,虽然功能模块的代码还没有实现,集成测试的代码就已经可以开始编写了。所以,SET是第一个实现所有接口和协议的人。

三、关于自动化测试计划:

SET的时间有限且需要做的事情太多,尽早地提供一个可实施的自动化测试计划是一个很好的解决方法。在谷歌,SET遵循以下方法来制定自动化测试计划:

我们首先把容易出错的接口做隔离,并针对它们创建mock和fake,这样我们可以控制这些接口之间的交互,确保良好的测试覆盖。

接下来构建一个轻量级的自动化框架,控制mock系统的创建和执行。这样的话,写代码的SWE可以使用这些mock接口来做一个私有构建。在他们把修改的代码提交到代码服务器之前运行相应的自动化测试,可以确保只有经过良好测试的代码才能被提交到代码库中。这是自动化测试擅长的地方,保证生态系统远离糟糕代码,并确保代码库永远处于干净的状态。

SET在这个计划中涵盖自动化之外,还要包括如何公开产品质量方面的信息给所有关心的人。在谷歌,SET使用报表和仪表盘来展示收集到的测试结果以及测试进度。通过将整个过程简化和信息公开透明化,获取高质量代码的概率会大大增加。

四、SET还要负责代码的可测试性。

SET的第一要务就是代码的可测试性。SET在项目团队中扮演一个质量顾问的角色,提供程序结构和代码风格方面的建议给开发人员,这样开发人员可以更好地做单元测试。同时提供测试框架方面的建议,使得开发人员能够在这些框架的基础上自己写测试。

五、测试运行

SET还要负责自动化测试的执行。自动化测试执行时,需要满足如下条件:

1、每个测试和其他测试之间都是独立的,使它们能够以任意顺序来执行;

2、测试不做任何数据持久化方面的工作。在这些测试用例离开测试环境的时候,要保证测试环境的状态与测试用例开始执行之前的状态是一样的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容