Software failure
A software failure is the observable event in which a running program deviates from its required behaviour: a crash, a wrong result, a missing response, a page that never loads. Failure is the third link in a chain: a human error introduces a defect into the code, and the defect produces a failure when execution reaches it. Users see failures; developers fix defects.
The longer version
An error, sometimes called a mistake, is what a person does: misreads a requirement, mistypes a condition, forgets a case. The result is a defect, also called a fault or bug, a flaw sitting in the code, configuration or design. The defect does nothing until execution reaches it under the conditions that trigger it, and then the program produces a failure: output or behaviour that a user or a test can see is wrong. One defect can produce many different failures, and one failure can be caused by several interacting defects. A failure can also have an environmental cause, a hardware fault or a network outage, with no defect behind it.
The distinction matters because reports describe failures and fixes address defects, and the translation between them is the whole job of diagnosis. 'The total on the invoice is wrong' is a failure. The defect might be a rounding rule applied in the wrong currency, a discount applied twice, or a stale cache, and each of those is a different fix in a different file. Testing finds failures; debugging finds defects. Confusing the two produces tickets closed as fixed because one symptom went away while the defect stayed and surfaces again as a different failure next month.
Failures also differ in how much they say about their cause. A crash with a stack trace points straight at the line. A silent wrong number, with no exception and nothing in the console, points at nothing, and the developer has to reconstruct the state that produced it from whatever the report captured. Failures that only appear in production, under real data and real timing, are the hardest to trace and are the reason capturing the environment at the moment of failure matters more than a careful description written afterwards.
Common questions
What is the difference between an error, a defect and a failure?
An error is the human mistake, such as misreading a requirement. A defect, also called a fault or bug, is the flaw the mistake leaves in the code. A failure is the visible wrong behaviour that occurs when the defective code runs. Errors cause defects, defects cause failures, and only failures are directly observable.
Can a defect exist without a failure?
A defect exists from the moment the flawed code is written and may never produce a failure if no execution reaches it under the triggering conditions. Dead code, unreachable branches and edge cases no user hits all hold defects that never fail. Testing exists to bring execution to those conditions before users do.
Is a software failure the same as a software bug?
A bug is the flaw in the code; a failure is what happens when the flawed code runs. People say bug for both in conversation, but a bug report describes a failure, and the developer's job is to find the defect behind it. Fixing the failure without finding the defect means the same flaw resurfaces elsewhere.
What are the common types of software failure?
A crash, where the program stops; a hang, where it stays open and stops responding; a wrong result, where it completes with incorrect output; a silent omission, where an action appears to succeed and nothing is saved; and a degraded response, where the right answer arrives too late to be useful. The silent kinds are the costliest, because nobody reports them until the missing data is needed.
Can a software failure happen without a defect in the code?
A failure can have an environmental cause with no flaw in the program: a full disk, a network outage, an expired certificate, a third-party service returning something new, a user's browser extension rewriting the page. The failure is real and the report is valid, but the fix is operational rather than a code change. Diagnosis has to rule the environment in or out before anyone searches the code for a defect.
Bug reports that arrive ready to triage.
Collect replay, console, network and browser context with the Free plan.