A fault (defect) is introduced into the software as the result of an error. It is an anomaly in the software that may cause it to behave incorrectly, and not according to its specification. Faults or defects are sometimes called “bugs.” Use of the latter term trivializes
the impact faults have on software quality. Use of the term “defect” is also associated with software artifacts such as requirements and design documents. Defects occurring in these artifacts are also caused by errors and are usually detected in the review process.
A failure is the inability of a software system or component to perform its required functions within specified performance requirements [2].
During execution of a software component or system, a tester, developer, or user observes that it does not produce the expected results. In some cases a particular type of misbehavior indicates a certain type of fault ispresent. We can say that the type of misbehavior is a symptom of the fault. An experienced developer/tester will have a knowledge base of fault/symptoms/failure cases stored in memory.
Incorrect behavior can include producing incorrect values for output variables, an incorrect response on the part of a device, or an incorrect
image on a screen. During development failures are usually observed by testers, and faults are located and repaired by developers. When the software is in operation, users may observe failures which are reported back to the development organization so repairs can be made.
A fault in the code does not always produce a failure. In fact, faulty software may operate over a long period of time without exhibiting any