Fault
A fault is the actual flaw sitting in the code — the incorrect line, the missing null check, the off-by-one condition — introduced by a developer's error. A fault can exist for a long time without causing any visible problem; it only becomes a failure once execution actually hits that flawed code under the right conditions.
Fault is the least commonly used of the three terms in everyday conversation (most people just say "bug"), but it's the most precise one for describing where the problem actually lives: in the code itself, as opposed to the human mistake that put it there (error) or the visible symptom it eventually causes (failure).
This distinction matters most in root cause analysis and in reasoning about code coverage. A fault that's never executed by any test or user path is invisible — it doesn't fail, it just waits. Increasing coverage of previously-untested code paths is, in large part, a strategy for finding faults before they get the chance to become failures in production.