The following question is asked on the ISTQB Foundation Exam Paper for Certified Tester

Question: Which of the following statements correctly describes the difference between testing and debugging?

a) Testing identifies the source of defects; debugging analyzes the defects and proposes prevention activities

b) Dynamic testing shows failures caused by defects; debugging eliminates the defects, which are the source of failures

c) Testing does not remove faults; but debugging removes defects that cause the faults

d) Dynamic testing prevents the causes of failures; debugging removes the failures

The correct answer is given as b) which is true however,

how is c) not also correct?

The ISTQB Glossary defines a fault to be a defect.

The answers provided on the sample paper are:

b) Is correct. Dynamic testing can show failures that are caused by defects in the software. Debugging eliminates the defects, which are the source of failures, not the root cause of the defects

c) Is not correct. Testing does not remove faults, but debugging remove defects that cause the faults

3 Answers 3


None are correct.

Debugging is the act of investigating the reasons for a bug (aka a discrepancy between the intended behavior and the actual behavior) to exist.

Testing is the process of finding such discrepancies.

To eliminate the discrepancy, one does coding/programming/etc - one modifies the product, which doesn't happen either with debugging or testing.


c) Testing does not remove faults; but debugging removes defects that cause the faults

This statement isn't correct for the debugging part.

Debugging doesn't remove faults. It is an act/activity that helps identify the root cause of the fault/bug/incident/issue.

Once the root cause is identified, people do programming (add/edit/remove code) to fix that fault/bug/incident/issue identified by debugging.

And going by this logic actually none of the answers can be considered correct.

  • Why is it called debugging if you are not removing the bug. This seems like a poor use of language or am I missing something more obvious?
    – cinameng
    Feb 20, 2023 at 21:40
  • It's like wondering why is it called a software bug or a computer bug? There isn't really a bug. It's just an error/problem in the code. That is why I don't prefer a generalised standards and rather go with what terminology the team I'm working with is comfortable with for successful communication. Feb 21, 2023 at 2:13
  • To debug is different, it's the verb to debug ie. de (from, away from, down from), and bug (a defect in the code or routine of a program.) = debug (to search for and eliminate malfunctioning elements or errors in.). The important bit being there the use of the word eliminate. The ISTQB answer it gives to its own question is incorrect (or at least is only partially correct).
    – cinameng
    Feb 21, 2023 at 12:08
  • You are correct. You may find more examples in some syllabuses which may not sound right. That is why try to understand the dictionary meanings of terms/words like the example you gave with debug and then work your way forward to understand and communicate. Feb 22, 2023 at 2:14
  • Debugging (the process of examining and gathering runtime information) and editing code are separate activities. You might debug while investigating a problem (that may or may not exist). Once you've debugged and gathered information then you may or may not implement a fix, first considering the other implications and testing needed for a fix. The activities might be done sequentially without a pause between them but they are two activities. Jun 17, 2023 at 22:49

In the current ISTQB Sample paper it is mentioning 3rd option as "Testing removes faults; but debugging removes defects that cause the faults".

So with this change we can eliminate this option. So correct answer will be B.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.