以前一直从开发的角度来看待测试,看完这本书以后感觉错了,难怪之前公司的测试一直搭建不起来

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软件测试之道>>读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. Using Spring Boot without the parent POM

    Using Spring Boot without the parent POM: 问题 spring boot项目一般情况下的parent如下: <parent> <groupId ...

  2. css知识点积累

    关于样式的优先级问题: !important > style > [ id > class > tag ];  z-index 的属性用法: z-index属性是用来设置元素的 ...

  3. R语言apply函数族笔记

    为什么用apply 因为我是一个程序员,所以在最初学习R的时候,当成“又一门编程语言”来学习,但是怎么学都觉得别扭.现在我的看法倾向于,R不是一种通用型的编程语言,而是一种统计领域的软件工具.因此,不 ...

  4. WCF初探-6:WCF服务配置

    WCF服务配置是WCF服务编程的主要部分.WCF作为分布式开发的基础框架,在定义服务以及定义消费服务的客户端时,都使用了配置文件的方法.虽然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性 ...

  5. MySQL:日期函数、时间函数总结

    MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...

  6. 利用JAVA想数据库中提交数据

    1.用户信息提交界面 <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  7. 使用Jsoup 抓取页面的数据

    需要使用的是jsoup-1.7.3.jar包   如果需要看文档我下载请借一步到官网:http://jsoup.org/ 这里贴一下我用到的 Java工程的测试代码 package com.javen ...

  8. HTML编码规则、CSS属性声明顺序--简介

    From AmazeUI:http://amazeui.org/getting-started/html-css-guide HTML 属性顺序 HTML 属性应当按照以下给出的顺序依次排列,确保代码 ...

  9. iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)

    iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变 ...

  10. Ubuntu软件中心打不开,Encountered a section with no Package: header错误之解决

    sudo rm /var/lib/apt/lists/* -vf sudo apt-get update