One of the primary pursuits of software testers is to verify if the application under test conforms to system specifications. In this pursuit, testers create bug reports whenever test cases fail. This is how the professional life or journey of a typical software tester starts. At some instance in this journey a realization strikes. It is a voice from within and it says, “The quality of bugs matters more than the quantity.” This is when a software tester understands the true meaning behind the purpose of testing. This post is about a real life story to illustrate this phenomenon.
Anita, a software test engineer joined our project team several years ago. That was her first project on her first job. She held an undergraduate degree from a well-known college. She was very fast in finding failures. She would find failures against test cases and raise bug reports. She topped in doing this. She was happy with this progress. However her interaction and relationship and rapport with developers became unhealthy. Every defect she found involved not only additional research and debugging but also a great deal of conversation and negotiation. Sometimes more than five out of ten defects reported by her would end up in categories such as ‘Not a Bug’ or ‘Duplicate’. Eventually developers started seeing no value in her bug reports. She was demotivated. When we analyzed this situation we understood that she was not collaborative enough and did not think through before creating bug reports. Somehow she was passionate about maximizing the number of defects but not paying attention to the quality of defects. This episode turned out to be an unpleasant experience for her as well as the developers. One of the senior members in our team coached her and she was willing to learn and improve. It took her several weeks. She was getting better.
One day she was extremely happy because a bug she reported was fixed on the same day. The developer who fixed it was impressed too. I appreciated her and asked, “This is awesome. How did this happen?” She retorted, “Thank you! I know, I did my homework before reporting this bug. I discussed it with our developer, understood the context, did additional testing by considering related scenarios and created a better report. This approach helped us reduce debugging time.” I smiled at her with a sign of satisfaction.
Gradually she become a successful professional and started contributing to large projects.
Several years have passed. Nowadays, I am not playing the role of a full time developer or tester or project manager. I am a specialist. I work with organizations and teams. I write, speak, coach, consult and do several other things.
Couple of months ago I was using an online application that facilitates conference management and includes features such as attendee registration, speaker submission and so on. This is a new system developed by an enthusiast who is a hardcore techie. Sometimes he works with one or two developers supporting him. Otherwise, he does it alone by adding features, resolving issues and making it better. As a member of program committee of an upcoming conference, I use this system daily. All of us in the program committee are aware of the known issues and one among them is a pagination issue – we had to refresh pages couple of times to get the right number of records.
The other day, I observed incorrect number of submissions under a specific category in spite of multiple attempts to refresh a page. I was reluctant to relate it to the pagination issue. I thought it could be due to some issue with the browser cache and went on to complete my tasks of the day before I investigate it further. That issue did not leave my mind. I did not react either. I remembered Anita’s happiness when she did it right and got that bug fixed efficiently. I asked myself, “Is this a bug or issue worth reporting?” The answer was not affirmative. I wanted to get back to the system and explore it further so that I can help the developer with my bug report.
Late in the evening, I went back to the system. Even though I was able to reproduce that defect I started examining the corresponding behavior under various scenarios and compared it with similar features. To me, the ability to reproduce is a necessary but not a sufficient condition to report a bug and this bug was not worth reporting yet. I wanted to narrow it down and isolate it so that I can write an informative bug report.
After multiple attempts, I started getting some clarity. I isolated it to a specific scenario across screens. It appeared to be a programming error or configuration error. I reported it with all my findings. And the bug was fixed within an hour!
Looking back, I find that these are the small incidents worth sharing as they leave behind some takeaways. Test case failures are most probably the leading indicator of defects. However, a test case failure need not be defect itself. It is the responsibility of a software tester to do additional probing or research to isolate the failure in order to write a meaningful bug report. Next time when you come across a failure, ask yourself, “Is it a bug worth reporting?” Also, attempt to analyze it further and write a great bug report. When you do this you will enjoy your work and become a valuable contributor in your team.