Game Development Reference
Testing must be important to game publishers because of all the trouble they go
through to staff and fund testers and then organize and manage the rounds of beta
testing that precede the official game release. It's important to console providers
because they require certain quality standards to be met before they will allow a title
to ship for their box. Mobile game testing is important to handset manufacturers and
wireless carriers in order to get approved for their devices and networks.
Testing is important to the development team. They rely on testers to find problems
in the code. The testers bear the burden of getting blamed when serious defects escape
their notice. If defects do escape, someone wonders why they paid all that money for
Testing is important because of the contractual commitments and complex nature of
the software required to deliver a top-notch game. Every time someone outside of
your team or company is going to get a look at the game, it is going to be scrutinized
and publicized. If all goes well, it might get canonized. If not, then your sales and prof-
its could vaporize.
Despite all of the staffing, funding, and caring, games still get made wrong.
Let's leave the people behind for a minute and look at the software. Software can fail
in a variety of ways. It is useful to classify defects into categories that reveal how the
defect was introduced and how it can be found or, even better, avoided in the future.
The Orthogonal Defect Classification (ODC) system, developed by IBM, was devel-
oped for this purpose. This system defines multiple categories of classification,
depending on the development activity that is taking place. This chapter explores the
eight defect type classifications, and examines their relevance to game defects. The
defect type classifies the way the defect was introduced into the code. As we go along,
keep in mind that each defect can be either the result of incorrect implementation or
of code that is simply missing. The defect types listed next summarize the different
categories of software elements that go into producing the game code: