<<google软件测试之道>>读书笔记
以前一直从开发的角度来看待测试,看完这本书以后感觉错了,难怪之前公司的测试一直搭建不起来
1.开发人员,开发测试人员,测试人员
* 开发人员负责开发
* 开发测试人员近距离接触代码,负责编写测试用例,模拟运行环境,使不同模块的测试可以进行自动化,提供给开发人员测试框架,方便编写中小型测试
* 测试人员主要是面对用户,也可以跟开发测试人员进行交流
在我们实际开发过程中,很难去区分开发人员,开发测试人员,因为不好招人,所以实际上开发人员和开发测试人员是不区分的,这个就是测试驱动开发,开发人员也要承担一部分测试的责任
2. 把非手动的测试记录下来,并且思考如何进行自动测试
以前开发的时候一直觉得麻烦,所以一旦涉及到复杂逻辑的时候,就开发交给测试人员,这个思路是错误的,实际上越复杂的逻辑越需要通过自动化测试,这样后续的修改才能更好得进行,而且能够编写手动测试的代码可维护性和模块化会比不好写测试的高很多,这个也是测试驱动开发的逻辑
3. 区分大型测试,中型测试,小型测试
* 小型测试就是单元测试,即可以单独测试的模块,关注点在模块是否能完成我们的需求测试,小型测试的时候,外部服务必须通过fake或者mock来实现
* 中型测试是指2个模块交互的代码,关注点在模块的交互上
* 大型测试是指多个某块交互的代码,关注所有模块的集成,倾向于结果驱动,验证软件是否满足用户最终需求
在我们工作过程里面,因为业务的关系,很难做到这么完美,毕竟人手和时间是需要考虑的问题,在开发过程里面,大型测试,中型测试时比较容易进行的,但是大型测试比较考虑编写代码的模块独立,在编写代码的时候需要注意
4. 测试人员需要独立,有地位,不做杂活
可惜在国内一直很不重视测试这一块
5. 软件开始只发布核心功能,然后根据用户进行反馈
这点说得有道理,这个也是我们过去软件开发一个常见的问题,就是一开始就想把软件做全,做好,特别在人手不够的时候还很喜欢这样做,所以在软件开发的时候应该把优先级给定义好
6. 工程师提交的代码即使即将发布的代码,测试时由整个团队来负责的
7. 使用持续构建工具,当有失败的时候通知开发者
8. google有一个测试百科全书,里面对于测试所需要的东西多有提到过
9.测试认证级别
等级1:
* 使用测试覆盖率工具
* 使用持续集成
* 测试分为小型,中型,大型
* 明确标记哪些测试时非确定性测试(结果不确定的测试)
* 创建冒烟测试集合
等级2:
* 如果有测试运行结果失败,就不会发布
* 每次提交代码前都需要通过冒烟测试
* 各类型的测试整体覆盖率要大于50%
* 小型测试的增量覆盖率要大于10%
* 每一个功能特性至少有一个与之对应的集成测试
等级3:
* 所有重要代码都需要经过测试
* 小型测试的增量覆盖率要大于50%
* 新增的重要功能都要经过集成测试的验证
等级4:
* 在提交任何代码前都进行冒烟测试
* 冒烟测试必须在30分钟内运行完成
* 没有不确定性测试
* 总体测试覆盖率不效率40%
* 小型测试的代码覆盖率不小于25%
* 所有重要的功能都应该被集成测试验证到
等级5:
* 对每一个重要的缺陷修复都要增加一个测试用例与之对应
* 积极使用可用的代码分析工具
* 总体测试覆盖率不低于60%
* 小型测试的代码覆盖率应该不小于40%
测试认证可用让大家知道哪个团队对测试工作做得比较好,有利于大家学习
10. 测试工程师是连接业务和用户的人
11. 测试计划的特性
* 及时地更新
* 描述了软件的目标和卖点
* 描述了软件的结构,各个组件和功能特性的名称
* 描述了软件的功能和操作简介
* 不必花过多的时间去撰写,必须随时可以修改
* 应该描述必测点
* 在测试中提供有用的信息,从而帮助确定进展以及覆盖率上的不足
12. google test analytics
* 避免散漫的文字
* 不必推销
* 不要把不重要的,无法执行的东西放进测试计划
* 渐进式的描述
* 指导计划者的思路
* 最终结果应该是测试用例
13. ACC指导
1.A代表特质Attribute
* 开始测试计划或做ACC分析的时候,必须确定该产品对用户,对业务的意义,比如chrome的要求是快速,安全
* 特质必须在几小时内描述完整
2.C代表组件(component)
* 组件是系统的名字,在特质被识别确定以后,组件是构成系统的模块,比如在线商店的购物车和结账系统,word处理器的格式化和打印功能等等,这些正式测试人员需要测试的对象
3.C代表能力(capability)
* 比如从一个购物车里面进行增加和删除商品
实际上这部分是一直细分下去的,比如先确定特质,google里面有社交功能,再确定社交功能的子功能,比如个人资料,再确定个人资料的子功能,比如联系人,设置,头像等等,通过逐级的划分去逐渐增加测试用例
ACC是很有意思的区分,实际上在做软件的时候应该按照这个来编写测试计划
14. 将测试计划的编写限定在10分钟之内
这一点在项目赶的时候很有用,只针对游泳的编写代码
15. 软件尽早交付,经常交付,尽快失败
16. 渐进式迭代测试,不然chrome,早先测试结果是页面级别的,后来提升到元素级别
在我们实际的开发项目里面,人手不足导致单元测试用例落后的时候,这个对于软件集成很有帮助
17. 只有熟悉了团队的全貌,才能更好的展开工作,而不是只熟悉开发或者测试
<<google软件测试之道>>读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- c语言完成分块查找
首先要把一系列数组均匀分成若干块(最后一个可以不均匀) 每块中元素任意排列,即块中数字无序,但是整个块之间要有序.因此也存在局限性. #include<stdio.h> //分块查找法 v ...
- px和em
相同点: 都是长度单位 不同点: px是绝对单位,不支持IE的缩放,em是相对单位. px的值是固定的,指定是多少就是多少:em得值不是固定的,并且em会继承父级元素的字体大小 ps: 浏览器的默认字 ...
- ARM汇编程序基本知识
ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...
- Objective-C( 语法二)
分类(Category):可以给某一个类扩充一些方法(不修改原来类的代码) 作用:在不改变原来类内容基础上,可以为类增加一些方法 使用注意: 1. 只能增加方法,不能增加成员变量 2. 分类方法 ...
- Windows下搭建IOS开发环境(一)
原文:http://blog.csdn.net/shangyuan21/article/details/18153605 我们都知道开发iPhone等ios平台的移动应用时需要使用Mac本,但是Mac ...
- 【个人使用.Net类库】(4)验证码类
验证码是现在管理系统常用的一种保护用户帐户信息的一种功能. 验证码可以有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,虽然这可能是我们登录麻烦一点,但是对用户的密码安全来 ...
- jsoup 简介
Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从HTML中攫取你所需的信 ...
- golang的第一个deadlock
package main import ( "fmt" "math/rand" ) func push(c chan []int) { ...
- 【转】不是技术牛人,如何拿到国内IT巨头的Offer
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...
- Qt msgBox 快捷版
使用 int iRet = msgBox(pos, tr("警告") , tr("确定要删除当前选中的行吗?") , tr(, ); == iRet) retu ...