Lessons Learned in Software Testing 
美 Cem kaner、James Bach、Bret Pettichord著
本书的三位作者具有多年的测试经验,知道成功的测试都需要什么。在这本革命性的新书中,他们汇总了293条测试经验建议,阐述了如何做好测试工作,如何管理测试,以及如何澄清有关软件测试的常见误解。读者可直接将这些经验用于自己的测试工作中。这些经验中的每一条都是与软件测试有关的一个观点,后面是运用这条经验的方法、时机和原因的解释或例子。
第1章 测试员的角色
测试人员的角色到底是什么?能够定义的很清楚吗?
经验1-测试员是项目的前灯
测试就是要找到信息,有关项目或者产品的关键信息决策都需要根据这些信息来决定。
经验2-测试员的使命决定要做的一切
使命可能决定于行业、公司、项目或者团队的个性,测试项目也是千差万别。我们的使命是以客户为中心,明确需求,提高工作效率及降低风险。要经常动态调整自己的使命,不要侧重某一方面而疏忽另一方面。
经验3-测试员为很多客户服务
测试员提供的服务时至关重要的,客户可以是项目经理、程序员、技术文档编写员、技术支持员、市场开发员、产品经理、管理层和项目相关人员、用户等;
经验4-测试员发现的信息会“打扰”客户
根据客户的价值定义,通知客户有关威胁产品价值的任何信息。测试员有责任报告相关问题。
经验5-迅速找出重要的程序问题
测试员不仅要找出问题,还需要快速找出问题
需要对问题进行分类分级考虑:首先测试经过变更的部分,然后测试没有变化的部分;首先测试核心功能,然后测试辅助功能;首先测试能力,然后测试可靠性;首先测试常见情况,然后测试少见情况;首先测试常见威胁,然后测试罕见威胁;首先测试影响大的问题,然后测试影响小的问题;首先测试最需要的部分,然后测试没有要求的部分;
经验6-跟着程序员走
为程序员提供支持,很可能是测试员使命的关键部分。及时反馈程序情况,马上测试程序,修改代码后及时测试等,尽快建立最短最快的反馈闭环。
理想的情况是,程序员为了修改测试员找出的程序问题忙的团团转,使程序员,而不是测试员,成为项目的瓶劲。
经验7-询问一些,但不一定外露
经常提问问题,方式要含蓄,内在些,有助于启发自己的思考,利于测试;
经验8-测试员关注失效,客户才能关注成功
测试员关注失效,因为这可以增加发现失效的机会,用自己全部的创造力和技能,寻找产品中的关键问题。发现问题,使产品做的更好,更具持续性,在市场中才可能成功。
经验9-不会发现所有问题
找出并报告重要的程序问题,但是不会发现所有的程序问题。
经验10-当心“完备的”测试
不要有完备、完成、结束等,完备的定义并不是在项目一开始就能够最终确定的,随着测试项目的进展,随着新测试任务的突然出现,需要重新考虑。
经验11-通过测试不能保证质量
测试员既不能提高质量,也不能降低质量。质量来源于构建产品的人,测试不过是提供了项目质量保证的信息。
经验12-永远别做看门人
测试员永远不要对产品的发布具有否决权,获得这种权利之后,同时也承担了产品质量的全部责任,其他人倒是可以轻松些。要由控制项目,条件最好的人承担发布的责任。大多数非常有效的团队,都采用某种方式的集体决定是否发布产品;
经验13-当心测试中的不关我事理论
测试员的使命应该是尽其所能,通知团队可能会对产品的价值产生消极影响的所有问题。
经验14-当心称为过程改进小组
如果过程改进是整个团队的工作,则测试员可以成功的参与工作,并获得成功。
经验15-别指望任何人会理解测试,或理解测试员什么条件下才能搞好测试
测试员要受管理层和程序员决策的很大影响,如果他们的计划很不明确,或设计出的产品很难测试,测试工作就会很难进行。他们不理解自己的行动会对测试过程产生的影响。
第2章-按测试员的方式思考
测试员并不抱怨,他们提供的是证据,测试员并不喜欢征服,他们喜欢打破产品没有问题的幻觉。按测试员的方式思考意味着实践认识论。测试员的大脑是仔细调谐的推理机器,用精神力量做好事。
经验16-测试运用的是认识论
认识论研究如何认识所了解的东西,怎么知道软件足够好?如果软件并不是足够好,怎么才能知道?怎么知道已经完成了足够的测试?
经验17-研究认识论有助于更好测试
研究认识论可帮助测试员设计有效的测试策略,更好的意识到自己工作中的错误,理解自己的测试能够证明什么,不能证明什么,并编写出无懈可击的测试报告。
经验18-认知心理学是测试的基础
研究认知心理学有助于影响测试员工作成绩的因素,以及影响人们解释自己工作方式的因素。
经验19-测试在测试员的头脑中
优秀测试和平庸测试之间的差别在于测试员如何思考:测试设计的选择,解释观察的现象,分析描述现象的能力
经验20-测试需要推断,并不只是做输出与预期结果的比较
测试不是简单的比较活动,聪明人必须设计测试,并确定预期输出。大多数的测试设计都是基于推断,掌握探索式推断的艺术。意味着要以一种不能实现预测的方式,通过一种思想引出另一种思想,然后再引出下一种思想。
经验21-优秀测试员会进行技术性、创造性、批判性和实用性的思考
技术性思考,包括相关技术事实和实用工具并预测系统行为的能力;创造性思考,产生思想并看到可能性的能力;批判性思考,评估思想并进行推断的能力;实用性思考,想法付诸实施的能力;
经验22-黑盒测试并不是基于无知的测试
黑盒测试强调的是有关软件的用户和环境知识,测试员对产品了解的越多,了解产品的方式越多,越能够更好的测试。
经验23-测试员不只是游客
测试员可以浏览产品,看看产品是由什么组成,怎么工作,这样做很有价值。
经验24-所有测试都试图回答某些问题
所有测试,都要回答有关现实的产品和应该得到的产品之间的关系的某个问题。主动去发现问题,一切可能导致现实产品与应该产品之间差距的问题都应该注意,并主动推动自己评估测试策略。
经验25-所有测试都基于模型
测试都主要基于模型进行,模型要足够清晰、完整。学会一种对产品建模的新方法,就像是学会了观察产品的一种新方法。测试员对建模艺术越精通,越能够更好地测试。
经验26-直觉是不错的开始,但又是糟糕的结束
直觉可以用作指南,但不能用作合理性证明。
经验27-为了测试,必须探索
即使充分研究了产品,对产品有了很深的了解,仍然要探索问题。因为所有测试都是采样,而且样本必须也不可能完备,探索式思考要在整个测试项目过程中,在寻求
最大化测试价值时起作用。所谓的探索,是指有目的的漫游:带着一般使命在某个空间中漫游,但没有预先确定的路线。
经验28-探索要求大量思索
探索就是侦察,是没有边界的搜索,可以把探索看做是在太空中遨游,需要前向、后向和侧向思索。
经验29-使用诱导推断逻辑发现推测
诱导推断又叫做假设归纳。最佳解释的推理。
经验30-使用猜想反驳逻辑评估产品
虽然我们不能证明猜想是真,缺可以证明猜想是假的。以下三种重要的方式应用于测试:测试的目的是显示产品失效,要比显示正常更有力;有关软件已经形成的信念应该受到质疑;警惕声称以超过测试员所运行的具体测试的方法,检验或确认了产品的测试。
经验31-需求是需要人物所关心的质量或条件
至于测试,产品应该具备或者满足的任何质量或条件都是需求。
经验32-通过会议、推导和参考发现需求
测试员把项目文档看作是唯一需求来源会影响其测试过程,需求信息到达测试员主要有三种途径:会议,推导,参照;很多项目中,优秀的测试员使用的大多数需求要么来自推导,要么来自隐士规格说明的参照。搜寻测试所需的信息,是测试员的工作。
经验33-既要使用显式规格说明,也要使用隐式规格说明
并不是包含测试所依赖重要信息的所有参照都是显式地提供给测试员的.显式规格说明是一个有用的信息来源,经过客户的权威确认;隐式规格说明是没有经过客户权威确认的一个有用的需求信息源。
隐式规格说明包括竞争对手的产品、相关产品、同一产品的老版本、项目团队之间的电子邮件、顾客意见、杂志文章、相关主题的教科书、图形用户界面风格指南、操作系统兼容性需求、测试员自己的丰富经验;客户相信测试员能够使用所需的各种参考资料快速找出重要的问题。
经验34-“它没有问题”真正含义是它看起来在一定程度上满足部分需求
经验35-最后,测试员所能得到的只是对产品的印象
任何时候报告产品质量状态时,都应该用有关测试方法和测试过程的已知局限性的信息,对报告进行限定。
经验36-不要将试验与测试混淆起来
测试是任何至少包含以下四种活动的活动:配置,运行,观察,评估;试验可能有很多种形式,要关注执行这些活动的思考者,关注试验是否很好的完成了预想的策略和测试使命。
经验37-当测试复杂产品时,陷入与退出
当测试复杂和使人畏惧的功能集合时,可间歇进行,经过几个轮次的陷入与退出,就会开始明白产品的模式和轮廓,很快就会在头脑中更系统、更具体的测试和研究策略。
经验38-运用试探法快速产生测试思路
可能的测试用例数量是无限的,选出面临的时间和预算约束条件下有效的少量测试用例,一组好的试探方法有助于测试很快的生成。测试边界,测试所有错误消息,测试与程序员的配置不同的配置,运行比较难设置的测试,避免冗余测试;试探法所能够做的,是为了测试员的思考提出建议。
经验39-测试员不能避免偏向,但是可以管理偏向
多样化可以抵御过强的偏向,如果测试员集体谈论测试问题,可以将一个测试员的偏向降低到最低。
经验40-如果自己知道自己不聪明,就更难被愚弄
任何时候都要注意其他测试员所发现的自己本来也可以但是没有发现的问题。测试时谨慎一点,考虑测试策略时认真一点。
经验41-如果遗漏一个问题,检查这种遗漏是意外还是策略的必然结果
出现问题,先检查下测试的策略是否出现了问题,是否因为忠实地执行了好的策略,只是碰巧没有发现那个特定的问题,可以保持原来的方针不变。如果是遗漏程序错误是因为测试策略关注了错的问题类型,可利用这个机会改进测试策略。
经验42-困惑是一种测试工具
规格说明不清楚吗?产品不清楚吗?用户文档不清楚吗?内部问题难以理解吗?测试员对产品、技术和一般测试问题了解的越多,自己的困惑就会成为更有的指南针,指出重要问题所在。
经验43-清新的眼光会发现失效
测试员在理解了产品或功能部件之后,会在头脑中形成映射,并且头脑不再那么努力工作。对于测试员来说这可能是个问题。
经验44-测试员要避免遵循过程,除非过程先跟随自己
一般来说,测试过程的编写和设计都比较差。
经验45-在创建测试过程时,避免“1287”
过于详细没有什么好处,当编写测试用例时,要避免与测试概念无关的细化。要让未来的测试员有创造性和判断力地执行。让未来的测试员引入变化以使现在所编写的测试过程新鲜,高效。
经验46-测试过程的一个重要成果,是更好,更聪明的测试员
好的测试员永远都在学习,不断加深对产品的了解,提高对产品的反应能力和敏感性。
经验47-除非重新发明测试,否则不能精通测试
不要把自己限制为只是接受智慧的服务者,而应该使自己成为智慧的创造者。永远使头脑运转,观察其它测试员,研究和不断评估如何筛选自己的思想,如果想善于做到这一点,就必须实践。

