Checking and investigatingPosted: February 12, 2010
What is the diff? As Matt Heusser wrote in Beautiful Testing, a book that I helped review:
First, there is a sharp difference between checking, which is a sort of clerical, repeatable process to make sure things are fine, and investigating, which is a feedback-driven process. Checking can be automated, or at least parts of it can. With small, discrete units, it is possible for a programmer to select inputs and compare them to outputs automatically. When we combine those units, we begin to see complexity. Imagine, for example, a simple calculator program that has a very small memory leak every time we press the Clear button. It might behave fine if we test each operation independently, but when we try to use the calculator for half an hour, it seems to break down without reason. Checking cannot find those types of bugs. Investigating might. Or, better yet, in this example, a static inspector looking for memory leaks might.