软件测试理论与经验-第1章(测试员的角色)-第2章(按测试员的方式思考)-阅读笔记_lessons learned in software testing_斜杠方子的博客-程序员秘密

技术标签: 测试理论  测试方子  读书分享--测试书籍  测试经验  测试杂谈--测试技术  测试技术  测试员的角色  测试员思考  

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- 除非 重新 发明测试,否则不能精通测试
不要把自己限制为只是接受智慧的服务者,而应该使自己成为智慧的 创造者。永远使头脑运转,观察其它测试员,研究和不断评估如何筛选自己的思想,如果想善于做到这一点,就必须 实践
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zimingzim/article/details/80681717

智能推荐

超定方程组最小二乘法(内含代码)_hvolunteer的博客-程序员秘密

超定方程组最小二乘法今天做了一个计算方法的作业,在网上没有找到类似的参考资料,很多同学用Python直接调用库函数来写很方便,但是我认为用c或者c++来写对初学者来说是更大的锻炼;代码已经调试好了,可以顺利运行,有需要的小伙伴可以拿去参考,用不懂得可以私信我;//超定方程组最小二乘法 #include<iostream>#define SIZE 20 //预定义要进行转置的矩阵最大 大小

【Google Protocol Buffers】Protocol Buffer基础:C++篇_ghlfllz的博客-程序员秘密

注:这是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/)This tutorial provides a basic C++ programmer's introduction to working with protocol buffers. By walking through creating a

使用idea搭建SpringCloud项目(及所遇到的坑)_使用idea2022 创建cloud的项目_奇怪的大象的博客-程序员秘密

Spring Cloud简介Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。东西虽好,坑也不少Spring cloud特别要注意版本和spring boot版本的兼容性 及其版本中的jar是否缺少,感觉有些版本好多坑。大版本对应关系不同版本搭建体验千差万别。最好不要使用最新版本。SNAP

spark RDD_Knuth1989的博客-程序员秘密

RDD 是Resilient Distributed Datasets简称,翻译成中文为“弹性分布式数据集”,这个语义揭示了RDD实质上是存储在不同节点计算机中的数据集。分布式存储最大的好处是可以让数据在不同的工作节点上并行存储,以便在需要数据的时候并行运算,从而获得最迅捷的运行效率。RDD名称的秘密Resilient 是弹性的意思。在Spark中,弹性指的是数据的存储方式,即

以此之长,补彼之短----AOP(代理模式)_以此之长补齐所短_hanruikai的博客-程序员秘密

上文中提到代理分为静态代理和动态代理,采用代理是为了通过不修改源代码的情况下给程序动态统一添加功能,利用代理技术可以将业务逻辑中一些非业务逻辑的代码分离出来,把他们独立到业务逻辑类外,比如日志记录,性能统计,安全控制,事务处理,异常处理等。这样做,不仅降低了业务逻辑和非业务逻辑的耦合性,提高程序的可重用性,同时提高了开发的效率。 下面以添加日志记录为例,分析静态代理的使用。创建一个用户管理

HDU 2.1.1最小公倍数_hao5743的博客-程序员秘密

http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=1

随便推点

查看一下oracle数据库软件已经安装的组件(视图dba_registry)_查看oracle安装哪些组件_haiross的博客-程序员秘密

我们先用如下SQL 查看一下DB中的组件:SQL&gt; col comp_id for a15SQL&gt; col version for a15SQL&gt; col comp_name for a30SQL&gt; select comp_id,comp_name,versionfrom dba_registry ;COMP_ID COMP_NAME VERSION

C# WinForm开发系列之如何使用panel控件制作左侧导航菜单_c#左侧导航菜单_想念-忘记了的博客-程序员秘密

之前需要写一个C#的左侧导航菜单控件,想了许久,最终选择了使用paenl控件来实现这一功能。决定和大家分享一下,初步接触C#,欢迎多多指教,不胜感激!首先,我的思路分为以下几步:一.使用vs编辑工具创建一个导航菜单控件;如图1所示:图1二.在菜单控件上布局你的导航菜单控件的样式;其结构如图2所示,(我是通过5个panel控件和两个label控件组成):

linux安装mongodb,实测好用_linux 验证mongodb_归来仍是少年805的博客-程序员秘密

正在上传…重新上传取消方式一将tgz包下载到本地,然后用XFtp工具上传到服务器;方式二拷贝下载链接,直接在服务器上下载,命令如下wgethttps。

程序员面试100题---3.求子数组的最大和_给思维做按摩的博客-程序员秘密

程序员面试100题---3.求子数组的最大和问题描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10,-4, 7, 2,因此输出为该子数组的和18。问题分析:

noi-7911-ISBN号码_mahz666的博客-程序员秘密

ISBN号码总时间限制: 1000ms 内存限制: 65536kB描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表

java入门篇--字符串操作(下)_Technology丶的博客-程序员秘密

前言:继上篇。StringBuffer的使用--  StringBuffer相对于String操作更为复杂一点,但是其中的好处是不言而喻的,首先他的运行效率就比String快很多(节约了内存),其次他是线程安全的。创建StringBuffer-  首先StringBuffer做为一个对象而言当然是new出来的,举例: StringBuffer sb1=new StringBu

推荐文章

热门文章

相关标签