由于随机测试程序只能发现那些毁坏应用程序的错误,因此测试员3仍然不得不做大量手动测试,并很快在这个过程中感到乏味和反应迟钝。当软件发布后用户在软件中发现如此多的功能性错误而对公司丧失信任,于是停止购买这种软件。
? 测试员4
通过从手动测试、探索式测试开始熟悉了应用程序――用手动测试中所获得的知识来为应用程序创建一个非常简单的行为模型。测试员4接着使用一个测试程序来测试应用程序的行为是否和模型预测的一致。行为模型相比被测的应用程序要简单的多,因此它很容易创建。由于测试程序知道应用程序应该怎样做,因此当应用程序犯了错误时它能够检测到。
随着产品周期的发展,开发人员为应用程序写出了新的特性。测试员4很快更新了模型,测试得以继续进行。程序白天和晚上都可以运行,持续生成新的测试序列。测试员4可以一次在多台机器上执行测试,将多天的测试放到一个晚上来完成。
经过几轮测试和错误修复后,测试员4的测试生成程序开始发现很少的错误。测试员4为了测试增加的行为更新了模型,然后继续测试。测试4也会为应用程序中那些不值得建模的部分做一些手动的测试和静态自动化测试。
当测试员4的软件发布出来后,只有非常少的错误能被发现了。用户感到高兴。投资者感到高兴。
测试员4感到高兴。
? 评注
这四个场景展现出了当前软件测试中可用的一些方法。
测试员 1 是一个典型的手动测试者,从键盘手动运行所有的测试。手动测试在当前的工业界很普遍――它能提供直接的好处,但长时间的运行会让测试人员感到单调乏味,对公司来讲成本高。
“我看到的最悲哀的景象之一就是一个人在键盘上手动操作一些可以自动运行的东西。这是悲哀的但也是有趣的。”
--Boris Beizer,黑盒测试:软件和系统功能测试技术
测试员 2 实践的是我称为静态测试自动化的测试。静态自动化脚本每次根据同样的次序执行同样的命令序列。当应用程序发生变化时这些脚本的维护成本很高。测试是不断重复的;但由于它们总是执行相同的命令,因此它们很难发现新的错误。
“高度重复的测试实际上将发现所有重要问题的几率最小化了,这和沿着别人的足迹前行将发现自己的天地的几率最小化的原因是一样的”
--James Bach,“骗人的测试自动化,”Windows技术期刊,1996.10
测试员 3 的操作接近于自动化测试的边缘。这些类型的随机测试程序被称为蠢猴因为它们就是毫无目的的敲打键盘。它们生成非常规的测试执行序列并发现很多致命的错误,但是想控制它们到应用程序中你想测试的部分却是很困难的。因为它们不知道自己在做什么,所以它们会漏过应用程序中很多明显的错误。
“猴子式的测试不能是你测试的全部。猴子不明白你的应用程序,由于它们的无知它们漏掉了很多错误。”
--Noel Nyman,“使用猴子式的测试工具,”SQTE,2004.1/2
文章来源于领测软件测试网 https://www.ltesting.net/