Software Testing Techniques: Finding the Defects that Matter
(Authors: Scott Loveland, Geoffrey Miller, Richard Prewitt Jr., Michael Shannon; Publish Date: October 2004; ISBN-13: 978-1584503460; ISBN-10: 1584503467)
Software Testing Techniques: Finding the Defects that Matter addresses the testing of what the authors call "industrial-strength software." The book defines industrial-strength software as software consisting of, at a minimum, one hundred thousand lines of code, built by large teams of developers (often made up of sub-teams), typically multithreaded, running on large servers with multiple CPUs, and with a lifespan of multiple releases. This is the first testing book that I've read that focuses on this type of software and, since I live in this world, I was curious to read the book.
The authors live in the world of industrial-strength software. They are all testers working on IBM mainframe operation systems. When I read that, I had a minor concern that what they had to say about software testing might not apply to my world (I live in the PC world). After reading the book I found that I needn't have worried. This book has much to say that is very relevant to the PC world. The authors do use some terms and present some examples that are from the mainframe world. I didn't have a problem with this, though, since the authors did a good job explaining these unfamiliar terms when they use them and the ideas behind the mainframe-based case studies have analogs in the PC world.
The book is filled with practical as well as theoretical information. One example of this is early in the book when software development models are described. The book starts off describing the classic Waterfall model briefly but then moves to what the book calls the Waterwheel model which takes the basic ideas of the Waterfall model and modifies them in response to real-world concerns like time-to-market, the need to make adjustments during the development cycle, and improving feedback between development and test as the product is developed. Aspects of the Waterwheel model include building the foundational pieces of the application first, iterative cycles, continuous integration and build through the development cycle, how bugs are handled, and system verification concerns. The Waterwheel model looks a lot like what I've seen in my experience.
The meat of the book deals with testing and the book has a lot to say in that area. It presents a testing model that includes different phases of testing (unit, function verification, system verification, performance, integration, servicing, and beta testing). For each phase, it describes scope, target defect types, environment, limitations, and cost and efficiency issues. The relationship between development and test is discussed, along with ways testers can work more effectively with developers and the pros and cons of organizational models with different reporting relationships between the disciplines. Test planning is also covered, including strategies beyond just reading the specification for discovering information needed in order to test, effectively using teamwork to help handle the complexity of the testing space, planning ahead for trouble, and how to write and review test plans. Topics specific to complex, industrial-strength software are also dealt with. These include testing for system recoverability, data corruption, testing with a virtual computer, and testing using simulators and prototypes. Specific case studies are presented in each of these areas. Writing test automation according to the book's testing approach, test execution, test management, and the customer's role in testing are also covered.
I liked this book a lot. In addition to the breadth of testing topics covered, the book makes the case for the importance of testing and the need for testers to be alert, capable, well-skilled, and creative. The authors clearly "walk the talk" in the testing realm. I give the book my highest recommendation. - Ron Pihlgren.png) |