Manifesto for software testing

1. Testing is investigating in order to evaluate a product.

2. An evaluation is a judgement about quality – quality being value to persons who matter.

3. This makes testing a fundamentally human and contextual activity.

4. As such, testing is an exploratory and open-ended activity, requiring continuous evaluation of and experimentation with our practices.

5. As such, testing cannot be automated. We do use a wide variety of tools to support, extend and amplify our testing. We may also delegate some decisions to our tools. However, without a human context, these decisions are meaningless.

6. Anything that can be observed, can be investigated: the product, artifacts, interactions, and tools.

7. This means that testing is fundamentally interwoven with all activities within a product’s existence: conception, development, operation, and disposal.

8. And the core question during the product’s lifecycle is: how do we discover what we need to discover in the most effective way?


Many thanks to reviewers Ruud Cox, Elizabeth Zagroba, and Jean-Paul Varwijk.

For a version of this manifesto that includes my reflections, see this post.


This post was originally published on my old blog.