The first term I want to define, is failure.
A failure is an observable incorrect behavior of the software.
It is conceptually related to the behavior of the
program, rather than its code. The second term I want
to introduce is fault, which is also called bug.
And the fault or bug, is an incorrect piece of
code. In other words, a fault is related to
the code. And is a necessary, but not sufficient condition
for the occurrence of a failure. The final
term I want to introduce is, error. Where an
error is the cause of a fault. It is
usually a human error, which can be conceptual. A
typo or something along those lines. And know that
this terminology, failure, fault and error, is the official
[UNKNOWN] terminology. So you cannot go wrong if you
use it. Now, let me illustrate the difference between
failure, fault and error. Using a small example. What I'm showing here is
a small function that, as you can see from its name, takes an
integer parameter i. And is supposed to double the value of i, and
return it. As we can clearly see, this is not what the function does.