第一章 Google软件测试介绍

1、在Google,软件测试团队归属于一个被称为“工程生产力”(Engineering Productivity,工程效率或工程生产率)的中心组织部门,这个部门的职责横跨开发测试人员使用工具的研发、产品发布和各种级别的测试,从单元级别的测试到探索性级别的测试。Google拥有大量针对互联网产品的共享工具与测试基础框架,服务于包括搜索、广告、Apps、YouTube视频和其他我们在Web上提供的产品。

2、Google是一家以创新和速度为基础的公司,快速地发布有用的代码(如果失败,也只有少数早期用户会失望)、迭代地增加早期用户希望使用的功能(最大化用户反馈)。在这样的环境下,测试不得不变得异常灵活,并且在技能上要做许多前期的规划,只是不停地简单维护并不能真正解决问题。有时,测试和开发互相交织在一起,达到了无法区分彼此的程度,而在另外一些时候,测试和开发又是完全分离,甚至开发人员都不知道测试在做些什么。

3、当有人来问我,Google成功的关键是什么,我的第一个建议就是,不要招聘太多的测试人员。

4、质量不等于测试,当你把开发过程和测试过程放到一起,就像在搅拌机里混合搅拌那样,知道不能区分彼此的时候,你就得到了质量。

5、测试时开发过程中必不可少的一部分,当开发过程和测试一起携手联姻时,既是质量达成之时。

6、角色

(1)软件开发工程师(SWE):工作是实现最终用户所使用的功能代码。他们创建设计文档、选择最优的数据结构和整体架构,并且花费大量时间在代码实现与代码审核上。SWE需要编写与测试代码,包括测试驱动的设计、单元测试、参与构建各种大小规模的测试等。SWE会对他们编写、修复以及修改的代码承担质量责任。

(2)软件测试开发工程师(SET):工作中心在ke‘ce‘shi‘xing 和通用测试基础框架上。他们参与设计评审,非常近距离的观察代码质量和风险。为了增加可测试性,他们甚至会对代码进行重构,并编写单元测试框架和自动化测试框架。SET是SWE在代码库上的合作伙伴,相比较SWE是在增加功能性代码或是提高性能的代码,SET更加关注于质量提升和测试覆盖率的增加。

(3)测试工程师(TE):是一个和SET关系密切的角色,有自己不同的关注点——把用户放在第一位来思考,代表用户的利益。一些Google的TE会花费大量时间在模拟用户的使用场景和自动化脚本或代码的编写上。同时,他们会把SWE和SET编写的测试分门别类地组织起来,分析、解释、测试运行结果,驱动测试执行,特别是在项目的最后阶段,推进产品发布。TE是真正的产品专家、质量顾问和风险分析师。

7、组织结构

