What I liked about “Perfect Software And Other Illusions About Testing” by Gerald M. Weinberg

Perfect Software And Other Illusions About Testing
Perfect Software And Other Illusions About Testing

I recently finished reading “Perfect Software and other illusions about testing” by Gerald Weinberg.  I wanted to elaborate and reflect on a few points I enjoyed about the book .  I recently attended the Software Test Professionals Conference and Gerald Weinberg was there signing his book. I had not heard of him at that point, but now I will be at the front of the line for the next book signing.

The first chapter was a home run, it was titled “Why do we bother testing?”  I found that this statement shed new light on an old subject for me.

“Common mistake 5: Believing testing can improve a product: Testing gathers information about a product; it does not fix things it finds that are wrong.  Testing does not improve a product; the improving is done by people fixing the bugs that testing has uncovered.  Often when managers say, “Testing takes too long” what they should be saying is, “Fixing the bugs is the product takes too long, ” — a different cost category. Make sure your accounting for effort and time under the correct cost category.”

Chapter four is titled  “Whats the difference between testing and debugging”.  I found two interesting answers about locating faults and pinpointing that I was not expecting.  I remember thinking at one point in my testing carrer that if I could find a defect and then locate in code the source of the problem that I would be considered an amazing tester. Who should pinpoint failures?

“Common mistake 4:  Demanding that testers pinpoint every failure:  Testers can help developers with this job, if there time has been scheduled for it, but it is ultimately a developer responsibility.  At least that’s what I’ve seen work best in the long run. “

“Common mistake 5:  Demanding that testers locate every fault:  This is totally a developer’s job, because developers have the needed skills.  Testers generally don’t have these skills, though at times, they may have useful hints.”

In chapter thirteen different strategies are discussed for determining significance.  Significance is the importance attached to the bug by the person who gets to decide what to do about that bug.  I liked these four categories for determining the significance of an issue from a testing point of view

Level 0: This issue is blocking other testing.
Level 1:  Our product cannot be used if this issue isn’t resolved
Level 3:  The value of our product will be significantly reduced if this issue isn’t resolved.
Level 4:  This issue will be important only if there are large numbers of similar issues when the product is shipped.

From the high level project view, think about your project and how important fixing is.   I learned that fixing is linked to an emotional value that is given to every fixable work item.  It is possible that every member of the team might assign a different emotional value to ever fixable work item.  In this case, how do you manage what gets fixed in what order if all members of your team members have different values assigned to your fixable work items? I like the summary of chapter thirteen to answer this question.

“Our emotions carry information about how important things are. If we pay attention to emotions, listen, and address important matters before unimportant matters, we’ll be doing the best we can with the data we have.”

In conclusion I highly suggest this book for anyone developing or testing software.  It will also be helpful to anyone making decisions about how software is released or built.

Comments are closed.