Most people will be aware of software issues. Here we want to show the trail of events. Software does not malfunction by itself – we humans are involved.
We are all probably aware of our own fallibilities – we might be tired, inexperienced, rushed or facing something more complex than we are used to. This causes us to make mistakes, or errors.
These errors can produce defects/faults in the work products that we are creating. Thus, defects/faults include inaccurately defined requirements or user stories; coding defects; test scripts with insufficient detail to allow them to be re-run successfully or even not detect the failures that are there.
A failure is defined as something that the system fails to do properly. This could be due to a defect in an earlier work product, or could be due to the environment that the test was run in.
It is good practice to conduct root cause analysis on issues found and remove them to prevent recurrence in the future.