有时复杂性可能是无法抗拒的。测试员的意志可能会被击垮。因此,当要测试复杂和使人畏惧的功能集合时,可间歇进行。人的头脑具有处理复杂问题的惊人能力,但是不要指望马上就能理解复杂产品。可试着先研究复杂产品30分钟或一个小时,然后停下来干点别的。这就是陷入与退出(P1unge in and quit)法。不要担心在这段不长的时间内效率不高,如果觉得问题太多,则尽快退出。
这种方法的优点是,除了选择产品的一部分并研究外,绝对不需要计划。经过几个轮次的陷入与退出,就会开始明白产品的模式和轮廓,很快就会在头脑中更系统、更具体地测试和研究策略。这种方法很神奇。最终,会掌握足够的知识以设计全面的测试计划,如果认为这些计划能够完成自己的任务。
经验38,运用试探法快速产生测试思路
试探法(hcuristic)是一种经验规则,是一种基于经验做出猜测的方法。这个词源自希腊语,表示“开始发现”。试探法并不能保证得到正确的答案或最佳答案,但是很有用。最早运用试探法的著作是《如何解决它》(How to Solve it)(Polya l957)。
出于可能的测试用例数量是无限的,因此肯定要选出在所面临的时间和预算约束条件下有效的少量测试用例。有经验的测试员会收集并共享能够改进其猜测质量的测试试探方法。一组好的试探方法有助于很快地生成测试。以下是采用试探法测试的一些例子:
·测试边界。边界更有可能暴露规格说明的模糊问题。
·测试所有错误消息。错误处理代码与主流功能代码相比,一般比较弱。
·测试与程序员的配置不同的配置。程序员已经偏信自己的配置没有问题。
·运行比较难设置的测试。在其他条件相同的情况下,易于设置的测试更有可能已经被执行过。
·避免冗余测试。如果某个测试实际上是重复其他软件测试,就不会产生新价值。
为了明智地运用试探法,请注意:试探法中并没有智慧,智慧来自测试员。试探法所能够做的,只不过就是为测试员的思考提出建议。盲目使用自己并不了解的试探法并不是好的测试实践。在收集测试方法时,要了解每个方法背后的原理,以及更适用和不太适用的条件。
经验39,测试员不能避免偏向,但是可以管理偏向
测试员是有偏向的,这使得测试员选择一部分测试的可能性要比其他测试大。如果有一个很长的编辑字段,测试员也许更可能输入诸如1111111111,而不是3287504619,因为输入字符重复的字符串,要比从0到9随机选择数字更容易。也许这是一种很小的偏向,但仍是一种偏向。更糟的偏向是,大多数测试员倾向于测试最可视的功能,不管是不是最重要的功能。此外,大多数测试员还倾向于考虑认为与自己类似的用户,倾向于使用非常简单、非常荒谬的输入,而不是具有中等复杂度的现实输入。
以下是一些常见偏向:
·同化偏向。更有可能把未来的测试结果解释为总体上证实自己对产品的看法。
·证实偏向。更有可能关注确实会证实自己对产品看法的测试结果。
·可用性偏向。如果头脑中已经想到一种用户以某种方式操作的场景,则更 有可能认为这种操作更常出现。
·最初印象偏见。更信任所做的第一次观察。
·最新印象偏见。更信任所做的最近一次观察。
·框架效应。对错误报告的反应与措辞有很大关系,不管其真正含义如何。
·知名偏向。把碰巧认识的用户意见放在更重要酌地位。
·表达偏向。期望较小的问题也许有较小的原因,而严重问题会有大原因。
测试员不能避免这些偏向,因为这些偏向在很大程度上已经固化在头脑中。测试员能够做的是管理偏向。例如,只需通过研究偏向并在实践中注意,这样在思考时就可以更好地进行补偿。多样化也可以抵御过强的偏向。如果测试员集体谈论测试问题,可以将一个测试员的偏向降低到最低限度。
根据定义,试探法也是一种偏向。使用试探法,是因为其偏向可以以比较好的方式引导测试员。