Recently I was shopping for music at a well-known online store. This store often suggests other albums related to the one you are browsing and offers you a package deal where if you purchase both the CD you are browsing and a related CD you receive a discount over purchasing both CDs individually.
At least, I always assumed I received a discount. The other day, however, the price for the package deal didn't seem all that different from the price for purchasing each of the CDs individually. I did the math - it was exactly the same price!
I wonder how many other times I've taken the package deal without paying attention the price. I wonder how many other people have done so. I wonder if the package deal ever is a discount. I wonder whether anyone at that online store would consider this a bug. (I could see the store doing this on purpose on the theory that people are likely to spend more money if they think they are getting a deal.)
Diligent Reader Akhilesh emailed me to relate a bug he found in a web mail client which Akhilesh tells me claims to be bug free:
There is an internal website which forms one part of the reporting pipeline for the performance tests I run. When I add a new test case it pretends to allow me to specify the new test's ID. When I do so, however, I am told that "The test case ID '4324' must be a valid integer between 1 and 999,999,999". Umm....
Where there is software you will find bugs. Guaranteed. I can imagine an application which was built by a stellar team who spent huge amounts of time rooting out the very few defects they injected into it. (And probably missed their ship date by years...but I digress). I have yet to see or even hear of such an application.
Great Testers test everything they see, and they find bugs in everything they test. If you don't see all these bugs, or you would like to see more of them, you can certainly do so. Start by applying the Rule Of At Least Three: Pick something. Anything. A street lamp. A door. Your toaster oven. Your application. Your competitor's application. Think of at least three ways you could get that object to do something which you believe is unexpected. Once you have three things, keep going until you have ten. And then twenty. And then fifty.
If you get stuck, take a break and come back to it later. Discuss it with someone else. Browse the bug database for your application and use the bugs other people have logged as a springboard for brainstorming more possibilities. Push yourself farther than you think you can go. And again. And again. And again.
Even the most basic, simple object can have bugs. For example, how would you test a cup? Post your answers in the comments, or email them to me at michael dot j dot hunter at microsoft dot com.