📜  测试预言机

📅  最后修改于: 2022-05-13 01:56:18.385000             🧑  作者: Mango

测试预言机

测试 Oracle是一种不同于程序本身的机制,可用于测试程序输出的测试用例的准确性。从概念上讲,我们可以考虑测试一个过程,其中给出了测试用例和被测程序。然后比较两者的输出以确定程序对于测试用例的行为是否正确。如图所示。

测试需要测试预言机。理想情况下,我们需要一个自动的预言机,它总是能给出正确的答案。然而,预言机通常是人类,他们主要手动计算程序的输出应该是什么。由于通常很难确定行为是否符合预期的行为,因此我们的“人神”可能会犯错误。因此,当程序和结果之间存在不一致时,我们必须在声明结果存在缺陷之前验证预言机产生的结果。

人类预言机通常使用程序的规范来决定程序的正确行为应该是什么。为了帮助 oracle 确定正确的行为,重要的是明确指定系统或组件的行为,并且规范本身没有错误。换句话说,实际上指定了真实和正确的行为。

在某些系统中,预言机是根据程序或模块的规范自动生成的。有了这样的预言机,我们可以确保预言机的输出符合规范。然而,即使这种方法也不能解决我们所有的问题,因为规范中存在错误的可能性。因此,如果规范正确,则从规范生成的神将更正结果,如果出现错误,该规范将不可靠。此外,从规范生成预言的系统需要正式的规范,而这些规范通常在设计期间不会生成。