This pragmatic guide provides a testing framework for software professionals looking to improve product quality and to reduce timescales, effort, and cost. It covers all aspects of testing for software developed or modified in-house, modified or extended legacy systems, and software developed by a third party. The reader can customize the framework to match the particular testing requirements of any particular organization. Packed with a series of real-world case studies, the book also provides a comprehensive set of standard testing document templates, proformas, and checklists for the reader to use in projects. These elements are available with an enclosed CD-ROM.
Review By: Cathy Bell 09/11/2002In the foreword to this book, Maurice Rozenberg writes “Software testing should not only be a confirmation that the application is working correctly but also that it will react correctly when unexpected conditions occur.” The job of the software tester is to anticipate, set up, and test those unexpected conditions.
After an introduction in chapter 1, chapter 2 provides an overview of testing. Then chapter 3 outlines the various testing techniques. I’m sure the author’s intention is not to scare away those new to testing, but he begins by asking how long it would take to test a function that adds two 32-bit numbers and returns the result. How about 58.5 million years! I would like to see a tester put that estimate into a requirements document. The point is that we do not have unlimited time for testing, so we have to use proven testing methods and test smarter. As any good book on testing should, this one gives various definitions of testing terms and testing techniques, as well as a section on the cost of not testing. The author does not believe that “zero defect software” and “defect free systems” are possible, pointing out those testing resources are “finite and in short supply.” An efficient testing process is the only way that we will have enough confidence that a software product is acceptable for release.
Chapter 4 begins with the organization of testing and the roles and responsibilities of the entire test team, including management. The various testing phases that the application under test (AUT) will undergo during the software lifecycle are described and there are even criteria listed to assist in deciding when to stop testing. The V model, configuration management, defect tracking, and risk management are explained as they relate to managing and planning the testing process.
These first chapters give us an overview of the various phases of testing and how these phases relate to the overall testing effort. Chapters 5–13 give us an in-depth look at testing, from unit testing through regression testing, and finish up with how to improve and maintain the testing process. Testing is a process that teaches us lessons along the way, and not learning from those lessons would be a waste. So we are guided on how to review the testing process and implement the lessons we have learned.
The next section provides case studies that give us an overview of the organizations, their management, testing processes, and details of each of the testing phases. The accounts contain enough detail that they make it easy to see how valuable implementing a testing process can be and that this can be accomplished in a variety of organizations. The final section of appendixes contains templates of standard testing documents and checklists.
This book is an excellent reference guide for QA and testing. Each chapter has a quote or bit of wisdom that either relates to the testing process or is meant to make us think about the testing tasks we are about to undertake. Some are definitely there to make us chuckle, such as chapter 12, “Improving the Testing Process,” which begins with a well-known quote: “Those who forget the lessons of history are doomed to repeat its mistakes.”
The book was easy to read and made quite a few very good points about the importance of instituting a testing process. The case studies follow the outline of the book and show how each case implemented each of the phases of testing. There is even a section in the appendix on how to select automated testing tools. It raises many issues that organizations should consider when looking at these tools; then we might not hear so often that automated tools are purchased and quickly become shelfware.
I was less than enthusiastic about one thing—they no longer enclose a CD but direct you to the publisher’s Web site to download the forms and templates. The forms were no longer on the site where the book directs you. Rather, you first have to search for this book as if you were going to purchase it and then download the files from that page. I still prefer to get a CD with my books, rather than have to download the material myself. But that aside, the material is worth searching the site for if you are looking for templates for your test suite.