Friday, 20 November 2009

Testing the patient

A lot has been written recently about the concept of Testing vs Checking (the first reference I have seen on the subject was Michael Bolton's developsense blog) The argument makes an important distinction between the 'Checking' that is performed by either a machine or human performing scripted testing against a set of narrow pass/fail criteria, and 'Testing' which is a sapient process of investigating quality, constantly reviewing and amending the approach based on discoveries made and the expertise of the Tester.

While I agree wholeheartedly that the distinction is relevant and necessary, I am not completely comfortable with the meme chosen to represent the concept, and the re-definition of terminology involved. A recent discussion on this point in the Agile Testing discussion group got me thinking on this point and trying to produce a suitable metaphor to explain my thoughts.

What I came up with was the concept of a doctor examining a patient. The doctor will perform a series of tests in order to make a diagnosis of the patient's condition. Initially these are likely to be general tests, or related to specific symptoms, however as information comes out of these tests, the doctor will use their knowledge and expertise to identify further tests to gather more detailed information and allow them more accurately assess the patient's condition.

Once a diagnosis is made, and a course of treatment prescribed, often the patient is required to be checked regularly to ensure that their condition does not worsen, and that the initial assessment and course of treatment remains valid. These checks will most likely take the form of performing some kind of test (e.g. a blood sugar test for a diabetic) and having some simple criteria to check against the result of the test to give confidence that things are still OK. The patient does not have the medical knowledge to reassess their condition or change their medication, they simply have the ability to perform a test and check the results against a set of check criteria. Should the results differ from expectation then the expertise of the doctor will again be required to re-assess the patient's condition and recommend the appropriate action.

The point that I am trying to make with this example is that, both the doctor and the patient are testing. One tests as part of and assessment process based on their expertise and knowledge, the other as part of a basic checking process to give confidence in the persistence of the previously performed assessment. To label one of these actions "Testing" and one "Checking" could potentially be confusing, and, to my mind is not necessary given the wealth of words we have that may be more appropriate. I'd personally find it easier to present the concept in the sense of testing being made up of two separate important strands, rather than attempt to redefine "Testing" away not only from its literal meaning but also the context specific meaning that it already carries in the development community.