Perfect Software
Everyone has a role to play in software testing--even people outside a project team. Testers, developers, managers, customers, and users shape the process and results of testing, often unwittingly. Rather than continue to generate stacks of documents and fuel animosity, testers can cultivate rich opportunities and relationships by integrating an effective testing mentality into any process
Jerry Weinberg, author of The Psychology of Computer Programming and more than forty nonfiction books, sets out to disprove destructive notions about testing and testers in Perfect Software And Other Illusions About Testing. With a blend of wit, storytelling, and jaw-dropping insight that has won him fans around the world, Weinberg deftly separates what is expected, significant, and possible in software testing. He destroys fallacies and steers readers clear of common mistakes.
We test because people are not perfect, and simply testing more does not guarantee better quality. This book guides test strategy development that's scalable for any project
Review By: Victor Goldberg, Ph.D.
10/02/2009Science's two main purposes are to improve and simplify our view of the world. Science expresses its understanding through the enunciation of laws and description of patterns. Technology tends to follow science in a time-delay sequence. If there is one good example of applying the mantra of improvement and simplicity to technology, it's in Gerald M. Weinberg book Perfect Software.
Simplicity is not simple. In Weinberg’s mind it’s not enough to preach simplicity in technology; he also practices it in his writing. Because of this, he expresses himself in a manner that's clear and transparent yet comprehensive. So, he's very easy to read and also deep in the coverage of the material. He deserves to be commended for having achieved this level of profound simplicity.
One thing I liked very much was that the issues Weinberg analyzed, in a critical way, also included his solutions with proper constraints. For example, a subtitle reads: "Make the time-limit heuristic a management mantra—but adjust it as needed." Then he explains, "A heuristic that helps untangle who does what for how long states the concept simply: Nobody in the project should carelessly waste the time of anyone in the project." Later, he states a relative boundary, "Time-limiting is a heuristic, not a fast and hard rule."
Interestingly enough, the book is at the same time about facts and not exactly about facts. This is because it's more about the logic of how to do things. Weinberg is an experienced software professional with decades in the field. The examples are drawn mostly from his personal experience, so they tend to be anecdotal. Yet their strength is derived from the force of his convincing logic.
Because ideas are so basic and explained with such clarity, I would expect for the book to have a long shelf life. The book reflects my own thinking; I strongly identify with the ideas expressed in it. It was important for me to see my points of view supported in the author's writing, so I immediately used the material by continuing doing things as I was, with an enhanced sense of satisfaction and purpose.
The field of software development is kind of similar to an early western frontier. I would say that even though the best defined audience is a novice, many veterans and managers could benefit enormously from reading the book. This thorough, 182-page book is broken into eighteen chapters, eighteen endnotes, four book recommendations, and a six page index. Because it can be used as an excellent reference book, I would suggest that it should be part of any professional's library.