《Google软件测试之道》之学习笔记01
Google软件测试介绍
软件测试团队->工程生产力(Engineering Productivity)
http://googletesting.blogspot.com/2011/01/how-google-tests-software.html
1.1 质量不等于测试
质量不是被测试出来的,质量不等于测试,每写完一段代码立刻测试这段代码,当完成更多的代码时做更多的测试,直到开发和测试融为一体,才能得到质量。
1.2 角色
"You build it, you break it, you fix it"
软件开发工程师(SWE: Software Engineer)
增加功能性的代码或提高性能的代码
对容错设计、故障恢复、测试驱动设计、单元测试负责
软件测试开发工程师(SET: Software Engineer in Test)
关注于质量的提升和测试覆盖率的增加,增加可测试性,甚至进行代码重构,编写单元测试框架和自动化测试框架
提供测试支持
软件测试工程师(TE: Test Engineer)
专注于用户角度的测试,模拟用户使用场景、编写自动化脚本或代码,组织各种类型的测试,分析、解释测试运行结果,驱动测试执行
模块级别和功能级别的测试应有SWE和SET完成
TE需要确认开发人员的测试工作是否到位,任何明显的bug都表明早期开发人员的测试工作存在不足或比较马虎
TE应更注意常见用户使用场景,是否满足性能期望,在安全性、国际化、访问权限等方面是否满足用户需求
与各方讨论基本设计带来的风险、功能逻辑复杂性和错误避免的方法
1.3 组织结构
一般,测试和开发人员隶属于同一个工程产品团队,管理者通常来自产品经理或开发经理,测试总是给开发让路
SET和TE没有遵循这个模式,测试成为一个独立的部门,平行于各个产品部门,测试人员以租借的方式进入产品团队,不直接向产品团队汇报
1.4 爬、走、跑
Google在一个产品的核心功能实现后立即发布,然后根据用户反馈再进行迭代
Chrome开发过程中的版本:
金丝雀版本:每日构建,排除明显不适宜的版本,这个版本可能无法使用应有的基本功能
开发版本:开发人员日常使用的版本,每周一个。具备一定的功能并通过了一系列的测试。所有相关的工程师都需安装,在日常使用,如不满足日常工作的需求,会被打回金丝雀版本
测试版本:通过了持续测试的版本,是最近一个月里最好的版本,也是工程师在日常使用中最稳定最信任的版本。可作为内部尝鲜(dog food)版本,若变现持续优良,可作为beta版本的候选
beta版本或发布版本:有非常稳定的版本演变而来,经历了内部使用和通过了所有质量考核
1.5 测试类型
小型测试
一般都是自动化实现的,用来验证一个单独函数或独立功能的代码是否按照预期工作,着重于典型功能性问题、数据损坏、错误条件和大小差一(off-by-one)等错误
运行时间短,通常在几秒或更短的时间内完成
由SWE来实现,少量有SET参与,TE几乎不参与,但TE会运行这些测试
测试一般需使用mock和fake才能运行
mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果
fake对象是一种虚假的实现,内部使用来固定的数据和逻辑,只能返回特定的结果
中型测试
一般也都是自动化实现的,会涉及两个或两个以上的模块之间的交互
测试重点在于验证这些“功能近邻区”之间的交互,以及彼此调用时功能是否正确
SET会驱动这些测试的实现和运行,SWE会深度参与,编码、调试和维护这些测试,开发后期,TE会通过手动或自动的形式执行这些测试
大型测试
涵盖三个或以上的模块,使用真是用户使用场景和实际用户数据
一般需消耗数小时或更长时间才能运行完成
SWE、SET、TE都会参与其中
关注端到端的使用场景以及在整个产品或服务之上的操作行为
小中大型测试,相当于单元测试、集成测试和系统测试
能够自动化的应以自动化的方式实现,包括日常工作
回归测试中手动部分可通过定点点击或录制技术实现自动化,手动测试更倾向于关注新功能
《Google软件测试之道》之学习笔记01的更多相关文章
- 《Google软件测试之道》心得笔记1
		Google软件测试介绍 把开发和测试融合在一起——开发和测试必须同时展开 开发人员自己要对自己写的代码负责,比专职的测试人员更适合做测试工作. 测试开发工程师SET 对于Google拥有很少量的测试 ... 
- 《Google软件测试之道》基础
		<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ... 
- 《Google软件测试之道》简介
		<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ... 
- 小课堂week14 Google软件测试之道
		读<Google软件测试之道> 在IT领域,Google是一面旗帜,是一家非常善于思考善于尝试的公司.随着面临挑战的不断增大,传统的测试开展方式也越来越力不从心,这本书讲述的就是一次完整的 ... 
- google软件测试之道读后感(一)
		这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ... 
- 《Google软件测试之道》【PDF】下载
		<Google软件测试之道>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382198 内容介绍 每天,Google都要测试和发布 ... 
- 《Google软件测试之道》测试开发工程师
		拖延了将近半年的草稿,断断续续的写完了.之前草草翻看完这本书,关注点主要在TE上,而关于SET的部分则只是浏览,最近后知后觉,又翻出了这本书,重新看了一遍,又有新收获. 就说说Google的SET是如 ... 
- 《Google软件测试之道》摘录
		以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ... 
- 《Google 软件测试之道》摘录
		最近刚刚看完<Google 软件测试之道>,受益颇多,遂记录下: 只有在软件产品变得重要的时候质量才显得重要 第一章:谷歌软件测试介绍 角色介绍 SWE(Software Engineer ... 
- google软件测试之道--读后笔记
		看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍. 在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ... 
随机推荐
- 最优的cuda线程配置
			1 每个SM上面失少要有192个激活线程,寄存器写后读的数据依赖才能被掩盖 2 将 寄存器 的bank冲突降到最低,应尽量使每个block含有的线程数是64的倍数 3 block的数量应设置得 ... 
- 二维树状数组总结&&【洛谷P4514】 上帝造题的七分钟
			P4514 上帝造题的七分钟 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了00的n×mn×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b)(a,b),右下 ... 
- 「杂录」CQOI 2018 背板记
			背景 经过一天天的等待,终于迎来了\(CQOI2018\),想想\(NOIp\)过后到现在,已经有了快要半年了,曾经遥遥无期,没想到时间一转眼就过去了-- 日志 \(Day0\) 因为明天就要考试了, ... 
- 删除Ati显卡桌面右键菜单(配置可交换显卡,显示卡属性,图形选项,图形属性)
			Win+R 打开注册表 依次找到 HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers 保留Gadgets.New.Sh ... 
- Realm数据库的使用
			https://github.com/lipanquan/Realm/tree/master 
- Java StringBuffer
			String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串 ... 
- EF上下文容器,保存线程唯一性
			在工作中有个疑问,就是EF上下文容器到底创建了多少个? 在asp.net中,EF上下文容器.如果只要有一个,则每次一个用户访问,添加一些实体,然后又不会自动销毁,就会造成内存爆炸.如果每次创建一个,则 ... 
- thinkphp模板布局
			不知道我们会不会有这样一个困惑,,每当进行一个项目时,发现页面都有好多重复的地方,假如我们每个页面都写,不仅降低的代码的运行效率 而且还不利于后期维护!TP中的模板布局就解决了这一难题! 我们就以Ad ... 
- Charles抓包使用总结
			一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 二.Charles ... 
- java多线程(一)
			一.进程,线程,并发,并行 1.1 进程和线程的区别 进程是指:一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运 ... 
