引用:
Originally posted by skinapi at 25-10-2004 17:06:
在MSN上有位测友问到test oracle怎么解释,我的理解是测试准则。在一篇文章中看到如下的说明:
This method—a function that determines if the application has behaved correctly in response to a test act ...
关于testing oracle 在学术界有严格的定义 (当然也有争议)
oracle是对一个程序的formal specification
当给出一个test case 这个specification必须能计算出一个definite value
譬如 对程序P 有一个函数F作为它的specification
对于一个test case t
如果F(t)=d 那d就是用于判断P是否通过t测试的oracle
因为如果用t来运行P 如果结果也等于d 就说明P能通过t测试 如果结果不等于d 就说明P中有一个fault
我觉得“准则”这个词含义好像有点模糊 一些user requirement也能叫做准则 一些设计或编程规范是不是也能叫做准则
而oracle的定义必须是形式化(formal)的 也就是能够通过数学方法来证明的
有一些testing without an oracle或者又称non-testable software的例子
譬如计算sin() cos()之类的numerical program
sin30=0.5大家都知道 但是sin31=?
如果没有一个确定的值来判断程序运算结果是否正确 就是没有oracle