There will always be a cat in the waffle iron.
What does that mean? Well, in short, it means that there will always be possibilities that no one could possibly have predicted. The idea came about through a conversation with my then-co-worker J about a magnet she has bearing the logo above. We were both in software QA at a small but successful company in Portland, OR. I was the newest member of the department, having been there only about 3.5 months. During all that time, she had the magnet in her cubicle. Although I’d seen and noticed it, I never spotted the kitty (and the magnet doesn’t show the text that appears below the image).
Upon having the kitty pointed out to me, I realized that this is a good metaphor for testing, and it explains why some bugs don’t get found during normal testing (especially in the running of formal test cases). Let’s say you’re going to test a waffle iron. You want to make sure it does everything it’s supposed to and doesn’t do anything it’s not supposed to. You might write up test cases to make sure that it can open and close, that it heats up to the right temperature, that it doesn’t get stuck shut when you make waffles in it, and so forth. You might plan some more strenuous tests, such as making sure that if it’s accidentally left on all day it won’t catch on fire and burn your house down. However, it’s extremely unlikely that most people would think to write a test case to make sure there isn’t a cat in the waffle iron. But I’ll tell you what, if there IS a cat in your waffle iron, the damn thing’s not gonna work right!
No matter how exhaustive your test cases are, there will always be a situation you couldn’t possibly have anticipated. Expect the unexpected, because there will always be a cat in the waffle iron.