In testing terminology, a failure is the observable deviation from specified behavior that end users experience. A fault is the defect in code that causes the failure, an error is the human mistake that introduced the fault, and defect is often used interchangeably with fault.