`

<谷歌如何测试> 翻译第二篇

 
阅读更多

 

为了实现”谁的屁股谁自己擦”这句名言所说的那样,在传统的软件开发人员的之上,有必要增加了几个角色,特别是需要工程技术方面的特殊角色,这种角色可以让开发更高效低做测试。在谷歌,这样角色的职责是让其他人工作的更有效率,这样的工程师通常会把自己当做测试人员,但他们真正的使命是提高生产力/生产率。他们的存在是为了让开发人员效率提升,特别是在质量方面的提升,因为产品质量是生产率中最重要的一部分。这里是这些角色的总结:

【注,“you build it, you break it”, you build it ,you break it , you fix it, 原意指在Build Lab的人永远不会去修复build break的问题,只有开发人员自己才能修复。这里的意思是开发人员自己要对自己写的代码负责,比专职的测试人员更适合做测试工作。这里意译为”谁拉的shi,谁的屁股谁自己擦”】

 

软件开发工程师【SWE,Software Engineer】, 就是传统的开发人员。软件工程师实现一些功能代码并把最终产品提供给用户使用,他们创建设计文档、设计数据结构和总体的架构搭建,他们大多数时间都在写代码和评审代码。同时,他们也会写很多的测试代码,包括测试驱动设计,单元测试,并参与后面的文章会讲到的小、中、大型测试的创建工作。软件工程师需要对他们自己写的代码、修复缺陷的代码、改进的代码,只要是他们接触过的代码的质量负责。

 

软件测试开发工程师【SET or Software Engineer in Test】,和软件开发工程师一样是开发工程师,主要负责软件的可测试性。他们参与设计评审,近距离地关注代码质量和风险,对代码做重构为了系统有更好的可测试性,同时他们负责写单元测试框架和自动化测试的框架。在代码级别上他们和软件开发工程师是合作伙伴,但如果和增加新功能或提升性能相比较,他们更关心产品的质量和测试覆盖率的提升。

 

软件测试工程师【Test Engineer】,和软件测试开发工程师【SET】恰恰相反,他得主要工作是做测试而不是开发。许多谷歌的软件测试工程师会花很多的时间在写测试代码上,包括自动化脚本、使用场景的代码、甚至模拟最终用户的操作方面的代码。他们对软件开发工程师和软件测试开发工程师的测试工作做一些组织安排,解释测试结果、驱动测试的执行,特别是在项目即将发布的后期将起到非常重要的作用。软件测试工程师既是产品专家也是质量顾问更是风险分析师。

 

 

从质量的角度来看,软件开发工程师对功能开发和质量负有全责。同时,他们还负责容错设计、故障恢复、TDD、单元测试、和在软件测试开发工程师的帮助下写测试代码,这些测试代码会验证开发的功能。

 

软件测试开发工程师是提供测试支持的开发人员。他们提供一种能够将新添加的代码通过模拟其依赖的方式做功能验证的技术框架,并应用在代码提交之前的提交队列管理之中【注,这样可以在代码check in 的时候保证新代码的功能完备】。可以这样说,软件测试开发工程师就是为了让软件工程师可以测试他们的功能代码,所有真正的测试都是软件开发工程师完成的,软件测试开发工程师是保证这些功能有很好的可测试性,这样可以让软件开发工程师很积极地参与到测试用例代码的编写中去。

 

现在所有的一切很清楚了,软件测试开发工程师就是服务人员,他们的主要职责就让开发人员很方便简单的做测试并保证模块级别的产品质量。读者可能已经意识到一个问题,在这样的研发流程下,使用软件的最终用户会怎样?

 

在谷歌,软件测试工程师的职责就是最终用户级别的测试。如果软件开发工程师和软件测试开发工程师很好地做了模块级别的功能测试,下一个工作就是看许多功能集成和数据的组合是否能够满足最终用户的使用需求。软件测试工程师在这里就是扮演一个双重确认开发工程师测试工作的角色,任何明显的缺陷都会说明之前一轮的开发自测不够或比较草率,如果没有出现这种情况之后,软件测试工程师会将注意力转移到普通用户的使用场景测试上,保证性能、安全、国际化等方面没有问题。软件测试工程师们需要做大量的测试工作,并在测试工程师、测试合同工、吃狗粮的尝鲜者、beta测试用户、早期最终用户之间做很多沟通交流的工作,他们会和基础设计、功能复杂度、避免错误的方法等方面遇到问题的人做确认。一旦软件测试工程师开始介入,总是会没完没了。

 

好了,现在大家对这些角色应该有比较好的理解了,接下来我会在他们之间是怎么分工合作做更详尽的剖析。下次再聊。。。谢谢您的关注。

 

 

公直

2012/3/11

 

 

英文原文,

How Google Tests Software – Part Two

Wednesday, February 09, 2011 6:36 PM

http://googletesting.blogspot.com/2011/02/how-google-tests-software-part-two.html

By James Whittaker

 

In order for the “you build it, you break it” motto to be real, there are roles beyond the traditional developer that are necessary. Specifically, engineering roles that enable developers to do testing efficiently and effectively have to exist. At Google we have created roles in which some engineers are responsible for making others more productive. These engineers often identify themselves as testers but their actual mission is one of productivity. They exist to make developers more productive and quality is a large part of that productivity. Here’s a summary of those roles:

 

The SWE or Software Engineer is the traditional developer role. SWEs write functional code that ships to users. They create design documentation, design data structures and overall architecture and spend the vast majority of their time writing and reviewing code. SWEs write a lot of test code including test driven design, unit tests and, as we explain in future posts, participate in the construction of small, medium and large tests. SWEs own quality for everything they touch whether they wrote it, fixed it or modified it.

 

The SET or Software Engineer in Test is also a developer role except their focus is on testability. They review designs and look closely at code quality and risk. They refactor code to make it more testable. SETs write unit testing frameworks and automation. They are a partner in the SWE code base but are more concerned with increasing quality and test coverage than adding new features or increasing performance.

 

The TE or Test Engineer is the exact reverse of the SET. It is a a role that puts testing first and development second. Many Google TEs spend a good deal of their time writing code in the form of automation scripts and code that drives usage scenarios and even mimics a user. They also organize the testing work of SWEs and SETs, interpret test results and drive test execution, particular in the late stages of a project as the push toward release intensifies. TEs are product experts, quality advisers and analyzers of risk.

 

From a quality standpoint, SWEs own features and the quality of those features in isolation. They are responsible for fault tolerant designs, failure recovery, TDD, unit tests and in working with the SET to write tests that exercise the code for their feature.

 

SETs are developers that provide testing features. A framework that can isolate newly developed code by simulating its dependencies with stubs, mocks and fakes and submit queues for managing code check-ins. In other words, SETs write code that allows SWEs to test their features. Much of the actual testing is performed by the SWEs, SETs are there to ensure that features are testable and that the SWEs are actively involved in writing test cases.

 

Clearly SETs primary focus is on the developer. Individual feature quality is the target and enabling developers to easily test the code they write is the primary focus of the SET. This development focus leaves one large hole which I am sure is already evident to the reader: what about the user?

 

User focused testing is the job of the Google TE. Assuming that the SWEs and SETs performed module and feature level testing adequately, the next task is to understand how well this collection of executable code and data works together to satisfy the needs of the user. TEs act as a double-check on the diligence of the developers. Any obvious bugs are an indication that early cycle developer testing was inadequate or sloppy. When such bugs are rare, TEs can turn to their primary task of ensuring that the software runs common user scenarios, is performant and secure, is internationalized and so forth. TEs perform a lot of testing and test coordination tasks among TEs, contract testers, crowd sourced testers, dog fooders, beta users, early adopters. They communicate among all parties the risks inherent in the basic design, feature complexity and failure avoidance methods. Once TEs get engaged, there is no end to their mission.

 

Ok, now that the roles are better understood, I’ll dig into more details on how we choreograph the work items among them. Until next time…thanks for your interest.

 

from:http://sdet.org/?p=149

分享到:
评论

相关推荐

    Google 三篇论文 英文版 中文版

    接下来,我们看到的第二个文件是《Google云计算三大论文英文版.rar》。这个压缩包可能包含了上述三篇论文的原始英文版本,对于希望深入研究或者进行学术研究的人来说,这是非常宝贵的资源。原始论文通常会包含更详细...

    Laravel开发-google-translate

    在本文中,我们将深入探讨如何在 Laravel 框架中集成 Google Translate API,以便在您的应用程序中实现自动翻译功能。Laravel 是一个流行的 PHP 框架,它提供了丰富的工具和功能,使得开发者能够快速、高效地构建 ...

    transposh,wordpress的神级翻译软件,可做二级目录结构的多语言网站

    在设置过程中,用户可以调整各种翻译选项,如启用或禁用某些语言,选择自动翻译引擎(如Google Translate或Microsoft Translator),以及设定翻译显示的方式等。 值得注意的是,尽管Transposh依赖于第三方翻译服务...

    数字时代阅读报告第二期 清晰版PDF

    ### 数字时代阅读报告第二期的关键知识点 #### 1. 编辑团队介绍 - **禾玛**:在上海出生长大,具有英国留学背景,对媒介环境有浓厚兴趣。 - **何威**:在北京师范大学任教,拥有清华大学传播学博士学位,曾在英国...

    IJCAI2015论文全集第二部分

    “IJCAI2015论文全集第二部分”中的每一篇论文都可能深入探讨以上某一个或多个领域的最新发现、理论创新和实际应用。这些论文对于理解当时AI的现状、预测未来发展方向以及推动相关领域的研究都具有极高的价值。通过...

    易语言提取google翻译音频

    本篇文章将详细探讨如何利用易语言来提取Google翻译音频,以及相关的技术实现。 一、易语言与Google翻译API的结合 易语言的强项在于它的可视化编程界面和丰富的组件库,这使得开发者可以快速构建应用程序。而...

    分布式系统领域经典论文翻译集.pdf

    第二部分是分布式理论相关文献。接下来将分别对这两个部分的重要知识点进行详细介绍。 ##### (一)谷歌系列论文 这部分主要围绕谷歌公司在分布式系统方面的研究成果展开,涉及的核心技术包括: 1. **The anatomy...

    精通Qt4编程(第二版)源代码

    \初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了...

    两款网站页面翻译插件分享

    而第二种方法则是使用Google翻译插件,这需要通过调用Google的API来实现更复杂的翻译功能。这两种方法都能实现将网页内容翻译成用户选定的语言,从而满足了不同语言用户的需求。 需要注意的是,虽然这两种插件都能...

    一些前端面试题.pdf

    它可以包含多个`&lt;article&gt;`或其他`&lt;section&gt;`元素。 3. **`&lt;nav&gt;`**: 专门用于包含导航链接的部分,比如网站的主菜单。 4. **`&lt;aside&gt;`**: 用来标记那些与页面主要内容相关但又不是主要内容的一部分的内容,例如侧...

    APKTool批处理版l

    第二个凡是一对tag里面的,一般情况下就是需要翻译的英文字符串。格式一般为:&lt;item&gt;*******&lt;/item&gt; ,或&lt;string name="****"&gt;****&lt;/string&gt; 第三个是以大写字母开头的词条,一般都是需要汉化的。 注意:这三条要...

    福州市八县(市)协作体2019-2020学年高二下学期期末联考试题 英语含答案bychun.doc

    例如,第六段材料中Ted可能遇到了艺术课上的问题,第七题可能讨论Google翻译的准确性或帮助性。这部分测试了学生对较长篇幅听力材料的理解和细节把握。 此外,通过提及的几段对话和独白的样例,我们可以看出试题...

    谷歌黑板报

    ### 谷歌黑板报:数学之美——深入探索Google的数学原理 #### 知识点一:统计语言模型 统计语言模型是自然语言处理(NLP)领域中的一项核心技术,它通过数学方法评估一系列词语构成句子的可能性,进而帮助机器理解...

    安卓系统的安全性外文翻译.pdf

    这篇外文翻译的PDF文件详细探讨了Android系统的安全架构,包括它如何保护用户的隐私,防御恶意软件,以及如何通过更新和权限管理来增强整体的安全性。 一、Android安全模型 Android的安全模型基于Linux内核,它...

    外文翻译 面向Java Web应用程序的OpenID.doc

    在文章的第二部分,读者将学习如何创建自己的OpenID提供者。在整个讨论过程中,我们将以Wicket为基础,这是一个流行的Java Web应用开发框架。 OpenID认证过程涉及以下几个关键步骤: 1. 用户在支持OpenID的Web应用...

    20161227-博客网-2016AI巨头开源IP盘点 50个最常用的深度学习库_IT新闻_博客园1

    1. TensorFlow:TensorFlow是谷歌在2015年11月开源的第二代深度学习引擎,它允许研究人员和开发者构建和部署大规模机器学习模型。2016年4月,谷歌又推出了分布式TensorFlow,这使得在多台机器上并行训练模型变得更加...

    挑战程序设计竞赛(第2版)1

    《挑战程序设计竞赛(第2版)》是一本专门针对程序设计竞赛的指南,由日本的秋叶拓哉、岩田阳一和北川宜稔三位经验丰富的程序设计高手共同编写,由巫泽俊、庄俊元和李津羽翻译。这本书主要面向程序设计人员、竞赛爱好...

    Google_大数据三大论文中文版.zip_Java_

    第二篇论文是“Bigtable:一个结构化数据的分布式存储系统”(Bigtable: A Distributed Storage System for Structured Data)。Bigtable是一种分布式表结构,可以存储海量结构化数据。它被设计用于支持Google的各种...

Global site tag (gtag.js) - Google Analytics