读《Google软件测试之道》

在IT领域,Google是一面旗帜,是一家非常善于思考善于尝试的公司。随着面临挑战的不断增大,传统的测试开展方式也越来越力不从心,这本书讲述的就是一次完整的转型过程,非常的有价值。这是本老书了,一年多前就拜读过,当时更多看到的是差距和困难,随着一年的努力和尝试,突然觉得有点开窍,和大家做一些分享。

基本理念

Google在质量方面的基本共识是:

质量不是被测试出来的

具体的工作目标是:

让每个工程师都注重质量

从业多年,这个口号其实经常能听到,但是大多数时候只是一个口号而已,很长一段时间,我甚至觉得开发人员缺乏质量意识已成为了一种天性,如何破开这块坚冰,Google也许能带来点启示。

组织变革

Google的变革是从组织开始,面临的是几个比较大的问题。

测试部门是否需要保留?

从思维角度说,开发是一种创建思维,而测试是一种破坏思维,两者是无法同时兼容的。

一个部门是比较难兼容两种思维方式的,所以Google保留了独立的测试部门。

测试部门的定位如何?

新部门的名称叫做 Engineering Productivity工程生产力部门

从部门的名称就可以看到,主要关注生产力提升方面

工程生产力部门如何工作?

关键在于人员的分工,主要有两类角色SET和TE

TE(测试工程师)和常规测试角色类似,主要负责功能层面的验证

SET(测试开发工程师)这是一个全新的职责,其目标是帮助开发人员进行测试

Google变革的核心是新增了一个全新的角色SET,这个角色主要起到了开发和测试的融合剂,也是把质量意识进行普及的关键。

测试分类

SET这个角色是如何协同工作的,关键是Google的测试分类。

测试分类是这样的:

小型测试:单元测试。

中型测试:两个或两个以上模块,关注功能交互。

大型测试:三个或以上,使用真实用户场景和数据。

初看到这个分类,我是感觉有点凌乱的,命名上也太不严谨了。

从技术角度,对三类测试有个更详细的区分,明确了很多。

小型测试 中型测试 大型测试
时间 10ms内 1s内 尽可能快
强制结束 1min 5min 15min
网络服务 模拟 仅本地
数据库 模拟
文件系统 模拟
用户界面 模拟 不鼓励
系统调用 不鼓励
多线程 不鼓励

小型测试的特点是运行时间短,而且没有外部依赖。

并不是符合所有条件就算小型测试,如下代码虽然符合,但仍然不算小型测试,因为其输出结果不稳定。

    public String getString(){
return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS")
.format(new Date());
}

三类测试的分工如下:

小型测试运行时间短、无依赖、输出稳定,这些特性无疑都非常有利于测试,大多数开发人员完全能够胜任,所有小型测试是由开发人员SWE来负责。同时,小型测试是所有模块的基石,构成了这个质量体系的稳固基础。并不是所有代码都能符合小型测试的要求,所以SET的第一个职责是帮助开发人员将代码重构符合小型测试。

中型测试会涉及到外部依赖和模块间接口,相对难度较高,所以主要由SET来负责,同时,SET会负责接口相关的开发。

大型测试主要面向用户,会由TE来负责。

在Google,SWE、SET和TE共同协作来完成质量工作,但三者之间有着严格的边界区分,小型测试数量庞大易于测试,需要的是细节逻辑的掌握,SWE负责最为合适;在此基础上,中型测试需要实现接口和外部依赖,专业性较强,由SET负责;大型测试主要面向用户和价值,由TE来负责。三者共同构成了质量的金字塔。

ACC测试法

TE角色由于小型测试和中型测试的支持,主要关注用户体验和业务价值。工作方法叫做ACC测试法。

A特性、C组件、C能力是一个矩阵表达法。每一项能力(系统功能)需要同时考虑功能和特性(业务价值)两方面。

特性1 特性2 特性3
组件1 能力
组件2 能力
组件3 能力

ACC是一种测试计划的安排法,和传统的树形结构相比,增加了特性的维度,突显了业务价值。但是这种方法主观性比较大,对测试人员有一定的要求。

小结

书中对于SET和TE的工作有着较为具体的描述,限于篇幅就不再赘述。整本书读下来,让我印象最为深刻的Google解决问题的思路。面对质量这个业界的巨大难题,Google的做法不是口号,也是不是革命,而是面对每个具体问题,进行了非常人性化的解决,将一个非常大的问题进行了分解。虽然其解决方法有着浓重的Google特色,我们不可以完全照搬,但是解决问题的思路和衍生的众多技术成果却是非常值得我们学习的。

小课堂week14 Google软件测试之道的更多相关文章

  1. 《Google软件测试之道》摘录

    以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ...

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

    <Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试  2 角色  3 组织结构  4 爬.走.跑  5 测试类型  相关链接 与Micro ...

  3. 《Google 软件测试之道》摘录

    最近刚刚看完<Google 软件测试之道>,受益颇多,遂记录下: 只有在软件产品变得重要的时候质量才显得重要 第一章:谷歌软件测试介绍 角色介绍 SWE(Software Engineer ...

  4. 《Google软件测试之道》

    Google软件测试之道 Google对质量的理解 质量不等于测试,即质量不是被测出来的 开发和测试应该并肩齐驱,测试就是开发过程中不可缺少的一部分 质量是一种预防行为而不是检测 Google对软件测 ...

  5. 《Google软件测试之道》基础

    <Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...

  6. google软件测试之道--读后笔记

         看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍.   在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ...

  7. google软件测试之道读后感(一)

    这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ...

  8. 《Google软件测试之道》【PDF】下载

    <Google软件测试之道>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382198 内容介绍 每天,Google都要测试和发布 ...

  9. 《Google软件测试之道》测试开发工程师

    拖延了将近半年的草稿,断断续续的写完了.之前草草翻看完这本书,关注点主要在TE上,而关于SET的部分则只是浏览,最近后知后觉,又翻出了这本书,重新看了一遍,又有新收获. 就说说Google的SET是如 ...

随机推荐

  1. BeanDefinitionStoreException: Failed to read candidate component class: URL

    如题,遇到这种情况一般都是引用jar包版本不一致或者编译后的class除了问题 解决办法: a.如果是maven项目,把项目全部clean一下,重新mvn install b.如果不是maven项目, ...

  2. 区域生长算法(附MATLAB代码实现)

    一.理论概念 区域生长是按照事先定义的生长准则将一个像素或者子区域逐步聚合成一个完整独立的连通区域过程.对于图像感兴趣目标区域R,z为区域R上事先发现的种子点,按照规定的生长准则逐步将与种子点z一定邻 ...

  3. FusionCharts for Flex报错

    1.昨天,我新建了一个Flex项目,并将FusionCharts组件添加进去了,但是Flex应用程序还是报错 具体错误如下: 2.但是,Flex项目已经导入FusionCharts.swc

  4. Flash图表控件FusionCharts如何定制图表中的趋势线和趋势区

    FusionCharts中的趋势线是什么 趋势线是横跨图标的水平/垂直线条,用来表示一些预订数据值. 在图表中展示趋势线 用户可以使用<chart>元素中的trendlines属性来显示图 ...

  5. http协议状态码对照表

    1**:请求收到,继续处理 2**:操作成功收到,分析.接受 3**:完成此请求必须进一步处理 4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败 100——客户必须继续发 ...

  6. java基础回顾(三)——HashMap与HashTable

    public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable public cla ...

  7. Python 编程规范-----转载

    Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...

  8. linux设置ulimit值永久生效

    小知识的积累,转自 http://hi.baidu.com/moonelf9989/blog/item/1deadf12780fa0c5c2fd789d.html linux 默认打开文件数linux ...

  9. postgresql安装配置

    一,什么是postgresql PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES 版本 4.2 为基础的对象关系型数据库管理系统(ORDBMS),简称pgsql,它支持大部分 ...

  10. Oracle笔记 七、PL/SQL 异常处理

    --异常处理 declare sNum number := 0; begin sNum := 5 / sNum; dbms_output.put_line(sNum); exception when ...