This week I am in Toronto taking Rapid Software Testing from Michael Bolton. Every time I talk with Michael he makes my brain hurt, so I am quite enjoying three solid days of him!

That is not however what I would like to talk about today. What I would like to talk about is this: Do you even need to test your product?

[Startlement! Amazement! Disbelief!]

Who says you need to test?

Why do you think you need to test?

I believe there are no good practices, or bad practices, or best practices. Which means there are contexts in which testing is not useful. The Rule Of At Least Three ("If you cannot come up with at least three plausible explanations for something, you do not understand it well enough / There are always at least three whatevers-are-being-discussed confirms this must be the case.

Let's brainstorm a bit, shall we?

  • If no one is interested in hearing the information you can provide by testing.
  • If the powers-that-be will not change the decisions they make regardless of any information you might learn from testing.
  • If your product does not solve the problems your customers have.
  • If your customers are resilient to bugs.
  • If your developers never make any mistakes.
  • If you have no way to recognize defects.
  • If your only customer is you.
  • If someone else has already tested the product.
  • If you do not have the authority to take the actions necessary in order to test.
  • If no one believes testing is worthwhile.
  • <What else can you think of?>

If we widen the scope a bit, there are oodles of reasons you might not want to do certain types of testing:

  • If your application is only used for a few minutes once a month you might not do any leak testing.
  • If your application is only used by a small number of people you might not do any load testing.
  • If your application is only used within a single locale you might not do any internationalization testing.
  • If your application is not translated you might not do any localization testing.
  • If your customers are all blind you might not do any UI testing.
  • If none of your customers are handicapped in any fashion you might not do any accessibility testing.
  • If your customers are supported by live on-site personnel you might not do any help testing.
  • If customer data is easily regenerated you might not do any data integrity testing.
  • If input data is tightly constrained you might not do any boundary testing.
  • If your application does not involve sensitive data you might not do any security testing.
  • <What else can you think of?>

So: do you really need to test? Do you really need to do all of the testing you thought you did? Let me know: Michael dot J dot Hunter at microsoft dot com.