软件测试管理

当前位置:首页 > 软件测试管理

《Google软件测试之道》第四章 续4

4.10 印度Google测试总监SujaySahni访谈


Google测试文化中很重要的一个方面就是通过建立各种区域性和全球化的工作中心吸引各种人才的加入。印度海得拉巴( Hyderabad)是Google设立的第一个全球测试工程中心,以吸引来自印度的人才。这里的工程师为一些 重要的Google 产品工作,把原来以人工测试(或测试服务)为核心的方向转移到测试工程化的方向上来。SujaySahni 是这里的测试总监,他组建并掌管着印度的Engineering Productivity团队。


HGTS:印度距离Google总部非常遥远,你是怎么在那里建立工程生产力(EngineeringProductivity)部门的,又是怎样参与到那些关键项目中去的?


Sujay:工程生产力( Engineering Productivity) 团队跟Google其他的工程师团队的模式一样,都是在世界各地建立研发中心,找到当地合适的人才。在印度设立研发中心并不是基于成本上的考虑,完全是因为我们在这里能找到尖端人才。我们在印度建立了足够大的团队可以承担重要的大型项目。印度作为区域性研发中心,是为数不多的同时拥有开发人员和测试人员在一处工作的中心。这样的研发中心包括伦敦、纽约、柯特兰、班加罗尔研发中心和其他一些小一些的办公区。


我们设有一些大区研发中心,会支持像欧洲这样的特定区域。欧洲区研发中心设在苏黎世,亚太区研发中心设在海得拉巴,美国东海岸大区研发中心设在纽约。这些研发中心,负责将所在大区的各小型研发中心的技术力量联系起来,并和其他大区研发中心进行合作。这样的组织更容易进行时间和人才的管理。不过,海得拉巴也是Google的全球研发枢纽,为整个Google公司提供人才资源和输出测试团队的技术解决方案。在Google开展软件测试的早期,海得拉巴是最大的软件测试工程师人才基地,做了很多重要的战略性项目。这个研发中心的工程师为一些关键的Google产品工作,推动和促进了从测试服务部门向工程生产力部门的演变。


HGTS:印度在Google测试发展方面扮演了什么样的角色?


Sujay:海得拉巴(Hyderabad) 中心,我们一般简称其为HYD,是Google建立的第一个区域性研发中心。我们在班加罗尔也建立了一个研发中心,以便更好地获得当地的工程师资源,但是海得拉巴很快已经成为了全球测试工程团队的中心。研发中心初步建立,HYD中心的工程师混合了测试工程师、测试开发工程师和很多临时员工和外包人员。他们为很多重要的和知名的Google产品工作(如搜索、广告、移动产品、Gmail 和工具条就包括其中),在不同的角色上贡献力量。这些工程师主要开发了一些非常关键的测试基础设施和框架,支持工程师团队能够自动化他们的测试,更快地发布产品。2006 年~2007年,HYD拥有整个Google大约一半的测试开发工程师。当时有个有趣的传闻:据说测试开发工程师(SET)这个职位就是由HYD招聘的第一位测试工程师努力推动设立的!不管我们是不是真有这么大作用,但是我们至少间接地为从测试服务部门到工程生产力部门的转变铺平了道路。


到2007年下半年,我们领导层决定转变目标,发展团队进入新的重要的领域,减少条块分割,建设更大的高级人才库,引导大量加入的年轻工程师。到2008年,我们逐步成为区域中心的角色,让各地的工程团队拥有自己本地的(或相距不远的)测试团队。这样,HYD就有可能集中精力关注那些Google测试团队还未成熟的领域,比如先进的延迟检测工具;后台、云性能和稳定性工具;回归检测机制;客户端测试工具等。这一阶段的另一个变化是对云测试以及工程化工具基础架构的投入。这其中很多工作,如云端代码覆盖度框架、开发IDE工具、可扩展云测试架构、Google 工具箱,还有一些实验性的工作, 最终都成为了产品化的工具。


我们团队提供的很多重要的工具和服务不仅支持Google全球的工程团队,同时也作为核心基础设施共享给开源社区的开发者们。HYD的工程师为开源社区贡献了很多代码,包括App Engine, Selenium, Eclipse 和IntelliJ插件等项目。


HGTS:这都是一些非常重要而且很棒的项目。你能讲一个HYD独立开发的项目吗?


Sujay:好的。Google 诊断工具,是完全由海得拉巴工程生产力团队开发的。这个工具可以帮助我们的客户支持团队与客户一起诊断他们在使用Google产品时遇到的问题,帮助获取他们的计算机系统的技术规格和配置信息。还有其他的工具。HYD工程生产力团队主要开发整个Google使用的基础框架、工具和测试代码。这些工具包括像IDE这样的开发工具,部署在云中的代码编译核心基础框架,开发人员自测工具,代码复杂度、覆盖率检测工具,以及各种静态分析工具。在测试工具方面,HYD团队负责为Google 很多云应用产品开发用于压力测试和性能分析的测试基础设施,为很多核心产品如搜索、企业服务、Gmail、广告等开发测试工具和完成测试工作。


HGTS:好的,我想继续了解一下这些工具,因为光听名字就够吸引人的了。你能谈谈你提到的代码覆盖度工具吗?代码覆盖度的话题在Google测试博客上一直被广泛关注。


