Terms used to describe software issues
In the software world, developers, testers, managers, and end users are familiar with the terms 'bug', 'defect', 'error', 'exception', 'fault', and 'failure'. Not all of us use these terms in a technically correct manner.
For example, the word bug is usually intended to mean a defect in software. In informal discussions, the word bug also is used as a synonym for a fault or an error.
For example:
“Have you fixed all the bugs the Testing Team reported last week?” (bug = defect).
“The end users have not encountered any bug in the last six months!” (bug = fault).
“The bug was that the code in my function checked whether the input year was a whole number (which could be either positive or negative).” (bug = error).
The pioneering computer scientist Edgar W. Dijkstra opined that using the word bug was a lame attempt by developers to shrug off the blame associated with the existence of defects in their code, by implying that the defects crept into their code on their own.
The specific terms that we can use are:
Error: a wrong decision made during the development of a software system.
Defect: a property of a software system that causes the system to behave differently from how it was intended to behave.
Fault: an event in which a software system exhibits behaviour different from its intended behaviour.
The causal relationship is as follows:
Errors cause defects, and defects result in faults.