Make Video Games Like a Pro

Hi, I’m Paul Miller and today’s topic is game testing. When you just starting making games, testing is typically not on your mind. There are so many problems to be solved before you have anything half-decent to test. When you grow in experience you will find good solutions to most of those development issues and testing for correctness and quality will become more and more important. In this article we will explore fundamentals of game testing.

In software development testing is an important and complex process. There are many books dedicated to teach you to do it well. There are lots of different types of tests used in practice. There are even whole agile methodologies built around them, like Test-Driven Development. It makes writing automatic tests almost more important than creating the code for testing in the first place. In games ensuring quality is especially involving since we have to check also if our games are fun to play which is a rather elusive concept. Video games are generally harder to test properly than regular software. At the other hand, game failures are less important than in many other, more critical fields.

Modern software houses take testing very seriously. Each major company has its own Quality Assurance team. These people test software and look for various flaws full-time. In a larger firm it may be a sizable group. Testing of normal software is often highly formalized and organized which has to be done a bit differently with video games. The problem with computer entertainment is that judging quality of a product is only partially objective. You can always count crashes of your game, but you can’t count how much fun people have. The result of this is that fully testing games for quality is to certain extent an art rather than science.

There are many different types of tests in use among software developers. When you first learn about it, it may be even a bit overwhelming. At the core games are programs, so you can use most industry testing methodologies directly or with some modifications. It’s useful to organize your thinking about testing and realize which game areas are most important to verify. I think those four areas are: reliability, interface, gameplay and performance. If you thoroughly validate these four elements, your game will not suffer from any major problems. Of course it’s easier said than done, but you have do it in order to deliver quality to your customers.

There are two main approaches to software testing: white-box and black-box. White box method assumes that testers have understanding of how the program works internally. White-box tests are often designed by programmers who implement the code to be tested. These methods are highly technical in nature. One popular type of white-box tests is code coverage analysis. The second approach is black-box testing. Here it’s assumed that quality assurance people don’t know how the program is built. They only judge how it appears to work. This type of testing doesn’t require programmers and regular users can do it with little training. One type of popular black-box tests is verifying functionality through running use cases which are designed according to program specifications.

Unit testing is the most fundamental type of program verification. It’s a variant of white-box testing. Unit tests are little automated procedures which check code for correctness at the most basic level. In structured programming individual functions are tested. In object-oriented programming individual classes are verified. It’s possible to design a more elaborate unit testing system. It may for ex. include metrics analysis, peer code reviews, code coverage¬†analysis and other software testing practices.

Two another variants of popular software tests are integration testing and system testing. Integration testing is a module or component level method. The idea is to verify that interfaces of different parts of a program are compatible and that they are functioning as specified. These parts are modules in structured programming or components in object-oriented programming. They are integrated together and tested if they work correctly as a whole. System testing is similar, but in this case the complete software package is tested against specifications for ex. by running predefined use cases. Integration and system testing are variants of white-box testing.

Even most gamers are familiar with alpha and beta testing. Alpha tests are somewhat similar to system tests, but focused more on customer wants rather than raw specifications. Larger software houses have internal teams of full-time testers who run those alpha tests. These people typically write some kind of reports where they describe flaws they’ve found. Sometimes it may be less formal where testers are treated like customers and asked for their subjective opinions. Beta tests can be considered a form of external user acceptance testing. They are public and the number of testers is far greater than in any other phase of a project. Both alpha and beta tests are variants of black-box testing.

Aside from classic software testing video games must be also playtested. Playtesting isblack-box method which involves real players checking the game holistically. Playtesting is very important part of development. It’s especially crucial for highly innovative games which have unique gameplay. Game developers, who spend enormous amount of time on their game, can lose objectivity and fall in love with their own creation, like with their own baby. External players have typically a much more sober view of the game and they can rather easily find various flaws which are hidden from core developers. One of the classic examples is validating game difficulty. Developers play recent builds all the time and as a result they may tune difficulty far to high for the general audience without even noticing it. External playtesters can catch this problem very quickly.

Getting into testing is one the easiest jobs to get in the game industry. If you have no marketable skills at all, but you love playing games, you may have what it takes to became a decent tester. Spending all day long hunting for bugs and flaws is not the most glamorous jobs there is. As a quality assurence employee you will not simply get paid for playing games full-time. Testing a game is very different from a normal playthrough. In many companies the best and most valuable testers have some career options. There are some cases where a humble tester became a lead designer for some later project. Think about it. You can get an easy, entry level job in games and later even become a designer.

There aren’t any good books precisely about game testing, but there are many about general software testing. I recommend “Quality Code” by Vance to learn fundamentals of software verification. “” by Agans will teach you solid, universal principles of removing bugs from software and hardware. “Clean Code” by Martin is an excellent work about how to write code which is of high quality at the outset. “Game Design Workshop” by Fullerton is a good volume about playcentric game design.

I hope you enjoyed this brief overview of game testing. Constant verification of software is necessary to achieve high quality and strong sales. Next topic is game support. If you enjoyed this article: like it, comment it, share it and consider supporting me on Patreon. That’s all for today. Thank you for your time.