I know the definition of an testing oracle but to me, it seems to be overrated. I have a specification, why should I bother with thinking about oracles? I just compare what the spec wants and what the program does. Or I have the use cases, whatever. When I read about oracles in books, it looks as if it a science on its own. Is there anything more behind this concept? Maybe I just did not understand its point.
An oracle consists of a generator and a comparator. What is the meaning of the comparator if you just check whether an actual output equals to an expected output? How else could it be checked?