Sujay:代码覆盖度是一个被广泛接受的衡量测试效果的指标。传统的做法是,每个团队分配一些专门的资源(工程师、硬件、软件)来度量项目的代码集合。然而,Google 在印度有一个专门团队来保证整个Google研发工作的代码无缝地获得覆盖度指标。为了达到这一点,大家需要遵守一些简单的步骤来启动这个功能,只需要一次性投入不到五分钟时间。这一步做完以后,就可以得到他们项目构建版本的覆盖度指标,集中显示报表结果用于查看和分析。覆盖度统计已经支持了上千个项目,支持所有的主要编程语言,统计了数百万代码文件。覆盖度框架紧密集成在Google的云架构之上,编译和构建代码,支持持续大规模的代码变更(每分钟度量一次) ,每天处理数万次构建。它就是为Google快速增长的代码数量而设计的。我们还有支持性的框架,用智能的方式提供测试优先级的建议,根据特定的代码变化指出需要被执行的测试用例。我们这样就有了更有效的测试覆盖、更可信的代码质量和快速反馈,为Google节省了大量的工程资源。


HGTS:听起来代码覆盖度做的不错。那下面讲讲你提到的诊断工具吧。


Sujay:诊断工具是海得拉巴的工程生产力部门的测试开发工程师,通过20%自由时间创建和开发的。它弥补了在调试用户问题的时候,Google开发人员所需的技术数据和普通电脑用户的技术知识之间的鸿沟。有时候要了解Google用户提交的问题报告,获取Google软件产品状态的技术数据是必须的。这可能包括像操作系统、语言设置等简单的信息,也可能包括复杂的细节数据,例如应用程序的版本信息和配置等。用一种简单快捷的方式获取这些信息并不容易,因为用户可能对这些细节根本不了解。诊断工具会简化这个过程。现在如果有个问题报告需要更多的细节数据,我们的支持工程师就简单地在这个工具中创建一个新的配置,描述哪些特定信息需要被收集,然后通过邮件联系用户,或者给用户提供一个“google.com” 下的唯一 链接,用户可以从那里下载一个很小(小于300KB)的带有Google签名的执行文件。这个执行文件可以分析用户的机器,并收集被配置需要的数据显示给用户进行预览,然后用户可以决定是否可以发送给Google。当然在执行完毕以后退出时,这个执行文件就会把自己删除。我们非常注意保护用户的隐私信息,用户在提交之前会检查这些数据,而且只有在用户同意的情况下才会提交。在我们内部,这些数据被发送给合适的开发人员来加快问题的解决。这个工具被Google客户支持团队使用,对GoogleChrome, Google Toolbar,以及其他客户端应用特别有用。而且,它让我们的用户更容易的从Google获得帮助。


HGTS:你也几次提到性能和压力测试,这里有什么故事吗?我知道你们在Gmail的性能测试方面介入很深。


Sujay: Google 的Web应用产品范围非常广泛。保证低延迟的用户体验是非常重要的目标。因此,性能测试(重点是JavaScript 的执行和页面渲染的速度)是任何产品发布前的一项关键检查。以前,性能延迟问题往往需要几天甚至几个星期的时间来定位和解决。印度工程生产力团队开发了Gmail的前端性能测试框架来覆盖重要的用户行为,保证对用户最频繁执行的操作进行细致的性能测试。性能测试使用一个定制的服务器,测试在受控的环境中部署运行,利于保持环境稳定,便于定位回归问题。这个解决方案有三个部分。


●提交队列:允许工程师在提交代码变更之前执行测试(和收集性能延时数据)。开发人员就能更快得到反馈,避免把缺陷引入代码库。


●持续构建:把测试服务器同步成最新的代码并持续执行相关测试,发现并阻止回归问题。这使团队可以把用于检测回归问题的时间,从几天或几星期缩减到小时或分钟级别。


●产品性能延迟检测:用于定位特定代码变更导致的产品性能延迟回归问题。我们对变化范围进行切分,在多个检查点分段运行测试。


这个方法在我们的产品发布前帮助定位了很多关键缺陷,并推动了测试前移,因为开发人员自己就可以非常容易地启动这些测试。


HGTS:你们都有哪些创新(技术上的和非技术的)的工作?你们从中获得了怎样的经验?


Sujay:我们正在进行的一些实验性的工作包括反馈驱动的开发工具,用于收集合适的指标数据并反馈给我们的工程团队来提高他们的生产效率。还包括代码可视化工具、代码复杂度度量工具和其他一些东西。另外一个领域是先进的开发环境,帮助工程团队更好地使用IDE和度量数据来提高代码质量、加快版本发布的速度。其他正在开发的工具还包括在整个公司范围使用的经验回顾工具,使产品的发布数据变得统一和可操作。


HGTS:你们在印度为一个分布在全球各地的软件公司提供测试工程支持,有什么经验可以分享吗?


Sujay:这很难,但我们证明了其可行性。我的主要经验有以下两点。


●如果你选择了合适的团队和项目,使用“跟随太阳”的模式就能工作得很好。作为一个全球分布的团队,我们克服了很多困难,但也走过弯路。有一个良好的工作模式,能够让不同时区的团队良好合作非常关键。还有,要仔细挑选你的项目和团队。你需要对开发的产品充满激情的人和非常善于合作的人。


●众包测试是另一个对我们很有用的方式。我们利用了印度测试社区里庞大的人才池,也利用了众包模式中资源的时区差异,这些都很好。


最重要的是要雇佣优秀的人才,让他们为关键的项目工作。Google并不是在追逐低成本,因为还有比印度更便宜的国家。我们雇佣了高质量的人才,让他们在Google能获得非常好的机会。我们对Google做出了相当大的贡献,而我们的TE和SET都拥有光明的职业前景。我们都能够成功。



相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~