The purpose of a bug report is to let somebody fix the bug without talking to you. Measured against that, most reports fail, and the cost is paid by the developer who has to go hunting.
Numbered steps that start from a known state
"Crashes in level 3" is not a repro. A repro begins somewhere a developer can get to — fresh install, existing save, specific menu — and proceeds in numbered steps, each one an action, ending with what happened and what should have happened instead.
1. Fresh install, skip the tutorial.
2. Play to level 3.
3. Pause during the boss intro cinematic.
4. Background the app for about 30 seconds.
5. Resume.
Expected: cinematic resumes.
Actual: black screen, audio keeps playing, no input accepted.
Severity, decided on impact rather than annoyance
Without ranking, everything arrives flat and the developer does the triage — which is the work you were supposed to do. A workable scale:
| Rank | Means |
|---|---|
| Blocker | Progress is impossible. Crash, hard lock, purchase fails. |
| Major | A feature is broken but there is a way around it. |
| Minor | Wrong behaviour that does not stop play. |
| Cosmetic | Visual only. Alignment, clipping, a typo. |
The build and the device, on every single finding
A bug without a build number is not actionable next week. Every finding carries the build or version, the device and OS, and — where it matters — the network conditions and whether the account was fresh.
This is also what makes a report verifiable. A fix is confirmed against the same build and the same device, or it is not confirmed.
Evidence, where words are slower than a clip
A screenshot for anything visual. A short clip for anything about timing, physics or sequence. A log excerpt where there is a stack trace. Not everything needs it; the test is whether a developer reading it cold would get there faster with the evidence than without.
And a regression pass afterwards
A bug is closed when it has been retested on a build that contains the fix, and the area around it has been checked for what the fix moved. Closing on a developer's word is how the same bug arrives again two releases later.
This is what we do day to day — game, app and website QA at Factorial Studio.