Thursday, February 24, 2005

Recommended Books On Testing

Another question I was asked via e-mail.  "Do you know of any good books that explain the testing process in detail? I noticed you mentioned Debugging Applications for .Net and Windows, but I am looking for a book that really explains the basics of 'I have this API/application and I want to test it'. "

Let me say up front that I’m not a big fan of testing books.  Most of what they say is obvious and they are often long-winded.  You can learn to test more quickly by doing than by reading.  Unlike programming, the barrier to entry is low and exploration is the best teacher.  That said, Cem Kaner’s Testing Computer Software gets a lot of good marks.  I’m not a huge fan of it (perahps I'll blog on my disagreements later) but if you want to speak the language of the testing world, this is probably the book to read.  Managing the Testing Process by Rex Black gives a good overview of the testing process from a management perspective.  Most testing books are very process-intensive.  They teach process over technique.  How to Break Software by James Whittaker is more practical.  I have read some of the book and have heard James Whittaker speak.  As the title indicates, the intent of the book is to explain where software is most vulnerable and the techniques it takes to break it at those points.

Part of the difficulty with testing books is that there are so many kinds of testing.  Testing a web service is fundamentally different than testing a GUI application like Microsoft Word which is again wholly different than testing a multimedia API like DirectShow.  Approaches to testing differ also.  Some people have a lot of manual tests.  Some automate everything with testing tools like SilkRunner or Visual Test.  Others write code by hand to accomplish their testing.  The latter is what my team does.  Most books on testing will either distill this down to the basics--at which time you have no real meat left--or they will teach you a little about everything and not much about anything.  Read the 3 books I call out above but make sure to adapt everything they say to your specific situation.  Treat them as food for though, not instruction manuals.

Do you have a favorite testing book that I haven't mentioned?  Share your knowledge with others in the comments.


  1. I'm all about test-driven development, and I think for the moment the best book on the subject in .NET land is "Test-Driven Development in Microsoft .NET" from Microsoft Press. (Clever title, eh?) I haven't looked at it in ages, but I seem to recall it was written by the Nunit author(s). It really gets into the use of the tools as well as the process of writing code to pass the tests.

    I really hope to see something updated for use in Visual Studio 2005 later this year.

  2. Security testing:

    "Writing Secure Code" has a chapter on security testing. Actually, using most of the rest of the book as a checklist of things that dev can do wrong is probably useful, too.

    I've heard good things about "The Shellcoder's Handbook". I haven't read it yet, but it's on my list.

  3. I too have found it difficult to find good books on testing that really apply specifically to the type of testing I do. The book I like the best is "Lessons Learned in Software Testing". When I hire a new QA person I give them a copy to read through.