I don't really understand the concept of a software testing oracle. It says:
An oracle is a mechanism for determining whether the program has passed or failed a test.
Consider the following code:
// class that should be tested
public int sum(int a, int b) {
return a + b;
}
// test class
static Main tester = new Main();
@Test
public void testSum() {
assertEquals("2 + 3 is 5", 5, tester.sum(2, 3));
}
The class that should be tested always returns the sum of 2 integers.
I pass as a parameter 2 and 3, and expect 5. 2 and 3 will be summed up and compared to the expected value (5). In this case the test succeeds.
How exactly can an oracle help me here? Is an oracle involved in this example?
A test oracle is a source of information about whether the output of a program (or function or method) is correct or not.
A test oracle might specify correct output for all possible input or only for specific input. It might not specify actual output values but only constraints on them.
The oracle might be
If not vague, the concept is at least very broad.
An oracle isn't a test runner, but a test runner could use an oracle as a source of correct output to which to compare the system-under-test's output, or as a source of constraints against which to evaluate the SUT's output.
In your example, you used your personal ability to carry out the algorithm of addition as your oracle. Instead, you could use a different implementation of that algorithm as an oracle:
assertEquals("2 + 3 is 5", 2 + 3, tester.sum(2, 3));
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments