Possible Duplicate:
Difference between defect and bug in testing

In computer science technical writing, especially in software engineering, what's the difference between fault, error and defect?

I want to quote an answer on Stack OverFlow by Daniel Joseph:

To quote the Software Engineering Body of Knowledge

Typically, where the word “defect” is used, it refers to a “fault” as defined below. However, different cultures and standards may use somewhat different meanings for these terms, which have led to attempts to define them. Partial definitions taken from standard (IEEE610.12-90) are:

Error: “A difference…between a computed result and the correct result”

Fault: “An incorrect step, process, or data definition in a computer program”

Failure: “The [incorrect] result of a fault”

Mistake: “A human action that produces an incorrect result”

Based on my understanding of above definition, error is the result of fault, i.e., failure. Could someone explain more clearly?

  • 1
    I strongly suspect the answer is nothing, except in papers that explicitly invoke IEEE610.12-90.
    – JeffE
    Commented Jan 20, 2013 at 22:31
  • 5
    In IEEE610.12-90's definitions the key word that differentiates an error from a fault is "computed". An error is an incorrect result of a completed computation, a fault is an incorrect step that prevented computation from completing (e.g. a syntax error).
    – yannis
    Commented Jan 21, 2013 at 4:42
  • 1
    The answer is "it depends on whose vocabulary you are using" and this question sure is not a duplicate of "Difference between defect and bug in testing". Commented Sep 7, 2014 at 8:56
  • 3
    How is this a duplicate? This is a completely different question, and deserves its own place.
    – mafu
    Commented Feb 14, 2016 at 14:40

2 Answers 2


According to Fundamental Concepts of Dependability:

A system failure is an event that occurs when the delivered service deviates from correct service. A system may fail either because it does not comply with the specification, or because the specification did not adequately describe its function. An error is that part of the system state that may cause a subsequent failure: a failure occurs when an error reaches the service interface and alters the service. A fault is the adjudged or hypothesized cause of an error.

I understand defect as just another name for fault.

Bug is confusing and can represent a fault or a failure depending on the context.

  • Defect is a special case of a fault. Other common fault types include hardware malfunction and misconfiguration. Commented Oct 13, 2015 at 8:20
  • @JirkaHanika - How would you define defect ?
    – mouviciel
    Commented Oct 13, 2015 at 11:01
  • I meant software defects (something wrong in source code). Faults include software defects, hardware malfunctions, misconfigurations. Hardware malfunctions can result from design issues, manufacturing issues, lack of maintenance, power fluctuations, ESD, interference, impact damage and so on. Design issues may include firmware defects which are just software defects on another level, but you might not know that when you trace a system failure to a hardware malfunction. It's quite common that a system failure involves a cascade of various faults, triggered by one of them or by external input. Commented Oct 13, 2015 at 14:21
  • Do you agree with my following interpretation of that fragment? 1) If we are talking about software, fault is a part of source code and/or a design, it is a "static thing" 2) error is a state of a runtime, "a dynamic thing" 3) generally, a fault causes a chain of errors 4) a failure is an observable error
    – Alexey
    Commented Sep 8, 2019 at 17:33
  • @Alexey: Exactly.
    – mouviciel
    Commented Sep 8, 2019 at 18:08

With reference to the definitions used in the linked article, an error is not the result of a fault, but potentially the cause - if the error is outside of the tolerance of the system. Most systems dealing with real data have some degree of error, but are designed to tolerate them.