Bug Reporting Guide
Bug Reporting Guide
Bug reporting is central to testing. The bug report, whether oral or written, is the single most visible
outcome of testing. And the quality of your reports is probably the single most important factor that
determines your credibility as a tester. This document describes bug reporting from the
perspective of Rapid Software Testing methodology.
Throughout this guide I will distinguish between what is expected of “supporting testers” (anyone
helping the test effort temporarily or intermittently but not committed to the testing role or
perhaps even that project) and “responsible testers” (those who assume the role of tester on a
project and commit themselves to doing that job well over time).
What is a bug?
A bug is anything about the product that threatens its value (in the mind of someone whose opinion
matters). Less formally, you could say that a bug is something that bugs someone whom we care
about. Sometimes these are called defects, but I don’t recommend using that term, since it sounds
accusatory, and it implies that testers may only report things that they are absolutely sure are
wrong with the product. Bug is a time-honored and somewhat vague term, which suits our need to
report things that are possible threats to the value of the product, even things we might be wrong
about.
Bugs are not about our own personal feelings. You can use your feelings to find a bug, but then you
better know a good reason why someone else would have the same feelings. That’s because your
feelings don’t really matter. A tester is an agent for the people who do matter, usually, because the
people who matter probably have other things to do than test software. Thus, we must learn about
the people who do matter: the users, the customers, the bosses, society, and the standards that are
relevant to them. If you want to write successful bug reports, get inside the minds of your clients.
Bug Investigation
Supporting testers are generally not expected to investigate bugs beyond what is necessary to make
a clear report.
Responsible testers are expected to investigate bugs to the point they can make clear, relevant, and
concise reports. However, for puzzling or difficult to reproduce bugs, it is often is the case that the
developer will have immediate insight into the underlying causes. For that reason, I recommend the
10-minute heuristic: investigate a puzzling bug for no more than about 10-minutes before checking
in with a developer about it (assuming the developer is available). If the developer is also puzzled,
continue the investigation, otherwise, if the developer claims to know what is happening, just
report what you know and move on to find the next bug. That will mean you are finding more bugs
instead of making ever nicer-looking reports.
The goal of bug investigation is to gather good enough information about it so that your clients can
evaluate the problem and fix it. This generally means four things:
Bug investigation often requires technical knowledge, product knowledge, and analytical skills that
are beyond the scope of this guide to explain. That’s why we don’t expect much investigation to be
done by supporting testers coming in to the project temporarily.
• MIP. This stands for “mention in passing.” To MIP a bug is to report it in a sentence or two
by voice, email, or instant message. It can even take the form of a question (“is this
supposed to work this way…?). There is no expectation of formally tracking such reports,
and there is no template for them. The main reason to MIP a bug is when you are fairly
confident that what you are reporting is not a bug, and yet you have a suspicion that it could
be. MIP’ing is partly a strategy for learning about the product, since early on in testing many
things that look like problems to you might not be. MIP’ing helps preserve your credibility
because if a MIP’ed bug turns out to be a real issue, you can fairly say that you did report it,
and because if it is not a bug, you can fairly say that you didn’t create unwieldy paperwork
for the team. MIP’ing is a very good way to work when you are pairing with a developer for
early testing.
MIP’ing is an excellent protocol for bug reporting when running a mass testing event with
supporting testers when developers or other experts are in the room with them. The
supporters then serve as “bug scouts”, while the experts perform investigations and take
responsibility for formal reporting, if required.
• Formal Reports. This means recording written bug reports in some sort of tracking system.
Formal bug reporting is slower and more expensive than MIP’ing, but has obvious
advantages when you are dealing with large numbers of bugs. Expecting supporting testers
to do formal bug reporting may not be reasonable, but if they do, someone with
responsibility will need to edit them. Poor quality formal bug reports can erode the
credibility of the testing effort.
• Black Flagging. This means going beyond reporting a bug to the extent that testers raise an
alarm about a serious underlying problem in the development effort. This may be necessary
for safety or security bugs that can only occur when there is a breakdown of development
discipline. Black flagging is for when you suspect that a bug is part of a much larger group of
bugs that may not have been found yet, or may not yet have been put into the code.
These forms of bug reporting are not the only forms that exist. But they serve to illustrate that bug
reporting is a socially-situated activity. However or whatever ever you do with your reporting, your
process must ultimately fit the social milieu of the project.
2 https://www.merriam-webster.com/words-at-play/bury-the-lede-versus-lead
• Version. This is the latest version of the product in which you detected the bug. If you also
tested earlier versions, note that in the description.
• Environment. The platform you were testing on. Typically this is your hardware, browser
and operating system. If you are testing an online product, specify the server. Report any
environment element that is interesting or unusual, or if it is customary to report it.
• Attachments. For all but the easiest to understand bug reports, it will be much appreciated if
you attach screenshots of the problem,3 or even small videos. Also include links to any
critical data files needed to reproduce the problem.
In addition to the basic fields, your bug tracking system may have other fields, as well. It will
autofill the ID, Reporter, and Date Reported fields. Then there is Status, Severity, and Priority,
which follow a protocol that is specific to your company and your project, so I won’t discuss
them here.
• How frequently does it appear; or how easy is it to make happen? A bug that is seen often or
by a lot of users is going to be more important, all other things being equal. Are there lots of
different kinds of events that can trigger the bug? Is it highly vulnerable to the triggering
events? How visible and obvious is it when it appears?
• How much damage does it do when it occurs? The most important bugs are generally the
ones that stop the project, itself: so-called blocking bugs. These are bugs that prevent you
from testing. Down from that are bugs that harm or block the user. A bug that deletes data
may be more important than one that merely creates confusion in the user interface, but the
opposite can also be the case when confusion could result in dangerous user behavior.
While there are no hard rules about what specific symptoms constitute “more damage,” try
visualizing the problem, then consider the importance of the user who is affected, and how
upset they may be because of the bug.
3Andrea Hüttner, a tester from Germany who works with a multilingual team, points out that videos and
screenshots are particularly important for her team because they communicate well across language barriers;
and even if everyone “speaks the same language,” videos and picture can bridge gaps in vocabulary.
• What does the bug imply about other potential risks? A bug may be especially important
because it implies that there is a big problem in the development process itself that may
have resulted in many similar bugs that are not yet found (see “black flagging”, above).
• What bad publicity might come from the bug? Bad feelings and bad reputation can accrue
from bugs even if the objective severity is not that bad. Consider how a bug might sound
when people complain about it on social media. Consider how it might erode trust in your
company’s brand.
• Poorly worded title. The title is rambling, incoherent, generic, too long, or otherwise not
representative of the substance of the bug report.
• Reporting an unsupported opinion. A personal opinion with insufficient grounding or
evidence to support it is no basis to report a bug. The tester is not an authority; the tester is
an agent for people who are authorities.
• Reporting something that is not a problem. Even if the bug is based on an oracle other than
personal opinion, it may still be an incorrect oracle. The product may actually be intended
to work the way that it does.
• Not enough information to reproduce. There is not enough information to enable the
developer to verify the existence of the problem.
• User error. The report is based on a mistaken test, such as when an observation or operation
was not done properly.
• Reporting the wrong thing. Sometimes testers will report a small problem that sits in the
shadow of a much more important problem. That can happen when they don’t take a
moment to consider the bigger picture of the bug.
• Annoying or disrespectful reporting. The report is written in a manner that will irritate the
developer or manager and erode credibility of the tester. This happens usually when the
report is written in a sloppy way, or seems to denigrate the developer.
• Terse report. If there are not enough words, it’s too hard to figure out what is being
reported.
• Unnecessary text. Including information that is already common knowledge can make it
seem like you are writing for the sake of filling in fields, rather than with the intent to
communicate clearly.
• Multiple reports. More than one bug report packed into one record. When in doubt, break it
out.