什么是测试?测试到什么地步才是尽头?

此成熟度理论由 Boris Beizer 提出(他自己叫阶段,不过现在称为级别)

级别0 - “测试和调试没有区别。”除了支持调试之外,测试没有任何目的。可能会偶尔发现缺陷,但没有正式的方法去找出它们。

级别1 - “测试的目的是证明软件能工作。”这个观点的前提是基于软件基本上是正确实现的,因此很容易导致人们无法发现缺陷。Glenford Myers 指出这个观点会导致我们去选择不会失败的测试用例,而不会构造古怪的用例去发现深层次的问题。

级别2 - “测试的目的是证明软件不能工作。”这是一种非常不同的心态,它假设软件不工作,促使测试人员去发现缺陷。在这种观点指引下,我们会有意识地选择系统边缘、异常部分、角落和缝隙来构造古怪的用例。

级别3 - “测试的目的不是为了证明什么,而是降低系统不工作的风险到可接受范围。”虽然我们可以证明一个系统只有一条测试用例的错误,但却永远不可能证明系统是没有问题的,为此我们需要测试所有有效输入和无效输入的组合。我们的目标是依据缺陷评估软件质量,为程序员提供有关软件缺陷的信息,和给管理者一个如果我们在当前状态将系统交付给客户,会对我们组织造成怎样负面影响的评估。

级别4 - “测试不是一种行为,它是一种无需太多测试就能开发出低风险软件的精神准则。”在这个成熟度级别上,我们专注于让软件从一开始就更易于测试。这包括对其需求、设计和代码的审查,另外,还意味着要编写在执行测试时可以轻松使用的工具。进一步来说,包括编写自测代码,主动报告错误,而不是要求测试人员发现它们。