The usual failure is binary: either a full regression pass that nobody has time for, so it gets skipped, or no regression at all and a live fix every second Friday.
Build a core suite and freeze it
Twenty to forty cases that cover the paths where breakage is fatal:
- Fresh install through to first session complete
- Existing save loads and progress is intact
- The core loop, start to finish, once
- Every purchase path, including restore
- Ads: load, show, reward granted, and the no-fill case
- Suspend and resume at three different points
- No connection at launch, and connection lost mid-session
This suite runs every release, unchanged. Its value is precisely that it does not change — a failure means something regressed, not that the test is new.
Then test what moved
Around the core suite, test the area the release actually touched, plus whatever that area talks to. The second half is where most regressions hide: a fix to the shop breaks the inventory, and nobody looked at the inventory.
Automate the dull half
Launch, load a save, walk a scripted path, assert no crash and no error log. It will never replace a human playing, but it catches the catastrophic failures before anyone opens the build, and it costs nothing to run.
This is what we do day to day — game, app and website QA at Factorial Studio.