A Book Review – Perfect Software and other illusions about Testing
This article is a book review on “Perfect Software and other illusions about Testing” by Gerald M. Weinberg. who is an American computer scientist, author and teacher of the psychology and anthropology of computer software development. He is one of the highly reputed and widely known personality in the field of Software Testing. As the one who was there from the beginning of industry and had seen and done everything. He had written more than 40 books ranging from IT, Psychology, Software testing etc.
Perfect Software and other illusions about testing |
One of the most recognizable expressions around, An Apple a day keeps the Doctor away reinforces the importance of having a healthy diet, rather than simply taking the supplements like Vitamins and Protein powders. Similarly, soft skills like right attitude, mindset, clarity of thought and expression, communication are a vital part of a software testers job but, unfortunately not many of the books on testing these days actually focus on these. Most of the Software testing books in the market talk about the types, methods, and theory of software testing, without actually focusing on the important soft skills required for the job. To add to the confusion, there is talk of Automation and promotion of various tools that promise to Automate the whole of testing and perform miracles.
This Book focus on the most vital and important part of Technology, the Human aspect. The books start off with the most crucial question of, why do we need to test. Facing the reality of what Testing cannot do and the myth of testing everything. Then, what is actually testing is, the human nature of blaming, fault finding, defensive reactions. The author undoubtedly is one of the most knowledgeable and with his wide experience, explains some of the pitfalls and how to avoid them.
How the book is organised?
I really liked the way the contents of the book are organised. Firstly, the name of the Chapter informs the reader, the essence of what is coming. Then, there are sub-sections to make things more clear and explicit, followed by a succinct Summary. What is more interesting is the Common Mistakes section which highlights some of the glaring, obvious, not so obvious mistakes people tend to commit, due to various reasons like going with the flow, stereotyping, out of ignorance, lack of proper understanding or may be due to various constraints like Budget, resources, time etc. I loved this section, and the explanations are really handy. As a common quote says ‘A wise man learns from the mistakes of others’.
The subsequent chapters talk about, how to make a good Test, common fallacies (mistaken beliefs, especially one based on unsound arguments) and what testing is not. So many times, we hear people say things like ‘So you are the testers who brake the system’. For them, I would say ‘we are the ones who investigate the software and find where the system is broken’. So, there is a whole chapter about some major fallacies about testing and you can see for yourself, which one you are fall into.
Testing is more than banging Keys – another chapter provides answers to all those people who think that anyone can test anything and every action performed is testing. It may be but, there is a subtle difference that needs to be noted.
Is there a problem? Isn’t Testing the individual parts is as good as testing the whole?
Again, a big No. Once I saw this written on someone’s Tee Shirt- ‘Been there, done that but, can’t remember anything’. I admit, at times it feels like that. And, that’s where this book comes handy for even a veteran IT or testing professionals. The most fascinating aspect of this book are the real-life examples that Gerald writes about. Being a Senior Tester by now, I have gone through these stages of people confounding me with all their own interpretations and understanding of what testing means and some common questions like, why do we need to test? Do we need to do the whole thing again? The fix would not affect anything and no testing required, why do we need to do a System testing when a UAT is being done etc. And, sometimes the whole world seems to be fighting against you (Developers, PM’s, BA’s and End Users). Over a period of time in the industry, I have learnt the hard way but, I feel that it would have been so much easy, if I had read this book a decade before.
This books needs to be read not only by testers but, everyone else involved in the SDLC – Software Development Life Cycle. Because until, one knows and learns about testing, they can’t appreciate the importance and value of testing.
Words mean many things and sometimes they mean opposite of what they sound. Importance of right communication, and the use of Satir Interaction Model to unravel, unfold, unwind communications. Further on, this book talks about the common misnomers about Test Automation, the Silver bullet that apparently has solutions and answers for everything. The most interesting part comes in the last. Who is not interested in knowing about scams. everyone hates scams but, loves to uncover and expose them. Gerald, brilliantly finishes the books with some of the famous scams of Testing and hits the nail in the last but one chapter called ‘Testing Scams’ where he talks about the scams in Testing world, that most common people are unaware of.
Coming from a background of testing, this book is an absolute pleasure for me to read and review. The author Gerald with his straight forward, honest write up about the Software testing is a brilliant master piece, everyone should read. Not limited to only the Testers, this is a must read for everyone who is in the IT field like Project Managers, Developers, Business Analysts, SME’s just about everyone involved in the SDLC, Software Development Life Cycle irrespective of Agile, Devops or the traditional Waterfall models. The book reinforces the knowledge of Software testing to someone who is already working and an eye opener to anyone who wants to know about Software testing.
This books not only clarifies the job function, importance of a Software Tester but, also the right way, approach to the Software testing. It equips one with answers to the real-life situations of testing – what is the right way, what is the right thing to say and do and what is not testing. The book was very well written, with real life examples that are so crucial, important that one cannot go wrong but, may easily go wrong. And finally, I like the usage of Quotes in the book like this one, “The optimist sees the rose and not its thorns; the pessimist stares at the thorns, oblivious to the rose.” – Kahlil Gibran