测试的三部分:
test input
expected output
testing environment
执行测试用例的正常流程是:
谁或什么决定了程序产生的结果是否为失败?一种方式是由人工测试员查看输入并手动计算他们认为输出应该是什么。在这种情况下,人工测试员扮演着一个 test oracle 的角色。
一个 test oracle 是指某个人或某个事物判断程序是否通过了或未通过了该测试用例。当然,它也可以是另一个返回“yes”(表示实际结果不是失败)或“no”(表示实际结果为失败)的程序。
自动化预言可以分为两类:
主动预言(active oracle): 一个程序,给定一个待测试程序的输入,能够生成该输入的期望输出。
被动预言(passive oracle): 一个程序,给定一个待测试程序的输入和该待测试程序产生的实际输出,验证实际输出是否正确。
一般情况下更倾向于使用 被动预言。这有两个主要原因。
Easier Implementation