(1)Google的组织汇报关系被划分为不同的专注领域(Focus Areas)。这些专注领域包括客户端(Chrome、Google工具栏等、地理(地图,Google Earth等)、广告、Apps、移动等等。所有的开发工程师都汇报给这些专注领域的管理者、总监或副总裁。

(2)测试是独立存在的部门,是与专注领域部门平行的部门(横跨各个产品专注领域),我们称为工程生产力团队。测试人员基本上以租借的方式进入产品团队,去做提高质量相关的事情,寻找一些测试不足的地方,或者公开一些不可接受的缺陷率数据。由于测试人员并不是直接向产品团队进行汇报,因此我们并不是简单地被告知某个项目急需发布就可以通过测试。我们有自己选择决定的优先级,在可靠性、安全性等问题上都不会妥协,除非碰到更重要的事情。工程生产力团队会根据不同产品团队的优先级、复杂度,并与其他产品实际比较之后,再来分配测试人员。

8、爬,走,跑

(1)Google经常在最初的版本里只包含最基本的可用功能,然后再后继的快速迭代的过程中得到内部和外部用户的反馈,而且在每次迭代地过程中都非常注重质量。一个产品在发布给用户使用之前,一般都要经历金丝雀版本、开发版本、测试版本、beta或正式发布版本。

(2)金丝雀版本:这是每日都要构建的版本,用来排除过滤一些明显不适宜的版本。一般来说,只有这个产品的工程师(开发或测试人员)和管理人员才会安装使用金丝雀版本。

(3)开发版本:这是开发人员日常使用的版本,一般是每周发布一个。该版本具有一定的功能并通过了一系列的测试。所有这个产品下的开发人员都会被要求去安装这个版本,并在日常工作中真正使用它,这样可以持续对这个版本进行测试。如果一个开发版本不能满足日常真实工作的需求,那么它将会被打回为金丝雀版本。

(4)测试版本:只是一个通过了持续测试的版本。这个版本基本上是最近一个月里的最佳版本了,也是工程师在日常生活中使用的最稳定最信任的一个版本。测试版本可以被挑选作为内部尝鲜版本,如果该版本有比较持续的优良表现,也是作为beta测试的候选版本。

(5)beta或发布版本:这个版本是由非常稳定的测试版本演变而来,并经历了内部使用和通过所有质量考核的一个版本,也是对外发布的第一个版本。

9、测试类型

(1)小型测试一般来说都是自动化实现的,用于验证一个单独函数或独立模块的代码是否按照预期工作,着重于典型功能性问题、数据损坏、错误条件和大小差一错误(off-by-one错误是一种常见的程序设计错误)等方面的验证。小型测试的运行时间一般较短,通常是在几秒或更短的时间内就可以运行完毕。通常,小型测试是由SWE实现,也会有少量的SET参与,TE几乎不参与小型测试。小型测试一般需要使用mock和fake(mock对象是指对外面以来系统的模拟,在运行时刻可以根据假设的需求提供期望的结果,fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果)才能运行。TE几乎不编写小型测试代码,但会参与运行这些测试,来诊断一些特定错误。小型测试主要尝试解决的问题是“这些代码是否按照预期的方式运行”。

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

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

原文地址:https://www.cnblogs.com/JennyShen/p/9786987.html

时间: 2024-11-05 20:27:38

第一章 Google软件测试介绍的相关文章

第一章Google软件测试介绍

1.Google实现软件的方法:简单和直截了当 2.质量不等于测试.当你把开发过程和测试放到一起,就像在搅拌机里面混合搅拌那样,直到不能区分彼此的时候,你就得到了质量. 3.测试是开发过程必不可少的一部分,当开发过程和测试一起携手联姻时,即是质量达成之时. 4. Google团队由SWE(软件开发工程师), SET(测试开发工程师),TE(测试工程师)组成. 5. 在Google:对于一个测试人员,如果在某个产品中工作满18个月之后,就可以无理由地自愿转岗到其他产品. 6.Google从来不会在

《Google软件测试之道》- Google软件测试介绍

<Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试  2 角色  3 组织结构  4 爬.走.跑  5 测试类型  相关链接 与Microsoft相比,Google的测试团队并非雄兵百万,更象是小而精的特种部队,依靠的是出色的战术和高级武器.Google信奉“少则清晰”. 1 质量与测试 返回 测试是开发过程中必不可少的一部分,当开发过程和测试一起携手联姻时,即是质量达成之时. 2 角色 返回 软件开发工程师(software engineer

第一章 : Android Studio 介绍 [Learn Android Studio 汉化教程]

摘自:http://ask.android-studio.org/?/question/789,为便于学习重新整理.. 本章将引导您完成安装和设置开发环境,然后你就可以跟随本书的例子和课程学习. 首先,您将安装被称为Java开发工具包(JDK)的必要组件. 然后你要下载和安装Android Studio以及Android软件开发工具包(SDK),这些都是开发Android应用程序所必需的工具. 接着,我们将向你展示如何使用新建项目向导来创建一个简单的项目HelloWorld. 最后,我们将向你展

第一章--MySQL数据库介绍及搭建

1. MySQL数据库介绍 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多.其功能稳定,性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,也为MySQL的推广与使用带来了更多的利好.在MySQL成长与发展过程中,支持的功能逐渐增多,性能也不断提高,对平台的支持也越来越多. MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,再将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓

Maven for Eclipse 第一章 ——Maven的介绍

最近深陷与一个无比垃圾的项目无法自拔,好久没有更新文章了.今天简单介绍一下 Maven 在 Eclipse 中的使用.文章的内容几乎出于<Maven for Eclipse>一书,此书言简意赅,实用性很强. 首先,Maven 是一个软件项目管理和程序理解的工具,一般来说,软件项目管理包括规划,组织,管理资源池,形成资源评估等.简单来说,Maven是一个全面的方法对应用模式的过程构建基础设施,它主要有如下目标: 简化程序的构建流程 提供统一的构建系统 提供质量项目信息 提供了项目最佳实战的指导

《FPGA全程进阶---实战演练》第一章之FPGA介绍

1 什么是FPGA FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列.FPGA是在PAL.GAL.CPLD等可编程器件的基础上发展起来的新型高性能产物,是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.图1.1是Altera Cyclone V芯片. 图1.1 Altera Cyclone芯片 说到这里,不得不提ASIC,即专用集成电路(Application

第一章:Netty介绍

1. Netty介绍  Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端,Netty是基于NIO实现的,所以整个Netty都是异步操作,网络应用程序通常需要有较高的可扩展性,无论是Netty还是其他的基于Java NIO的框架,都会提供可扩展性的解决方案. 2. 为什么使用Netty? Netty是业界最流行的NIO框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如Hado

第一章、数据分析介绍

目录 一.数据分析介绍 1.数据分析是什么 2.数据分析能干什么 3.为什么利用Python进行数据分析 4.数据分析过程概述 5.常用库简介 一.数据分析介绍 数据分析是什么? 数据分析能干什么? 为什么利用Python进行数据分析? 数据分析过程概述 常用库简介 1.数据分析是什么 在我们如今这个时代,相信大多数人都能明白数据的重要性,数据就是信息,而数据分析就是可以让我们发挥这些信息功能的重要手段. 2.数据分析能干什么 对于数据分析能干什么其实我们可以简单的举几个例子: 1.淘宝可以观察

《R语言实战》读书笔记--第一章 R语言介绍

1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用->也可以. 3. age <- c(1,3,5,2,11,9,3,9,12,3) weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1) mean(weight) sd(weight) cor(age,weight) plot(age,weigh