“Testing Battle.net (before deploying to millions of players)"
summary
Battle.net servers are C++ and matchmaking must scale to millions, so code separates heavy logic into a base class and shunts RPC/config interactions into a derived implementation (logic-in-base, interactions-in-impl), uses dependency injection and small constructors, and adds timed complexity checks (default N=100, multiplier 32) to detect algorithmic growth. A QuickCheck-like property-based generate/shrink framework auto‑generates inputs, shrinks failures (including tuples/pairs), runs locally during development (not CI by default), and the example code is on GitHub under MIT.
AI-written summary · about
chapters (8)
- 0:00Introduction to testing Battle.net
- 1:48Legacy code testing challenges
- 8:10Separating logic for testability
- 15:36Testing algorithmic efficiency
- 23:30Property-based testing with Arbitrary
- 32:20Demo of Arbitrary in action
- 41:10Testing patterns and future work
- 50:09Q&A session
related talks
44mTaking CI and automated testing seriously
46mTestability and C++ API Design
27mTesting Before You Scale & Making Friends While You Do It
45mProperty based tests for the masses
52mA Monolith for Hundreds of Client Versions: How We Write and Maintain Tests
36mStateful property-based testing: with a game logic case study
45mAutomated Tests in World of Tanks: bots-net to Test Quality
01h 01mBack to Basics: Debugging and Testing in C++ Software Development
