QaveridiaTest · Improve · Launch

Guide

How to write a bug report developers can use

A useful bug report lets a developer see the problem for themselves on the first attempt. It needs a one-line summary, the page address, the browser and device, numbered steps from a known starting point, what should have happened, what happened instead, a severity, and evidence.

The test of a bug report is simple: can someone who was not there reproduce the problem from the report alone? If yes, the report has done its job, and the conversation can move straight to fixing. If no, the report starts a round of questions that can take longer than the fix itself. Everything below is about passing that test.

It helps to keep two words apart. The glossary published by the International Software Testing Qualifications Board (ISTQB) describes a defect as an imperfection in a work product where it does not meet its requirements, and a failure as the event where a system does not do what it should. A visitor sees the failure; the bug report's job is to lead a developer from that failure to the defect behind it.

The parts of a good report

1. A summary that says what and where

The summary is the line people see in a list of fifty issues, so it has to carry the essentials: what goes wrong, and where. "Contact form shows error on submit in Safari on iPhone" works. "Form broken" does not, and neither does "Urgent problem".

Avoid putting your diagnosis in the summary unless you are sure of it. "Contact form email field rejects addresses with a plus sign" is a description. "Email validation regex is wrong" is a guess about the cause, which might send the developer looking in the wrong place.

2. The page address

Copy the full URL from the address bar, including anything after a question mark. A defect can depend on a particular page, a filter, or a parameter, and "the services page" can mean three different addresses on the same site.

3. The environment

State the browser and its version, the device, and the operating system. "Safari 26 on iPhone, iOS 26" or "Firefox on Windows 11" is enough. If you tested in more than one browser, say where the problem appears and where it does not. A defect that appears only in one browser points at a different cause from one that appears everywhere.

4. Steps to reproduce

This is the part that decides whether the report works. Start from a state anyone can reach, then list each action on its own numbered line.

A clear set of steps

  1. Open https://example.ie/contact/ in a private window.
  2. Enter "Aoife O'Brien" in the Name field.
  3. Enter a valid email address and a short message.
  4. Press Send.

Each step is one action. The exact text typed is included because it matters: in this case, the apostrophe in the surname is what triggers the failure. If you do not know which detail matters, include the details anyway.

If the problem does not happen every time, say so, and note anything that seemed to make a difference, such as being logged in, the time of day, or how quickly you clicked.

5. Expected result

What should have happened, stated concretely. "The thank-you message appears and the enquiry arrives in the sales inbox." The expected result tells the developer what "fixed" means, which avoids a fix that changes the behaviour without making it right.

6. Actual result

What happened instead. Copy any error message word for word rather than paraphrasing it. If nothing visible happened, say that too, because "nothing happened" is information.

7. Severity

Severity describes impact. Four levels are enough for a small website:

A four-level severity scale
SeverityMeaning
BlockerStops launch, stops a key task for everyone, or exposes data
HighA key task fails for some visitors, browsers or devices
MediumWrong, but a workaround exists
LowCosmetic or minor wording

Keep severity and priority separate. Severity is how bad the problem is. Priority is how soon it will be fixed, which also depends on effort and timing. A low-severity typo in the home page headline may well be fixed first.

8. Evidence

A screenshot with the address bar visible, a short screen recording for anything involving movement or timing, and any red error messages from the browser console. Evidence turns a description into something a developer can look at. Our guide to collecting test evidence covers how to capture each kind.

One problem per report

Combining several problems into one report makes it hard to track which are fixed. If you find three issues on one page, write three reports. They can reference each other.

The exception is a single cause with many symptoms, such as every form on the site failing the same way. Then one report with a list of affected pages is clearer than twenty copies.

Writing for the reader

The person reading a bug report is about to spend their time on it. A few habits make that time go further:

  • Stick to facts. "The button does not respond" rather than "the button is useless".
  • Do not assume knowledge. Name the page, the field and the button as they appear on screen.
  • Separate observation from opinion. If you think the design is confusing, that is worth saying, but in a separate suggestion, not inside a defect report.
  • Check before sending. Follow your own steps once more. If you cannot reproduce it, say so in the report.

A complete example

A finished bug report

Summary: Contact form shows "Something went wrong" when the name contains an apostrophe.

Severity: High. Happens: every time.

Page: https://example.ie/contact/

Environment: Chrome on Windows 11; also seen in Safari on iPhone.

Steps to reproduce: 1. Open the page in a private window. 2. Enter "Aoife O'Brien" as the name. 3. Enter a valid email address and a message. 4. Press Send.

Expected result: the thank-you message appears and the enquiry arrives in the sales inbox.

Actual result: the red message "Something went wrong. Please try again." appears. No email arrives. Without the apostrophe, the form works.

Evidence: screenshot contact-apostrophe.png; console shows a 500 error from the form endpoint at 10:42.

This example is illustrative. The name, address and error text are invented to show the format.

Reports from people outside the team

Not every bug report comes from a tester. Customers, colleagues and members of the public notice problems too, and their reports can arrive as a single line in an email. You cannot expect them to follow a template, but you can make it easier to turn their message into a usable report:

  • Ask three questions in reply: which page were you on, what were you trying to do, and what device and browser were you using? Those answers fill the biggest gaps.
  • Ask for a screenshot if they can take one, and thank them whatever the answer.
  • Write the formal report yourself, following the structure above, and keep their original message as evidence.
  • Tell them when it is fixed. People who report problems are doing you a favour, and closing the loop makes them more likely to do it again.

If your site has a feedback link or a contact page, a short line inviting people to say which page and device they were using can save a round of questions.

Gaps that send a report back

A report that comes back with questions is missing a detail. Check for these before sending:

Gaps that send a report back, and the fix
GapWhat the developer asksHow to close it
No starting pointWhere did you start from?Begin the steps with the page address and the state, such as logged out
Vague actionWhat exactly did you click?Name the button or link as it appears on screen
Missing inputWhat did you type?Include the exact values, especially names, dates and codes
No environmentWhich browser and device?Add browser, version, device and operating system
Paraphrased errorWhat did the message say?Copy the error text word for word
No evidenceCan you show me?Attach a screenshot with the address bar visible

A report that passes this table leaves little for a developer to ask. The bug report generator has a field for each of these, which makes the gaps hard to miss.

After the report

When a developer marks a defect as fixed, the person who reported it, or a tester, should check the fix using the same steps. A fix confirmed by the reporter is closed; a fix that only the developer has seen is not yet confirmed. That retest step is the habit that stops the same defect coming back after the next release.

The free bug report generator builds reports in exactly this structure, as Markdown or plain text.

Sources

Sources were read on 4 November 2026.

Want every defect on your site written up this way?

Our reports use exactly this structure. Tell us about the release; a free email reply, carrying no obligation, says whether we could help.

Send your brief
  • Written scope
  • Fixed quote before any deposit
  • Plain-language findings