软件测试理论与经验-第1章(测试员的角色)-第2章(按测试员的方式思考)-阅读笔记相关推荐

  1. 软件测试理论与经验--阅读笔记

    第1章 测试员的角色 测试人员的角色到底是什么?能够定义的很清楚吗? 经验1-测试员是项目的前灯 测试就是要找到信息,有关项目或者产品的关键信息决策都需要根据这些信息来决定. 经验2-测试员的使命决定 ...

  2. 《Java疯狂讲义》第3章(数据类型和运算符):博主李俊德的阅读笔记与知识拓展

    一.问题背景 博主在准备应聘的笔试.面试时,再次采用了多年以来的Java工具书<Java疯狂讲义>,并决定在每章详细复习后都要在博客中写下详细的阅读笔记. 二.阅读笔记与知识拓展--< ...

  3. 软件测试技术指南-第一章软件测试理论(此章完结)

    1.3软件测试基本概念 测试(Test)就是检测特定的目标,是否符号标准而采用专用工具或方法进行验证,并最终得出特定结构,软件测试(Software Testing)伴随着软件的诞生而产生,软件测试就 ...

  4. 测试笔记4:软件测试理论

    目录 1.什么是软件测试 2.软件测试的作用和目的 3.测试原则 4.测试分类 (1)按研发阶段 (2)按测试对象分类 黑盒测试分类 黑盒测试可以发现的错误 黑盒测试优缺点 (3)按测试对象是否运行 ...

  5. 软件测试c语言代码_软件测试理论知多少?

    有源医疗器械很多都是带有软件的,今天一起了解下软件测试理论:软件测试目的,软件测试定义,软件测试原则,软件测试分类,软件测试方法,测试基本流程. 软件测试定义:软件测试(英语:software tes ...

  6. 过来人的亲身经验告诉你,如何从菜鸟晋升月薪过万的测试工程师

    对于测试工程师这个岗位而言,月薪过万并不是一件难事,笔者毕业时的第一份工作便拿到了7K的薪资,如今入职两年,薪资也堪堪过了万元大关. 我周边有不少想要入行这一行业的小伙伴都对我目前的工作和生活状态好奇 ...

  7. 1000个已成功入职的软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(含真实简历模板)

    目录:导读 一.前言:浅谈面试 二.软件测试工程师:简历模板 三.软件测试工程师:简历包装 1.基本信息: 2.教育背景: 3.专业技能 4.工作经历 5.项目经验 6.自我评价 四.软件测试工程师: ...

  8. 精读-软件测试的艺术之调试,极限测试和因特尔应用系统的测试

    本文是关于精读书籍<软件测试的艺术>的一些学习笔记和分享 本书共有九章包括测试思想(心理,经济),代码检查,测试用例设计,模块测试,更高级别的测试,调试,极限测试和因特尔应用系统的测试. ...

  9. 来自28k成功入职字节大佬的软件测试面试题经验分享

    1.请简单做一下自我介绍?[高频] [参考答案] 从这些方面组织语言:从业时间 .教育背景.工作经验 .项目经验 .擅长技能.你的性格尽量与个人简历相一致. [案例] 您好,我叫XX,来自XXXX,X ...

最新文章

  1. python利器怎么用-Python爬虫利器二之Beautiful Soup的用法
  2. 详解vue的diff算法
  3. Spring Cloud笔记
  4. Python继承类的方式实现多线程及控制线程数
  5. js 动态绑定事件 on click 完美解决绑定不成功
  6. sql server charindex函数和patindex函数详解(转)
  7. java_interface的用法_Java注释@interface的用法
  8. Numpy系列(二)对数组按索引查询
  9. day16——oracle灾备2
  10. MATLAB/Simulink 基础入门讲解(一)
  11. cass打开dwg文件无效_CAD文件打开时图形文件显示无效怎么办
  12. MySQL基本架构示意图
  13. 原生Js导出Excel文件
  14. MySQL数据库忽略大小写
  15. vmware设置共享文件夹
  16. echarts 获取点击的y轴数值_四川Y轴前后钢板防护罩哪里卖
  17. 中国哲学简史学习笔记
  18. Proud kids最新测评:1对4的课堂效果怎么样?
  19. 无盘4k剪辑服务器,让无盘服务器提速10倍的SSD解决方案
  20. matlab换热器优化设计,采用MATLAB语言编程对U形管式换热器管板厚度进行优化设计...

热门文章

  1. C++中野指针问题以及如何杜绝野指针
  2. 维纳斯电脑,你现在还好吗?
  3. Windows系统离线安装.NET Framework 3.5(自己做个总结)
  4. mysql官方下载地址
  5. 【TypeScript】TS基础
  6. MySQL报错“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
  7. 【other】idea格式化快捷键ctr+alt+L与qq锁定冲突
  8. Task1:爬虫基础知识
  9. 报错:‘gbk‘ codec can‘t decode byte 0x98 in position
  10. 流浪地球2最少需要投资多少钱?普通人怎样投资正常分账?