There will be bugs.
This is a reality we all need to deal with. So you better handle bugs effectively. Bug reports are time sinks, as they often lack the right information to start working on them.
I came up with a handy mnemonic called REPORT that functions for bugs like INVEST for user stories. You can use it to check if your bug contains the right information to be picked up effectively.
Before elaborating on REPORT, I will explain why bug reports waste a lot of time.
When you receive a bug report, you might think: great! The development team has a problem to solve. It is not that simple. The development team now has two problems: a bug report and the actual problem.
Bug reports are the start of an investigation. As with any investigation, it might go smooth or lead to nowhere. And it all starts with the facts. Even Ace Ventura needs facts to figure out what happened.
When the police broadcasts an all-points bulletin (APB) to apprehend a suspect, the information provided is crucial. We are searching for a suspect that is 40–50 years old, black hair, athletic build and 1.75 to 1.80 meters tall. Better information in the APB, increases the chance to catch a suspect.
It is the same with bug reports. Having a bug report does not guarantee you will find the actual offender. Having the right information in a bug report is paramount. It helps the investigation go smoothly. If information is missing developers will need to put on their detective hat on to obtain the facts.
Getting the right information in a bug report is hard. There is a big disconnect between the bug reporters and the developers who pick up the bug. Bug reports are a place where technical and non-technical interact. It sometimes seems like they are both coming from a different galaxy.
Bug reporters often have no clue what developers need to effectively pick up a bug. Developers get tired and frustrated from repeating the same questions over and over. Bug report interactions often end in disappointment, leaving both parties disheartened.
Fed up with those damn bug reports!
If you ever worked as part of a software development team, then the following comments in bug reports will sound familiar:
All these frustrations can be lessened by using a handy acronym called REPORT.
REPORT stands for:
As a bug reporter, it is important to realise that developers who will pick up your bug might know less about the application than you from a functional perspective. A development team is normally responsible for just a part of the application. Knowledge in the team about their part of the application is often unevenly spread between the developers in the team.
So when a developer picks up a bug report, reproducing the issue might require using functionality they know little about. This is why bug reports need to be as easily reproducible as possible, preferably without requiring any prior knowledge.
All steps necessary to reproduce the issue should be present. These steps should be so clear a developer without background knowledge can perform them, regardless of the environment they are using. It is important to mention if the issue is consistently reproducible or not.
If there are no reproduction steps but you know the issue exists, then just mention you do not have a reproduction path. Do provide the evidence you have that it exists.
Common pitfalls:
Expected results are often missing from bug reports. The bug reporter writes:”It does not work the way I expect”. This expectation is never made explicit. The developer pulls out his crystal orb and rubs on it to guess what the bug reporter expects. With varying degrees of success.
If you do not want the resolution of your bug report up to chance, it is necessary to state how you expect it to work. The chance you get what you want is higher and the chance of rework is lower.
It could also be that how you expect it to work conflicts with original requirements which were agreed upon. Making your expectation explicit creates space for discussion.
All relevant information should be present to determine the priority of an issue. The priority of an issue results from the impact. By knowing the impact, the priority can be determined and validated by the customer and developers. If you provide priority and no impact, then nobody can double-check the priority.
I once worked for a customer who reported every bug as blocking or critical. This was the result of us not picking up issues with lower priority. As a result the product missed deadlines and the customer was not happy with the delivered quality.
Not all bugs are equal and almost always it is impossible to fix all bugs before a deadline. Being clear about the impact allows to prioritize effectively. If everything has equal priority, then nothing has priority. By stating the impact, the priority becomes negotiable. With a higher-quality product and a happier customer as the result.
A description of what happens when you perform the steps as described in the bug report. Information about when the bug does not happen may help to pinpoint the root cause.
Common pitfalls:
A bug report needs to be atomic. Bug reports should only contain the information relevant to reproduce a single issue. If many different issues are present in the same bug report this introduces noise. Remove all unnecessary steps and superfluous information to prevent confusion.
Common pitfalls:
Tracing bug reports to the original requirements gives developers valuable background information. Developers can check if what they are fixing conflicts with original requirements and may cause new issues. In fixed-price contracts traceability is vital. It allows to determine if an issue is in scope or must be treated as a change not part of the original contract.
Sometimes traceability is not possible, for example when you use software for which the customer does not have any requirements documentation. If you do not run fixed price contracts or want to perform root cause analysis, then traceability may add little value. The context determines if traceability matters. In the words of the agile manifesto: “Customer Collaboration over Contract Negotiation”.
When bug reporters uses REPORT to judge the quality of their bug reports it will help developers to:
It will help your customer to understand what developers need without a lengthy explanation. It provides a handy acronym to fall back on and increase understanding in a simple yet effective manner.