Error, Fault, Failure
What is the difference between error, fault and failure in software testing?
Error – a human action that produces an incorrect result. This is also sometimes referred to as Mistake.
Fault – a manifestation of an error in software, also known as Defect or Bug.
Failure – a deviation of the software from its expected delivery or service.
An error is something that a human does, we all make mistakes and when we do whilst developing software, it is known as an error. The result of an error being made is a fault. It is something that is wrong in the software (source code or documentation – specifications, manuals, etc.). Faults are also known as defects or bugs.
When a system or piece of software produces an incorrect result or does not perform the correct action, this is known as a failure. Failures are caused by faults in the software. Note that software system can contain faults but still never fail (this can occur if the faults are in those parts of the system that are never used). In other words, failure is the manifestation of one or more faults (bugs).
Another term that should be understood is reliability. A system is said to be reliable when it performs correctly for long periods of time. However, the same system used by two different people may appear reliable to one but not to the other. This is because the different people use the system in different ways.
Reliability: the probability that the software will not cause the failure of the system for a specified time under specified conditions.
The definition of reliability therefore includes the phrase ‘under specified conditions’. When reporting on the reliability of a system it is important to explain under what conditions the system will achieve the specified level of reliability. For example, a system may achieve a reliability of no more than one failure per month providing no more than 10 people use the system simultaneously.