Classes Of Testing
Feature Regression
QA
System Stress
Load Random Input
Developer
Automation Components
Startup
&
Control
Collection
&
Analysis
Visual Effects
1/ 3
1/ 3
1/ 3
Design Constraints
Load
Automation
(Repeatable, Synchronized Input) (Data Management)
Strong Abstraction
Load
Test Client
Regression
Reusable Scripts & Data Single API
Load
Test Client
Single API Key Game States
Configurable Logs & Metrics
Pass/Fail Responsiveness
Test Control
Game GUI
State
State
Commands
Presentation Layer
Presentation Layer
Logic
Logic
Regression: Too Brittle (pixel shift) Load: Too Bulky
Internal Events
Presentation Layer
Logic
Regression: Too Brittle
(Churn Rate vs Logic & Data)
View
Logic
NullView Client
Presentation Layer
Buy Lot Buy Object
~ ~
chat Im an Alpha Chimp, in a Lot. log_message Testing object purchase. log_objects buy_object chair 10 10 log_objects
Client Implementation
Composable Client
Event Generators Generators Event Event Generators
Presentation Layer
Game Logic
Composable Client
- Scripts - Console - GUI
Presentation Layer
Game Logic
Presentation Layer
Logic
Presentation Layer
Logic
?
Presentation Layer Logic
Test Client
1/ 3
1/ 3
Monkey Tests
Constant repetition of simple, isolated actions against servers Very useful:
Direct observation of servers while under constant, simple input Server processes aged all day
Examples:
Login / Logout Enter House / Leave House
Fielding: Analysis&Adaptations
Non-Determinism
Maintenance Overhead Solutions & Results
Monkey / Sniff / Load / Harness
Time (60 Minutes)
1/ 3
Maintenance Costs
Solution Approaches
Monkey / Sniff / Load / Harness
1/ 3
1/ 3
Turnaround Time
Regression
Tests were too far removed from introduction of defects.
Time to Fix
Development
Cost of Detection
Impact on Others
Development
Cost of Detection
Regression
Candidate Code
Sniff
Pass / Fail, Diagnostics
Development
Traffic Generation
Keep the pipes full & servers aging Keep the DB growing
ToolKit Usability
Workflow automation Information management Developer / Tester push button ease of use XP flavour: increasingly easy to run tests
Must be easier to run than avoid to running Must solve problems on the ground now
Debugging Data
Test Test Test Client Client Client Test Driver CPU Game Traffic
System Monitors
Server Cluster
Internal Probes
Current Work
QA test suite automation Workflow tools Integrating testing into the new features design/development process Planned work
Extend Esper Toolkit for general use Port to other Maxis projects
1/ 3
1/ 3
1/ 3
Biggest Wins
Presentation Layer Abstraction
NullView client Scripted playsessions: powerful for regression & load
Biggest Issues
Order Of Testing
MTBF / QA Test Suites should have come last Not relevant when early & game too unstable Find / Fix Lag: too distant from Development
Noise
Constant Flood Of Test Results Number of Game Defects, Testing Defects Non-Determinism / False Positives
Tabula Rasa
Tabula Rasa
Tabula Rasa
PreCheckin SniffTest
Keep Mainline working
Tabula Rasa
PreCheckin SniffTest Hourly Stability Checkers
Keep Mainline working Baseline for Developers
Tabula Rasa
PreCheckin SniffTest Hourly Stability Checkers Dedicated Tools Group
Keep Mainline working Baseline for Developers Easy to Use == Used
Tabula Rasa
PreCheckin SniffTest Hourly Stability Checkers Dedicated Tools Group Executive Support
Keep Mainline working Baseline for Developers Easy to Use == Used Radical Shifts in Process
Tabula Rasa
PreCheckin SniffTest Hourly Stability Checkers Dedicated Tools Group Executive Support Load Test: Early & Often
Keep Mainline working Baseline for Developers Easy to Use == Used Radical shifts in Process Break it before Live
Self Test
Living Doc
NullView Client
Regression Engine
Reference Client
Reference Feature
Self Test
NullView Client
Login Monkey Test
Conclusion
Estimated Impact on MMP: High
Sniff Test: kept developers working Load Test: IDd critical failures pre-launch Presentation Layer: scriptable play sessions
Repeatable, coordinated inputs @ scale and pre-checkin regression were very significant schedule accelerators.
Conclusion
Go For It
1/ 3
Wrap-up
Questions
1/ 3