Based on Doug Hoffman’s notes, we explain why it is not possible to have complete oracle. The post is aligned with the Black Box Software Testing Foundations course (BBST) designed by Rebecca Fiedler, Cem Kaner, and James Bach.
Complete oracle is an authoritative mechanism for determining whether the program passed or failed. The advantage is obvious, we can detect all types of errors. All tests could be automated because we know all checks that need to be automated. A disadvantage is that there is no such thing as a complete oracle.
Why is complete oracle unicorn?
The first problem is the completeness. For example, if one of the application features is text color. It is not possible to check if the application supports all known colors because this would take a lot of time. Another problem is how to define a mechanism to check that color is properly displayed. Color requires human eyes and brain to be manifested, so each attempt to model the color in the program is an approximation.