《Google软件测试之道》基础
《Google软件测试之道》,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看。。。
个人的一种学习习惯吧,就做了笔记,将自己的学习理解感触写下来。。。
预计会分为五部分写这些学习笔记,分别是Google软件测试介绍、软件测试开发工程师、软件测试工程师、测试经理以及附录其他部分。。。
快乐阅读,快乐测试,祝愿你总能发现(并修复)BUG。。。
————James Whittaker、Jason Arbon、Jeff Carollo(本书作者)
一、质量不等于测试
软件质量是所有人的事,而不仅仅只是测试团队的事!!!
质量不是被测试出来的,而应该从设计之初就考虑到软件应用的业务逻辑、代码code规范、测试流程安排方法、以及在开发过程中不断变更需求的应对方案。
但不经过测试的产品,也不可能拥有好的质量。
软件质量是一种预防行为,而不是测试行为。
测试是开发过程中必不可少的一部分。
开发也应该对自己编写的代码负责。
二、角色
1、软件开发工程师
software enginner,简称SWE,是一个传统上的开发角色,工作职责是实现最终用户所使用的功能代码。
开发工程师,创建设计文档、选择最优的数据结构和整体架构,并且进行代码实现和代码审核,开发工程师几乎所有时间花在代码实现上面。
2、软件测试开发工程师
software enginner in test,简称SET,也是一个开发角色,工作重心在可测试性(对开发工程师编写的代码质量和正确性的验证。
即:单元测试)和通用测试基础框架(为后续快速测试、持续集成以及自动化等测试设计测试框架、环境、工具等)。
开发测试工程师,参与设计评审,近距离观察代码质量和风险;为了增加可测试性,会对代码进行重构,并编写单元测试以及自动化测试框架。
开发测试工程师和开发工程师可以说是一体两面:SWE主要职责在于增加功能性代码或提高性能的代码,而SET更加关注质量提升和测试覆盖率增加。
相比于SWE更关注客户使用的功能的开发实现,SET更注重质量服务,其编写的代码是为了让SWE测试自己的功能。
3、测试工程师
test enginner,简称TE,和SET类似,但是把用户放在第一位,站在用户角度思考。
测试工程师把用户放在第一位来思考,将SWE和SET编写的代码分类组装,组织整体的质量实践、测试,分析解释测试运行结果,驱动测试执行,以及推动产品发布等。
4、三者的区别于关联
SWE:负责功能实现和这些独立功能的质量,对容错设计、故障恢复、测试驱动设计、单元测试负责,并和SET一起测试代码
SET:也是开发人员,不过提供测试支持,主要是编写测试框架,将最新开发的代码隔离,在测试环境(或模拟用户真实环境)管理代码提交等;
SET编写代码,通过这些代码提供的功能让SWE能够自测;SET的目的是保证这些功能模块具有可测性,让SWE更多时间去完成代码编写。
TE:专注用户角度的测试,由于单元测试的独立功能经过SWE和SET的测试,TE更多的是验证代码数据集成后是否可以满足最终用户需求。
其扮演一个双重确认角色:一方面确认开发人员早起的测试工作是否存在不足,另一方面参与到常见用户场景中,测试应用是否满足性能期望,在安全性、
国际化、易用性、访问权限等方面是否满足用户需求,以及和参与到软件各个阶段的人员沟通交流,讨论设计带来的风险、功能逻辑复杂性和错误避免的方法。
三、组织结构
一般情况下,开发和测试人员一般都隶属于一个部门、团队,工作汇报给同一个领导者,看起来做到了平等相处患难与共;
然而实际上,团队的领导者一般来自产品或者开发经理,在产品发布时,优先考虑的功能是否完整和易用性方面是否足够简单,缺很少考虑质量:测试总在为开发让路!!!
这就导致了市场上存在很多有缺陷的产品,出问题再发一个补丁包就行;还有就是,很多测试人员说的,公司不注重测试,测试没地位的原因!!!
在类似于Google等这样的大型互联网公司里面,测试团队是一个独立的部门,会根据不同软件产品的优先级、复杂度等因素决定分配测试人员;测试人员对产品进行一系列
提高软件质量的工作,但并不向产品开发团队汇报负责,而是对缺陷进行管理、发布,可以说测试和开发人员是相辅相成的一种并存关系。
这样的好处在于:产品质量能得到更有效控制,不用招聘更多测试人员去做一些本来应该开发应该做的事情,
做到较好的质量和成本控制(虽然会犯错,但会保持在一定的平衡范围内),还可以使测试人员保持项目产品新鲜感,以及新的有效的测试技术的推广。
个人感触:在国内的大部分互联网或者有IT部门的企业中,测试的地位相对来说还是比较低的,相比于产品和开发而言。原因就是:很多公司产品只要实现了功能就会急于发布使用,用户使用中出现问题,发布一个
补丁包,解燃眉之急;以及产品从设计初始的业务逻辑不明确,开发测试时间紧急,需求变更频繁,开发测试人员的技术水平、整个生产流程、管理以及上线发布的决定权等很多因素造成。
Google解决办法:在最初版本只包含基本功能,然后在后续的快速迭代中通过各种途径得到内部和外部用户的使用反馈,后续迭代每次都注重产品质量,一般软件应用正式与用户见面之前都要经历下面几个版本。。。
四、版本
一个产品最终上线给予用户使用,一般都要经历一系列的内部各种验证,各版本如下:
1、每日构建版本
即金丝雀版本:对产品的代码每天都进行构建,用来排除一些不适宜的版本。
金丝雀:17世纪,英国人将金丝雀放到煤矿井中检测空气质量,如果金丝雀死了,则证明矿井中空气达到了令人中毒的水平;可以理解为一种预警机制。
如果每日构建代码失败,则表明流程的某个地方出问题了,需要进行复查,这个版本需要极强的容忍度。
2、开发版本
开发人员使用的版本,一般都是定期发布,让该产品下的所有工程师安装使用,一般它会包含一定的功能并通过了一定的测试,如果该版本不能满足日常真实工作需要,则需要打回金丝雀版本,重新进行评估。
3、测试版本
通过了持续测试的版本,一般为一个阶段里面的最佳版本,可以作为内部评测的一个版本,如果这个版本有持续的良好表现,可以作为下一阶段的发布版本候选版本。
4、发布版本
即beta版本,是个非常稳定的测试版本,可以作为对外发布上线的版本。
上面的几种产品版本可以作为开发一款软件应用产品的参考,实际情况需要结合实际需求来界定!!!
五、测试类型
一般我们常说的测试阶段类型有代码测试(单元测试)、集成测试(接口测试)、系统测试等这些命名方式,而Google则采用小型测试、中型测试、大型测试等术语,其强调的是测试的范畴而不是形式
1、小型测试
一般来说都是自动化实现的,其意味着涵盖叫少量的代码,用于验证一个单独函数或独立功能模块代码是否按照预期工作,着重于典型的功能性问题、数据损坏、错误条件和大小差异错误等验证。
小型测试一般有SWE实现,也会有少量的SET参与,小型测试主要尝试解决的问题是:这些代码是否会按照预期的方式进行。
2、中型测试
中型测试一般也是自动化实现的,一般会涉及两个或两个以上甚至更多模块之间的交互,测试重点在于验证有交互的模块之间彼此调用时的功能是否正确。
一般在独立功能模块开发完毕后,SET会驱动这些测试的实现及运行,SWE会参与,一起编码、调试和维护这些测试。中型测试主要尝试解决的问题是:一系列有交互的模块互相调用时候,是否如我们预期的那样工作
3、大型测试
涵盖三个或更多的功能模块,使用真实用户场景和实际用户数据,其关注的是所有模块的集成,更倾向于结果驱动,验证软件是否满足最终用户的需求。
大型测试尝试去解决的问题是:产品的操作运行方式是否和用户期望相同,并产生预期的结果(端到端的使用场景以及整体产品或服务之上的操作)
测试的重点,应该注重测试的范畴,内容,结果,而不是这个阶段的术语,专注,才是做技术该有的品质。。。
《Google软件测试之道》基础的更多相关文章
- 小课堂week14 Google软件测试之道
读<Google软件测试之道> 在IT领域,Google是一面旗帜,是一家非常善于思考善于尝试的公司.随着面临挑战的不断增大,传统的测试开展方式也越来越力不从心,这本书讲述的就是一次完整的 ...
- 《Google软件测试之道》测试开发工程师
拖延了将近半年的草稿,断断续续的写完了.之前草草翻看完这本书,关注点主要在TE上,而关于SET的部分则只是浏览,最近后知后觉,又翻出了这本书,重新看了一遍,又有新收获. 就说说Google的SET是如 ...
- 《Google软件测试之道》简介
<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...
- 《Google软件测试之道》- Google软件测试介绍
<Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试 2 角色 3 组织结构 4 爬.走.跑 5 测试类型 相关链接 与Micro ...
- 《Google 软件测试之道》摘录
最近刚刚看完<Google 软件测试之道>,受益颇多,遂记录下: 只有在软件产品变得重要的时候质量才显得重要 第一章:谷歌软件测试介绍 角色介绍 SWE(Software Engineer ...
- 《Google软件测试之道》
Google软件测试之道 Google对质量的理解 质量不等于测试,即质量不是被测出来的 开发和测试应该并肩齐驱,测试就是开发过程中不可缺少的一部分 质量是一种预防行为而不是检测 Google对软件测 ...
- google软件测试之道--读后笔记
看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍. 在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ...
- google软件测试之道读后感(一)
这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ...
- 《Google软件测试之道》【PDF】下载
<Google软件测试之道>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382198 内容介绍 每天,Google都要测试和发布 ...
随机推荐
- 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)
今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知 ...
- 浅析JavaScript事件流——冒泡
一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传 ...
- 压缩SWF文件大小!减少40%体积!
使用FlashBuild作为IDE的痛苦是显著的!如果开发的项目比较大,那么卡顿.崩溃.白屏是常事,使用别的IDE开发如Sublime.FlashDevelop.IDEA等,然后再用mxmlc编译出 ...
- SharePoint 2013 configure and publish infopth
This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...
- HTML基本元素(三)
1.HTML特殊字符 一些字符在HTML中拥有特殊的含义,比如小于号(<)和大于号(>)用于定义HTML标签.如果我们希望浏览器正确地显示这些字符,我们必须在HTML源码中插入字符实体. ...
- 代码的坏味道(9)——异曲同工的类(Alternative Classes with Different Interfaces)
坏味道--异曲同工的类(Alternative Classes with Different Interfaces) 特征 两个类中有着不同的函数,却在做着同一件事. 问题原因 这种情况往往是因为:创 ...
- Unity iOS混合开发界面切换思路
Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...
- 充电时间 Go中的数组、切片、map简单示例
数组是固定长度的,依稀让我想起了VB:切片是动态的:map一般是键值对 package main import ( "fmt" ) func main() { var userna ...
- 谈谈对Spring IOC的理解(转)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- Java 内存区域与内存溢出
内存区域 Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器.Java 虚拟机 ...