(一)软件测试员的思考问题方式

发表于:2008-3-04 17:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  测试员有很多不同的背景,测试团队是多元化的集体,但是大多数人都同意:测试员的思考方式是不同的。怎么不同?有人说测试员是“消极”思维者。测试员会抱怨这种说法,认为自己喜欢征服,他们在报告坏消息时有一种特别的兴奋感。这是—种普遍观点。我们提出另一种观点。测试员并不抱怨,他们提供的是证据。测试员并不喜欢征服,他们喜欢打破产品没有问题的幻觉。测试员并不喜欢发布坏消息,他们喜欢把客户从虚假信念中解放出来。我们的观点是,按测试员的方式思考意味着实践认识论。测试运用的是认识论,不是靠傲慢或谦卑。

  本章旨在把测试员的大脑开发成经过仔细调谐的推理机器。请记住:要用精神力量做好事,而不做坏事。

经验16,测试运用的是认识论

  读者看到这个题目会说:嘿,回来!我们在这里不是要讨论对电影明星的新崇拜。请相信我们。认识论是能够帮助测试员更好测试的一个哲学分支。

  认识论研究如何认识所了解的东西:研究证据和推理。这是科学实践的基础。研究认识论的人有科学家、教育家和哲学家,当然还有精英级的软件测试员。学习认识论的学生研究科学、哲学和心理学,目标是了解怎样才能改进我们的思维。我们使用的术语比经典定义要宽,以便能够更多地利用批评性思维的最新成果。将认识论运用于软件测试,要问与以下类似的问题:

·怎么知道软件足够好?

·如果软件并不是足够好,怎样才能知道?

·怎么知道已经完成了足够的测试?

  苏格拉底早在2400年前就提倡并描述了对信念的批判性观察,因此我们把他看作是最早的认识论者。直到今天,哲学家、科学家和心理学家都还在继续研究认识论。作为测试员,这就是我们的遗产。

经验17,研究认识论有助于更好测试

  直接与软件测试有关的认识论问题包括:

·如何收集和评估证据。

·如何进行有效的推论。

·如何使用不同逻辑形式。

·拥有合理的信念意味着什么。

·形式和非形式推理之间的差别。

·非形式推理的常见谬误。

·自然语言的含义与模糊性。

·如何做出好的决策。

  从来也没有研究过这些问题的很多人也能测试得很好,但是如果要做得比很好还好,就要研究这些问题。研究认识论可帮助测试员设计有效的测试策略,更好地意识到自己工作中的错误,理解自己的测试能够证明什么、不能证明什么,并编写出无懈可击的测试报告。

  以下是三本具有很高可读性的入门书:

·《批判性思维的工具:心理学的元思想》(Tools of Critical Thinking:Metathoughts for Psychology)(Levy l997)。这本书是针对精神病医生写的,但是对测试员也很有用。书中每一章都是有关更好思维的不同思想。不一定把它全读完,可以挑选任何一章阅读。

·《思考与决策》(Thinking and Deciding)(Baron l994)。这是讨论思维世界的一本可读性很高的普通教科书,是很好的入门书。

· 《研究的技巧》(The Craft of Research)(Booth、Colomb和Williams 1995)。    这是一本有关批判性阅读和写作的很好的书籍,包括如何组织有说服力的论据。主要针对大学生读者。

经验18,认知心理学是测试的基础

  如果说认识论告诉我们的是应该怎样思考,那么认知心理学告诉我们的是我们是怎样思考的。与测试有关的一些问题包括:

·人的感觉和记忆可靠性。

·信念从哪里来。

·信念如何影响人的行为。

·做出决策所使用的偏见和捷径。

·如何了解并分享所知道的信息。

·如何考虑复杂事情。

·在压力下如何思考。

·如何识别模式。

·如何把想法和事物分类。

·如何注意事物之间的差别。

·记忆事件中的失真。

