Factorial Studio›Blog›Game QA
Game QA

What a Usable Bug Report Actually Contains

A report that cannot be reproduced is not a report. It is a rumour with a ticket number.

By Muhammad Qasim·

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:

RankMeans
BlockerProgress is impossible. Crash, hard lock, purchase fails.
MajorA feature is broken but there is a way around it.
MinorWrong behaviour that does not stop play.
CosmeticVisual 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.

The short version Numbered steps from a known state, a severity you can defend, the build and device on every finding, and a regression pass after the fix. Everything else is optional.

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.

Muhammad Qasim
Muhammad Qasim
Founder & CEO, Factorial Studio

Runs Factorial Studio in Lahore — game QA, WebGL porting, console certification and playable ads. Has shipped and tested games on Unity and Unreal for studios in eight countries.

Got a build that needs this kind of attention?

QA, WebGL porting, console certification and playable ads — send us the build and we will tell you what we find.

Start a project →