Let us remind ourselves about the distinction between a defect and a failure – the failure is what we observe in testing; the defect may be the cause of the failure.
If we are testing a document (in our context either a requirement of some kind, or source code), then we find the defect at source. This gives us the opportunity to stop it in its tracks, thereby preventing a failure. So, debugging becomes unnecessary – this is one of the many benefits of static testing.
If we are testing code that is running, then we may see the failures. This then requires debugging to uncover the underlying defect. The process for this is to:
- Reproduce the failure
- Diagnose the issue to find the cause
- Remove the defect
As with any change to software, two activities in testing must always follow:
1.Confirmation testing (preferably by the developer first, then the tester who found the original failure)
2.Regression testing – usually by the tester.
This topic is covered in our ISTQB Foundaton course in Software Testing.