·如何重新构建部分记忆的事件(例如不可再现的程序错误)。

  从来也没有研究过这些问题的很多人也能测试得很好,但是如果要做得比很好还好,就要研究这些问题。研究认知心理学有助于理解影响测试员工作成绩的因素,以及影响人们解释自己工作方式的因素。

  开始研究认知心理学,不能不看《旷野中的认知》(Cognition in the wild)(Hutchins 1995)。Hutchins研究海军航海团队,以及他们怎样协同工作。这本书的很多内容也都与软件项目和测试团队有关。

  有关思考心理学的一本有用的书是《理论与证据:科学推理的能力的开发》

  (Theory and Evidence:The Development of Scientific Reasoning)(Koslowski 1996)。在这本书中,Koslowski研究了人们如何使用因果关系理论进行系统推理。这可以解释为什么测试不只是查看外部行为,并对照简单的预期描述进行检查。

经验19,测试在测试员的头脑中

  优秀测试和平庸测试之间的差别在于测试员如何思考:测试员的测试设计选择,解释所观察到的现象的能力,以及非常令人信服地分析描述这些现象的能力。测试的其他工作大部分是一般的办公室工作。如果看到两个测试员并排工作,不一定能看出谁的测试更好。他们工作中能够看得到的部分外表相同,这说明:

·很多人认为测试很容易,因为可以很容易地模仿优秀测试员的外表看得到的行为,并且他们没有好的测试的其他标准。

·如果要成为优秀测试员,就要学会像优秀测试员那样思考,而不是模仿他们的行为。

经验20,测试需要推断,并不只是做输出与预期结果的比较

  流行的观点认为,测试员只是执行测试用例,并对照预期结果比较执行结果。这种观点把测试看作是简单的比较活动,没有看到一些聪明人必须设计测试,并确定预期输出。想想看,测试设计人员几乎从来没有得到过应该测试什么的权威指导,更不要说应该期望什么了。可以得到的指导是要解释的主体。在现实生活中,大多数测试设计都是基于推断,或基于与测试员的推断有关的经验。不仅如此,这些推断还要随时间发生变化。像测试员那样思考,就是要掌握探索式推断的艺术。

  探索式推断听起来可能像是奇怪的想法,这意味着要以一种不能事先预测的方式,通过一种思想引出另一种思想,然后再引出下一种思想。有关探索式推断的一本很好的书是《证明与反驳:数学发现的逻辑》(Proofs and Refutations:The Logic of Mathematical Discovery)(Lakatos,1976)。关于这本书需要注意的是,Lakatos如何说明数学和科学推理过程是探索式的,而不是脚本化的。甚至数学家也是积极探索地推理,而不是通过运用枯燥的公式。他们像测试员那样思考!
经验21,优秀测试员会进行技术性、创造性、批判性和实用性地思考

  各种类型的思考都要考虑测试的实施。但是我们认为需要提出四种主要思考:

·技术性思考。对技术建模并理解因果关系的能力。这包括诸如相关技术事实的知识和使用工具并预测系统行为的能力。

·创造性思考。产生思想并看到可能性的能力。测试员只能以能够想像得到的方式进行测试,只能寻找猜想会存在的问题。

·批判性思考。评估思想并进行推断的能力。这包括在自己的思考中发现并消除错误的能力,将产品观察与质量准则关联起来的能力,以及针对特定信念或所建议的行动过程构建有说服力的测试用例的能力。

·实用性思考。把想法付诸实施的能力。这种能力包括诸如运用测试工具,并使测试手段和力量与项目范围适应的技能。

  总之,像测试员那样思考,会最终导致相信事物可能不像外表看起来那样。不管事物是怎样的,都可能有差别。我们发现,当测试过程以最具破坏性的方式失败时,根本原因最有可能是视野狭窄。换句话说,这不是运行了一万个测试,而本来应该运行一万零一个的问题;问题是没有想像出测试的总体大纲,没有做即使有两倍时间和资源也不会做的测试。

