February 1, 2009

Book: Perfect Software and other illusions about testing

Another addition to my QA Bookshelf.

Perfect Software is a high-level look at some of the "big picture questions" about testing, such as: Why do we have to bother testing?  Do we have to test everything?  What makes testing so hard?  Is perfect software possible?  Why can't we just accept a few bugs?

It's a small book (under 200 pages), and a quick read.  From the preface:
"I envision this book in the hands of professional testers, developers, consumers, analysts, designers, programmers, all of their managers, and all of their coworkers.

Most professional testers will know most of what's in this book, but I hope that by reading on, they will see new ways to communicate what they know - to their managers, developers, coworkers, and customers.

I'd like to help both developers and testers understand what their managers face when they confront software testing issues."
  1. Why Do We Bother Testing?
  2. What Testing Cannot Do
  3. Why Not Just Test Everything?
  4. What's the Difference Between Testing and Debugging?
  5. Meta-Testing
  6. Information Immunity
  7. How to Deal With Defensive Reactions
  8. What Makes a Good Test?
  9. Major Fallacies About Testing
  10. Testing Is More Than Banging Keys
  11. Information Intake
  12. Making Meaning
  13. Determining Significance
  14. Making a Response
  15. Preventing Software Testing from Growing More Difficult
  16. Testing Without Machinery
  17. Testing Scams
  18. Oblivious Scams
Here's an interesting example that will give you a flavor of the book. 

In chapter 3 "Why Not Just Test Everything?", Weinberg has a section called "There are an infinite number of possible tests."  He talks about a backdoor placed into a highly secure program whereby the ordinary password protection could be bypassed by typing W followed by three spaces, then M followed by three spaces, then J followed by exactly 168 more keystrokes without once using the letter L.  Then he writes:
"Do you get the point by now?  If you didn't guess that the number of tests required to exhaustively test software is infinite, or at least "a number greater than I could run in my lifetime", you didn't understand the point of this chapter.  Now you do."
If you are looking for a "how to" book, you should look elsewhere.  If you are looking for a "why" (and sometimes "why not") book, this might be for you.