软件测试员的思考问题方式[4] 软件测试
·创造性思考。产生思想并看到可能性的能力。测试员只能以能够想像得到的方式进行测试,只能寻找猜想会存在的问题。
·批判性思考。评估思想并进行推断的能力。这包括在自己的思考中发现并消除错误的能力,将产品观察与质量准则关联起来的能力,以及针对特定信念或所建议的行动过程构建有说服力的测试用例的能力。
·实用性思考。把想法付诸实施的能力。这种能力包括诸如运用测试工具,并使测试手段和力量与项目范围适应的技能。
总之,像测试员那样思考,会最终导致相信事物可能不像外表看起来那样。不管事物是怎样的,都可能有差别。我们发现,当测试过程以最具破坏性的方式失败时,根本原因最有可能是视野狭窄。换句话说,这不是运行了一万个测试,而本来应该运行一万零一个的问题;问题是没有想像出测试的总体大纲,没有做即使有两倍时间和资源也不会做的测试。
经验6,黑盒测试并不是基于无知的测试
黑盒测试意味着产品内部知识在测试中不起重要作用。大多数测试员都是黑盒测试员。为了做好黑盒测试.就要了解用户,了解他们的期望和需要,了解技术,了解软件运行环境的配置,了解这个软件要与之交互的其他软件,了解软件必须管理的数据,了解开发过程等等。黑盒测试的优势在于测试员可能与程序员的思考不同,因此有可能预测出程序员所遗漏的风险。
黑盒测试强调有关软件的用户和环境知识,这一点并不是所有人都喜欢的。我们甚至把黑盒测试描述为基于无知的测试,因为测试员自始至终都不了解软件内部代码。我们认为这反映出对测试团队角色的根本误解。我们不反对测试员了解产品的工作原理。测试员对产品了解得越多,了解产品的方式越多,越能够更好地测试它。但是,如果测试员主要关注的是源代码,以及能够从源代码导出的测试,则测试员所做的工作也许就是程序员已经做过的,并且测试员关于这些代码的知识要少于程序员。
经验7,测试员不只是游客
测试员对产品做的大量不是测试的事,有助于测试员对产品的了解。测试员可以浏览产品,看看产品由什么组成,怎么工作。这样做有很高价值,但这不能算是测试。测试员和游客之间的差别在于,测试员把精力放在评估产品上,而不只是见证产品。虽然不必事先预测产品应该表现出的行为,但是试验产品能力的活动还没有成为测试,除非而且直到测试员运用某种如果问题存在就能标识的原理或过程时,这种活动才能成为测试。
经验8,所有测试都试图回答某些问题
所执行的所有测试,都是要回答有关现实的产品和应该得到的产品之间关系的某个问题。有时测试员完全没有意识到自己在回答问题。如果测试员只是在寻找明显的问题可能还好,但是在很多情况下,问题并不会闪烁着“请报告我”的提示自己跳出来。产品的有些错误行为用户可能一眼就会看出,尽管测试员可能没有注意到。在任何测试活动中,都要问自己什么样的问题应该推动自己评估测试策略,否则就会更像是游客,而不是测试员。
经验25,所有测试都基于模型
测试员在设计测试时,头脑中可能会有一个想像的图景,也可能有功能清单或某种图表。测试员会有谁是用户、用户关心什么的一些概念。所有这些都是模型。不管模型是什么,测试都主要基于产品模型进行,而不是实际产品。有缺点的模型会产生有缺点的测试。学会一种对产品建模的新方法,就像是学会了观察产品的一种新方法。
要研究建模问题。测试员对建模艺术越精通,越能够更好地测试。有关需求分析和软件体系结构的教科书和课程会有所帮助。获得各种建模技能的一种很好方法就是研究系统的思考。请参阅《通用系统思考引论:25周年版》(An Introduction to General Systems Thinking :Silver Anniversary Edition)(Weinberg 2001)。