经验22,黑盒测试并不是基于无知的测试

  黑盒测试意味着产品内部知识在测试中不起重要作用。大多数测试员都是黑盒测试员。为了做好黑盒测试.就要了解用户,了解他们的期望和需要,了解技术,了解软件运行环境的配置,了解这个软件要与之交互的其他软件,了解软件必须管理的数据,了解开发过程等等。黑盒测试的优势在于测试员可能与程序员的思考不同,因此有可能预测出程序员所遗漏的风险。

  黑盒测试强调有关软件的用户和环境知识,这一点并不是所有人都喜欢的。我们甚至把黑盒测试描述为基于无知的测试,因为测试员自始至终都不了解软件内部代码。我们认为这反映出对测试团队角色的根本误解。我们不反对测试员了解产品的工作原理。测试员对产品了解得越多,了解产品的方式越多,越能够更好地测试它。但是,如果测试员主要关注的是源代码,以及能够从源代码导出的测试,则测试员所做的工作也许就是程序员已经做过的,并且测试员关于这些代码的知识要少于程序员。
经验23,测试员不只是游客

  测试员对产品做的大量不是测试的事,有助于测试员对产品的了解。测试员可以浏览产品,看看产品由什么组成,怎么工作。这样做有很高价值,但这不能算是测试。测试员和游客之间的差别在于,测试员把精力放在评估产品上,而不只是见证产品。虽然不必事先预测产品应该表现出的行为,但是试验产品能力的活动还没有成为测试,除非而且直到测试员运用某种如果问题存在就能标识的原理或过程时,这种活动才能成为测试。

经验24,所有测试都试图回答某些问题

  所执行的所有测试,都是要回答有关现实的产品和应该得到的产品之间关系的某个问题。有时测试员完全没有意识到自己在回答问题。如果测试员只是在寻找明显的问题可能还好,但是在很多情况下,问题并不会闪烁着“请报告我”的提示自己跳出来。产品的有些错误行为用户可能一眼就会看出,尽管测试员可能没有注意到。在任何测试活动中,都要问自己什么样的问题应该推动自己评估测试策略,否则就会更像是游客,而不是测试员。
经验25,所有测试都基于模型

  测试员在设计测试时,头脑中可能会有一个想像的图景,也可能有功能清单或某种图表。测试员会有谁是用户、用户关心什么的一些概念。所有这些都是模型。不管模型是什么,测试都主要基于产品模型进行,而不是实际产品。有缺点的模型会产生有缺点的测试。学会一种对产品建模的新方法,就像是学会了观察产品的一种新方法。

  要研究建模问题。测试员对建模艺术越精通,越能够更好地测试。有关需求分析和软件体系结构的教科书和课程会有所帮助。获得各种建模技能的一种很好方法就是研究系统的思考。请参阅《通用系统思考引论:25周年版》(An Introduction to General Systems Thinking :Silver Anniversary Edition)(Weinberg  2001)。

经验26,直觉是不错的开始,但又是糟糕的结束

  测试员很想根据自己的直觉使用具体的测试数据,或判断具体的输出,即测试员自己知道的“本能感觉”,即使说不出来使用这些知识的合理性的理由。我们认为这是有用的感觉,但是只是在开始时更有用,而不是在其他时候。

  除了直觉有很强的偏见这个事实之外,真正的问题还在于测试员试图让其他人(例如程序员和经理)认真地对待自己的错误报告和质量评估。除非这种发现是基于大家都有的直觉,否则测试员的工作建议很可能不被采用。

  因此.我们建议把直觉用作指南,但不能用作合理性证明。当有“这是问题,因为它显然是问题”的想法时,可考虑换一种方式;“这是问题,因为我观察到产品行为与需求x、Y和z矛盾,而我的客户很看重这些需求。”

31/3123>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • kilikulu
    2008-3-14 12:27:01

    将测试上升到心理学的高度,好文,收藏

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号