Upload
meryl-boyd
View
221
Download
1
Embed Size (px)
Citation preview
Scalability Tools: Automated Testing
(30 minutes)
Overview
Hooking up your game external tools internal game changes
Applications & Gotchas engineering, QA, operations production & management
Summary & Questions
Review: controlled tests & actionable results useful for many purposes
(1)
Repeatable tests, using N synchronized game clients
(2)
High-level, actionablereports for many audiences
Programmer Development Director Executive
Test Game
Automated testing accelerates large-scale game development & helps predictability
TimeTargetLaunch
ProjectStart
TSO case study: developer efficiency
Strong test supportWeak test support
Oops
Ship Date
Time
% Complete
autoTest
Better game
earlier
Measurable targets & projected trends give you actionable progress metrics, early enough to react
Any test(e.g. # clients)
Target
Time
Any Time(e.g. Alpha)
First PassingTest
Now
Oops
Success stories
Many game teams work with automated testing EA, Microsoft, any MMO, …
Automated testing has many highly successful applications outside of game development
Caveat: there are many ways to fail…
How to succeed
Plan for testing early Non-trivial system Architectural implications
Fast, cheap test coverage is a major change in production, be willing to adapt your processes Make sure the entire team is on board Deeper integration leads to greater value
Kearneyism: “make it easier to use than not to use”
Automated testing components
Test ManagerTest ManagerTest Selection/SetupControl N Clients
RT probes
Any Game
Startup&
Control
Scriptable Test Client(s)Scriptable Test Client(s)Emulated User Play Session(s)
Multi-client synchronization
Repeatable, Sync’edTest I/O
Report ManagerReport ManagerRaw Data Collection
Aggregation / SummarizationAlarm Triggers
Collection&
Analysis
Input systems for automated testing
algorithmic recordersscripted
Game code
Multiple test applications are required, but each input type differs in value per application. Scripting gives the best
coverage.
Hierarchical automated testing
unit systemsubsystem
• Faster ways to work with each level of code• Incremental testing avoids noise & speeds defect isolation
Multiple levels of testing gives you
Input (Scripted Test Clients)
Command steps
…Validation steps
…
Pseudo-code script of users play the game, and what the game should do in response
createAvatar [sam]enterLevel 99buyObject knifeattack [opponent]
checkAvatar [sam exists]checkLevel 99 [loaded]checkInventory [knife]checkDamage [opponent]
Test Client (Null View) Game Client
Scripted Players: Implementation
Script Engine
State
Game GUI
Game Logic
Commands
State
Presentation Layer
Or, load both
Test Client
Test-specific input & output via a data-driven test client gives maximum flexibility
Regression Load
InputAPI
ReusableScripts & Data
OutputAPI
Script-SpecificLogs & Metrics
Key Game StatesPass/Fail
Responsiveness
A Presentation Layer is often unique to a game
NullView Client
Some automation scripts should read just like QA test scripts for your game
TSO examples routeAvatar, useObject buyLot, enterLot socialInteraction (makeFriends, chat, …)
Input (data sets)
Mock data
Repeatable tests in development, faster load,
edge conditions
Unpredictable user elementfinds different bugsReal data
RandomEdge cases & real world
performance
Repeatable Debugging & benchmarking
Common Gotchas Not designing for testability
Retrofitting is expensive Blowing the implementation
Brittle code Addressing perceived needs, not real needs
Use automated testing incorrectly Testing the wrong thing @ the wrong time Not integrating with your processes Poor testing methodology
Testing the wrong time at the wrong time
C o d eC o m p le tio n
T im e
A lp h a
D es ig nS p ac e
T im e
A lp h a
Applying detailed testing while the game design is still shifting and the code is still incomplete introduces
noise and the need to keep re-writing tests
Build Acceptance Tests (BAT) Stabilize the critical path for your team
Keep people working by keeping critical things from breaking
Final Acceptance Tests (FAT) Detailed tests to measure progress against milestones “Is the game done yet?” tests need to be phased in
More gotchas: poor testing methodology & tools Case 1: recorders
Load & regression were needed; not understanding maintenance cost
Case 2: completely invalid test procedures Distorted view of what really worked (GIGO)
Case 3: poor implementation planning Limited usage (nature of tests led to high test
cost & programming skill required) Case 4: not adapting development
processes Common theme: no senior engineering
analysis committed to the testing problem
Automated Testing for Online Games
Overview
Hooking up your game external tools internal game changes
Applications engineering, QA, operations production & management
Summary & Questions
“The difference between us and a computer is that the computer is blindingly stupid, but it is capable of being stupid many, many millions of times a second.”
Douglas Adams (1997 SCO Forum)
Repeat massive numbers of simple, easily measurable tasks
Mine the results Do all the above, in
parallel, for rapid iteration
Automated testing: strengths
Semi-automated testing is best for game development
TestingRequirements
Rote work (“does door108 still open?”)
Scale Repeatability Accuracy Parallelism
Integrate the two for best impact
Automation Creative bug
hunting, visuals Judgment calls,
playability Reacting to change, Evaluating autoTest
results
Manual Testing
Plan your attack with stakeholders(retire risk early: QA, Production, Management)
Tough shipping requirements (e.g.) Scale, reliability Regression costs
Development risk Cost / risk of engineering & debugging Impact on content creation
Management risk Schedule predictability & visibility
Automation focus areas (Larry’s “top 5”)
Performance Scale is hard to get right
Critical path stability Keep team going forward
Non-determinism Gets in the way of everything
Content regression Massive, recurring $$
Compatibility & install Improves life for you & user
Yikes, that all sounds very expensive!
Yes, but remember, the alternative costs are higher and do not always work
Costs of QA for a 6 player game – you need at least 6 testers at the same time
Testers Consoles, TVs and disks & network Non-determinism
MMO regression costs: yikes2
10s to 100s of testers 10 year code life cycle Constant release iterations
Stability: keep the team working!(TSO use case: critical path analysis)
Failures on the Critical Path block access to
much of the gameenter_house ()
Test Case: Can an Avatar Sit in a Chair?
use_object ()
buy_object ()
buy_house ()
create_avatar ()
login ()
Checkin
Development
Prevent critical path code breaks that take down your team
Sniff Test
Pass / fail, diagnostics
Candidate code
Safe code
Stability & non-determinism (monkey tests)
Code Repository Compilers
Continual Repetition of Critical Path Unit Tests
Reference Servers
AutoTest addresses non-determinism
Detection & reproduction of race condition defects Even low probability errors are exposed
with sufficient testing (random, structured, load, aging)
Measurability of race condition defects Occurs x% of the time, over 400x test
runs
Monkey test: enterLot ()
Monkey test: 3 * enterLot ()
Four different behaviors in thirty runs!
Content testing (areas)
Regression Error detection Balancing / tuning
This topic is a tutorial in and of itself Content regression is a huge cost problem Many ways to automate it (algorithmic, scripted
& combined, …) Differs wildly across game genres
Content testing (more examples)
Light mapping, shadow detection Asset correctness / sameness Compatibility testing Armor / damage Class balances Validating against old userData … (unique to each game)
Automated Testing for Online Games
(One Hour)Overview
Hooking up your game external tools internal game changes
Applications engineering, QA, operations production & management
Summary & Questions
Summary: automated testing
Start early & make it easy to use Strongly impacts your success
The bigger & more complex your game, the more automated testing you need
You need commitment across the team Engineering, QA, management, content
creation
Q&A & other resources My email: larry.mellon_@_emergent.net More material on automated testing for games
http://www.maggotranch.com/mmp.html Last year’s online engineering slides This year’s slides Talks on automated testing & scaling the development
process www.amazon.com: “Massively Multiplayer Game
Development II” Chapters on automated testing and automated metrics
systems www.gamasutra.com: Dag Frommhold, Fabian Röken
Lengthy article on applying automated testing in games Microsoft: various groups & writings
From outside the gaming world Kent Beck: anything on test-driven development http://www.martinfowler.com/articles/continuousIntegratio
n.html#id108619: Continual integration testing
Amazon & Google: inside & outside our industry