Wednesday, June 2, 2010

Wednesday Book Review: Testing Computer Software

Through the years, I have come across a number of books that I have used and valued. These may be new books, or they may be older ones. Each Wednesday, I will review a book that I personally feel would be worthwhile to testers.

I had to wait to review this one since otherwise it would seem like I was kissing up to Dr. Kaner while taking his class (that, and I wanted a chance to look a the book again after taking the class; truth be told, it’s been many years since I last read this).

For many years, Testing Computer Software was the only book on testing that I owned or read. Because of that, this book was my sole line to professional testing and test practices. I had read it in sections and at various times when I needed to, but I hadn’t given much thought to what the value of this testing book actually was and how much I had learned from it. Many have said that this was the bible of software testing, and that it was the only book any tester ever needed (It was, in fact, that second statement that first encouraged me to buy my copy in 1995).

Cem Kaner, Jack Falk, and Hung Quoc Nguyen did something that, to me, had not been addressed in any other way that was available to me at the time, which was to write a book specifically for the tester and to discuss the techniques and methods of testing (I realize now, of course, that there are and were other books on testing, I just didn't know where to look for them). Testing Computer Software starts with some examples with what seem to be on the surface trivial programs. Through examination, we realize quickly that testing such programs completely and thoroughly rapidly becomes a very difficult and nebulous process. Each chapter builds on previous chapters, and demonstrates the details that need to be addressed in testing for both simple and complex applications.

The chapters and the scope that they contain are below:

  1. An Example Test Series
  2. The Objectives and Limits of Testing
  3. Test Types and Their Place in the Software Development Process
  4. Software Errors
  5. Reporting and Analyzing Bugs
  6. The Problem Tracking System
  7. Test Case Design
  8. Testing Printers (and Other Devices)
  9. Localization Testing
  10. Testing User Manuals
  11. Testing Tools
  12. Test Planning and Test Documentation
  13. Tying It Together
  14. Legal Consequences of Defective Software
  15. Managing a Testing Group
  16. Appendix – Common Software Errors

Cem Kaner is a lawyer, in addition to being one of the vanguard software testing professionals, so it is interesting to see many aspects of the legal ramifications of software that is defective. This is an area that does not often get covered in test books. What has also been interesting to me was going back and reviewing this book again after having completed the Black Box Software Testing: Foundations course (also shepherded by Kaner and others). Many of the aspects of the Association for Software Testing’s Black Box Software Testing course can be seen here in this book, along with aspects of the “context-driven” approach to testing. Covering areas like localization testing, testing printers and external devices, and testing user manuals gives additional insights to areas that do not get covered in other testing books.

One thing to be aware of is that Testing Computer Software 2nd Edition was originally written in 1992 (the 1999 date is when Wiley picked it up and started publishing it; there was no updates to the text made between 1992 and 1999, or since). Because of this, many of the examples (and many of the references) date back to the 80s and earlier. Some will look at the MS-DOS examples and scratch their heads (although anyone with any testing experience shouldn’t think the examples that archaic; UNIX/Linux users will feel right at home with the examples).

Bottom Line:

There is much to appreciate in Testing Computer Software, and many good ideas to be gleaned from it. If you are a professional tester, chances are I don’t have to tell you very much about this book, since you probably already own it and have read it. If you are a brand new tester, there are now many books that have been released that cover more up to date topics and program examples that will feel more familiar. Still, there's a lot to like in this book. If nothing else, it gives some good examples to see how far we have come, and at the same time realize just how little has really changed all these years.

No comments: