QA passes and bug tracking

Play this lesson

Tests, playtests and QA

Garden Defense 1.1 is nearly ready. Every automated test is green and playtesters loved the new pest. Then Remy opens the shop on a German tablet: the Buy button is cut in half.

QA (quality assurance) means people checking the whole game against a written plan before release, hunting for anything broken. It fills a gap the other two leave:

Quick check

Which question is a QA pass built to answer?

  1. Is the new pest fun to fight?
  2. Does every screen work on every device, browser and language we support?
  3. Does scoreFor(1, 2) return 20?
Show the answer

Does every screen work on every device, browser and language we support?

Fun is a playtest question, and one function's answer is a unit test's job. QA checks the finished game, everywhere it will run, before players see it.

The test plan

A test plan is the checklist for a QA pass, written before release so nothing depends on memory. It also lists odd cases: no internet, a phone call mid-wave, a full phone.

True story: pulled from the PlayStation Store

Cyberpunk 2077 came out on 10 December 2020, after more than 8 million pre-orders. Early feedback was mostly positive, but players on the base PlayStation 4 and Xbox One, the older consoles, reported glitches and bugs.

On 14 December, its maker CD PROJEKT promised patches and offered refunds. On 18 December, Sony removed the game from the PlayStation Store. It came back on 21 June 2021, six months later.

Every device we support goes on the test plan, the oldest included. A game that runs well on a new machine can still fail on an old one.

Source: CD PROJEKT current report 66/2020 (removal from the PlayStation Store), cdprojekt.com

A bug report a stranger could follow

Players report bugs roughly (the Updates and player feedback lesson in Stage 9). A QA report is precise enough for someone who has never seen the bug:

Bug report

#qa, Kai
Title: Shop takes coins, no hat. Steps: 1) open shop 2) buy Sprig hat. Expected: hat on Sprig. Actual: 50 coins gone, no hat. Screenshot attached.

What is the most important thing missing from Kai's report?

  1. The build number and device, because the bug may only happen on one version or phone
  2. How annoyed Kai felt when it happened
  3. Who wrote the shop code, so they can be blamed
Show the answer

The build number and device, because the bug may only happen on one version or phone

Without the build and device, Remy might test the wrong version on the wrong phone and say "can't reproduce". Feelings and blame don't help anyone fix it.

Severity vs priority

Severity is how bad a bug is for the player. Many studios use levels: critical (crash, lost saves, broken payments), major (a feature is broken), minor (annoying, with a workaround) and cosmetic (looks wrong).

Priority is how soon we fix it, decided by the team. It also weighs how many players hit it and where.

They usually match, but not always. A typo in the game's name on the title screen is cosmetic, yet every player sees it: high priority. A crash that only happens on one ten-year-old phone is critical, yet may wait.

Our bug tracker: GitHub Issues

Every bug becomes an issue, GitHub's task card (the Planning lesson in Stage 2). A pull request that says Fixes #87 closes it once merged into main.

Bolt says: Triage means sorting by how serious things are. In a short triage meeting a few times a week, the team goes through new issues: can we reproduce it? Is it a duplicate? Then it gets a severity, a priority, an owner and a milestone.

Triage call

#qa, Remy
Two bugs left before 1.1. A: the title screen says "Garden Defnese". B: the game crashes if you rotate one old tablet model 20 times on the pause screen.

Which triage decision fits best?

  1. A is cosmetic but high priority, because every player sees it. B is critical but so rare it may wait for 1.1.1
  2. A is critical, because spelling matters more than anything
  3. Close both, because neither loses saves
Show the answer

A is cosmetic but high priority, because every player sees it. B is critical but so rare it may wait for 1.1.1

Severity and priority are different questions. The typo is harmless but seen by everyone on launch day, while the crash is serious but almost nobody will ever trigger it. Both stay on the list with an owner.

Regression checks and release candidates

A fix can break something nearby. So when a bug is fixed, QA first verifies it on the same build and device, then runs a short regression check: the features around the fix, to catch anything that used to work and broke. The bug also gets an automated regression test (Stage 2), so it can never sneak back.

Near the end comes a release candidate (RC): a build that ships unless something serious turns up, like 1.1.0-rc.1. From then on, no new features, only fixes. Every fix makes a new candidate, rc.2, which gets checked again.

Go or no-go

Before submitting, the team holds a go/no-go meeting with one question: is this release candidate good enough for players? The rules are agreed in advance: any open critical bug, or a failed payment test, means no-go.

"Go" means the exact RC build goes to the stores' testers and review (the Testers and review lesson). "No-go" is not failure. It means QA did its job, and players never met that bug.

Bolt says: Our build is checked and ready. But what if someone copies it and shares it without paying? Next: piracy and DRM.

Fact-checked 11 October 2026