Functional Testing of Game Mechanics and Systems
What this domain tests
Functional testing asks whether game systems do what the design says. The exam targets combat and damage rules, progression and unlocks, inventory and economy, save/load, UI and HUD, achievements and trophies, and localization triggers.
Core rules
- Use an oracle: the design document, a specification, a previous build or a comparable title. If no oracle exists, write the observed behaviour into the report and flag the ambiguity.
- Test the rule, then the edges: minimum and maximum values, zero, negative values, rounding, cooldowns, stacking and order of operations.
- Systems interact. A damage buff, armour value and difficulty modifier may be applied in a specific order; test the combined result, not each stat alone.
- Save/load is a round trip: save, quit, relaunch, load, compare state. Check older saves after a patch and cloud-save conflicts.
- Achievements and trophies should fire once, not retroactively on load unless designed, and should survive account changes.
- Economy tests look for currency duplication, negative balances, item loss and reward exploitation.
Worked example
Design says damage = (base 10 + weapon 5) x 1.25 on a critical hit, rounded down, with a minimum of 1. Against armour 3, the expected value is ((10+5)-3) x 1.25 = 15. The build shows 16. Reasoning: the tester first confirms the order of operations, because applying the critical multiplier before armour gives (15 x 1.25)-3 = 15.75, which also rounds to 15, so the discrepancy is not explained by ordering alone. Checking the displayed value against the internal value reveals a rounding step applied twice. The report states the formula, the input values, expected 15, actual 16 and the reproduction steps.
Traps
Checking only the final number without the formula. Assuming the UI number equals the internal value. Testing stats in isolation when the bug is in the interaction. Skipping save/load round trips. Missing one-time achievement re-triggers. Ignoring localization string length in UI.