This article only describes one highly specialized aspect of its associated subject. Please help improve this article by adding more general information. The talk page may contain suggestions.(January 2017)
Game testing, a subset of game development, is a software testing process for quality control of video games. The primary function of game testing is the discovery and documentation of software defects (aka bugs). Interactive entertainment software testing is a highly technical field requiring computing expertise, analytic competence, critical evaluation skills, and endurance. In recent years the field of game testing has come under fire for being excessively strenuous and unrewarding, both financially and emotionally.
In the early days of computer and video games, the developer was in charge of all the testing. No more than one or two testers were required due to the limited scope of the games. In some cases, the programmers could handle all the testing.
As games become more complex, a larger pool of QA resources, called "Quality Assessment" or "Quality Assurance" is necessary. Most publishers employ a large QA staff for testing various games from different developers. Despite the large QA infrastructure most publishers have, many developers retain a small group of testers to provide on-the-spot QA.
Now most game developers rely on their highly technical and game savvy testers to find glitches and 'bugs' in either the programming code or graphic layers. Game testers usually have a background playing a variety of different games on a multitude of platforms. They must be able to notate and reference any problems they find in detailed reports, meet deadlines with assignments and have the skill level to complete the game titles on their most difficult settings. Most of the time the position of game tester is a highly stressful and competitive position with little pay yet is highly sought after for it serves as a doorway into the industry.
A common misconception is that all game testers enjoy alpha or beta version of the game and report occasionally found bugs. In contrast, game testing is highly focused on finding bugs using established and often tedious methodologies before alpha version.
Quality assurance is a critical component in game development, though the video game industry does not have a standard methodology. Instead developers and publishers have their own methods. Small developers do not generally have QA staff; however, large companies may employ QA teams full-time. High-profile commercial games are professionally and efficiently tested by publisher QA department.
Testing starts as soon as first code is written and increases as the game progresses towards completion. The main QA team will monitor the game from its first submission to QA until as late as post-production. Early in the game development process the testing team is small and focuses on daily feedback for new code. As the game approaches alpha stage, more team members are employed and test plans are written. Sometimes features that are not bugs are reported as bugs and sometimes the programming team fails to fix issues first time around. A good bug-reporting system may help the programmers work efficiently. As the projects enters beta stage, the testing team will have clear assignments for each day. Tester feedback may determine final decisions of exclusion or inclusion of final features. Introducing testers with fresh perspectives may help identify new bugs. At this point the lead tester communicates with the producer and department heads daily. If the developer has an external publisher, then coordination with publisher's QA team starts. For console games, a build for the console company QA team is sent. Beta testing may involve volunteers, for example, if the game is multiplayer.
Testers receive scheduled uniquely identifiable game builds from the developers. The game is play-tested and testers note any uncovered errors. These may range from bugs to art glitches to logic errors and level bugs. Testing requires creative gameplay to discover often subtle bugs. Some bugs are easy to document, but many require detailed description so a developer can replicate or find the bug. Testers implement concurrency control to avoid logging bugs multiple times. Many video game companies separate technical requirement testing from functionality testing altogether since a different testing skillset is required.
If a video game development enters crunch time before a deadline, the game-test team is required to test late-added features and content without delay. During this period staff from other departments may contribute to the testing--especially in multiplayer games.
Most companies rank bugs according to an estimate of their severity:
A bugs are critical bugs that prevent the game from being shipped, for example, they may crash the game.
B bugs are essential problems that require attention; however, the game may still be playable. Multiple B bugs are equally severe to an A bug.
C bugs are small and obscure problems, often in form of recommendation rather than bugs.
A game tester is a member of a development team who performs game testing.
The organization of staff differs between organizations; a typical company may employ the following roles associated with testing disciplines:
Game producers are responsible for setting testing deadlines in coordination with marketing and quality assurance. They also manage many items outside of game testing, relating to the overall production of a title. Their approval is typically required for final submission or "gold" status.
Lead tester, test lead or QA lead is the person responsible for the game working correctly and managing bug lists. A lead tester manages the QA staff. The lead tester works closely with designers and programmers, especially towards the end of the project. The lead tester is responsible for tracking bug reports and ensuring that they are fixed. They are also responsible that QA teams produce formal and complete reports. This includes discarding duplicate and erroneous bug reports, as well as requesting clarifications. As the game nears alpha and beta stages, lead tester brings more testers into the team, coordinates with external testing teams and works with management and producers. Some companies may prevent the game going gold until lead tester approves it. Lead testers are also typically responsible for compiling representative samples of game footage for submission to regulatory bodies such as the ESRB and PEGI.
Testers are responsible for checking that the game works, is easy to use, has actions that make sense, and contains fun gameplay. Testers need to write accurate and specific bug reports, and if possible providing descriptions of how the bug can be reproduced. Testers may be assigned to a single game during its entire production, or brought onto other projects as demanded by the department's schedule and specific needs.
SDET (Software Development Engineer in Test) or Technical Testers are responsible for building automated test cases and frameworks as well as managing complex test problems such as overall game performance and security. These individuals usually have strong software development skills but with a focus on writing software which exposes defects in other applications. Specific roles and duties will vary between studios. Many games are developed without any Technical Testers.
Game QA is less technical than general software QA. Game testers most often require experience however occasionally only a high school diploma and with no technical expertise, suffice. Game testing is normally a full-time job for experienced testers; however, many employees are hired as temporary staff, such as beta testers. In some cases, testers employed by a publisher may be sent to work at the developer's site. The most aggressive recruiting season is late summer/early autumn, as this is the start of the crunch period for games to be finished and shipped in time for the holiday season.
Some games studios are starting to take a more technical approach to game QA that is more inline with traditional software testing. Technical Test positions are still fairly rare throughout the industry but these jobs are often full-time positions with long term career paths and require a 4-year computer science degree and significant experience with test automation.
Some testers use the job as a stepping stone in the game industry. QA résumés, which display non-technical skill sets, tend towards management, than to marketing or production. Applicants for programming, art, or design positions need to demonstrate technical skills in these areas.
Game testing personnel are usually paid hourly (around US$10-12 an hour). Testing management is usually more lucrative, and requires experience and often a college education. An annual survey found that testers earn an average of $39k annually. Testers with less than three years' experience earn an average of US$25k while testers with over three years' experience earn US$43k. Testing leads, with over six years' experience, earn on an average of US$71k a year. Typically, they will make $35-45k with less experience.
Some employers offer bonuses for the number of bugs found.
A typical bug report progression of testing process is seen below:
Identification. Incorrect program behavior is analyzed and identified as a bug.
Reporting. The bug is reported to the developers using a defect tracking system. The circumstances of the bug and steps to reproduce are included in the report. Developers may request additional documentation such as a real-time video of the bug's manifestation.
Analysis. The developer responsible for the bug, such as an artist, programmer or game designer checks the malfunction. This is outside the scope of game tester duties, although inconsistencies in the report may require more information or evidence from the tester.
Verification. After the developer fixes the issue, the tester verifies that the bug no longer occurs. Not all bugs are addressed by the developer, for example, some bugs may be claimed as features (expressed as "NAB" or "not a bug"), and may also be "waived" (given permission to be ignored) by producers, game designers, or even lead testers, according to company policy.
There is no standard method for game testing, and most methodologies are developed by individual video game developers and publishers. Methodologies are continuously refined and may differ for different types of games (for example, the methodology for testing an MMORPG will be different from testing a casual game). Many methods, such as unit testing, are borrowed directly from general software testing techniques. Outlined below are the most important methodologies, specific to video games.
Functionality testing is most commonly associated with the phrase "game testing", as it entails playing the game in some form. Functionality testing does not require extensive technical knowledge. Functionality testers look for general problems within the game itself or its user interface, such as stability issues, game mechanic issues, and game asset integrity.
Compliance testing is the reason for the existence of game testing labs.[clarification needed] First-party licensors for console platforms have strict technical requirements titles licensed for their platforms. For example, Sony publishes a Technical Requirements Checklist (TRC), Microsoft publishes Xbox Requirements (XR), and Nintendo publishes a set of "guidelines" (Lotcheck). Some of these requirements are highly technical and fall outside the scope of game testing. Other parts, most notably the formatting of standard error messages, handling of memory card data, and handling of legally trademarked and copyrighted material, are the responsibility of the game testers. Even a single violation in submission for license approval may have the game rejected, possibly incurring additional costs in further testing and resubmission. In addition, the delay may cause the title to miss an important launch window, potentially costing the publisher even larger sums of money.
The requirements are proprietary documents released to developers and publishers under confidentiality agreements. They are not available for the general public to review, although familiarity with these standards is considered a valuable skill to have as a tester.
Compliance may also refer to regulatory bodies such as the ESRB and PEGI, if the game targets a particular content rating. Testers must report objectionable content that may be inappropriate for the desired rating. Similar to licensing, games that do not receive the desired rating must be re-edited, retested, and resubmitted at additional cost.
Compatibility testing is normally required for PC titles, nearing the end of development as much of the compatibility depends on the final build of the game. Often two rounds of compatibility tests are done - early in beta to allow time for issue resolution, and late in beta or during release candidate. Compatibility testing team test major functionality of the game on various configurations of hardware. Usually a list of commercially important hardware is supplied by the publisher.
Compatibility testing ensures that the game runs on different configurations of hardware and software. The hardware encompasses brands of different manufacturers and assorted input peripherals such as gamepads and joysticks.
The testers also evaluate performance and results are used for game's advertised minimum system requirements. Compatibility or performance issues may be either fixed by the developer or, in case of legacy hardware and software, support may be dropped.
Localization testing act as in-game text editors. Although general text issues are a part of functionality testing, QA departments may employ dedicated localization testers. In particular, early Japanese game translations were rife with errors, and in recent years localization testers are employed to make technical corrections and review translation work of game scripts - catalogued collections of all the in-game text. Testers native to the region where a game is marketed may be employed to ensure the accuracy and quality of a game's localization.
Soak testing, in the context of video games, involves leaving the game running for prolonged periods time in various modes of operation, such as idling, paused, or at the title screen. This testing requires no user interaction beyond initial setup, and is usually managed by lead testers. Automated tools may be used for simulating repetitive actions, such mouse clicks. Soaking can detect memory leaks or rounding errors that manifest only over time. Soak tests are one of the compliance requirements.
Beta testing is done during beta stage of development. Often this refers to the first publicly available version of a game. Public betas are effective because thousands of fans may find bugs that the developer's testers did not.
Regression testing is performed once a bug has been fixed by the programmers. QA checks to see whether the bug is still there (regression) and then runs similar tests to see whether the fix broke something else. That second stage is often called "halo testing"; it involves testing all around a bug, looking for other bugs.
Load testing tests the limits of a system, such as the number of players on an MMO server, the number of sprites active on the screen, or the number of threads running in a particular program. Load testing requires either a large group of testers or software that emulates heavy activity. Load testing also measures the capability of an application to function correctly under load.
Multiplayer testing may involve separate multiplayer QA team if the game has significant multiplayer portions. This testing is more common with PC games. The testers ensure that all connectivity methods (modem, LAN, Internet) are working. This allows single player and multiplayer testing to occur in parallel.
Mobile game testing is mainly done manually or as automated during the development. Mobile game testing typically includes all above testing types. Popular mobile game platforms are Android and iOS. Mobile game test automation with image recognition features can be found in Testdroid.
Implementing test automation for mobile application development process is the best way to gain agile, effective use of resources and time for testing.
The most popular test automation frameworks for Android testing:
For consoles, the majority of testing is not performed on a normal system or consumer unit. Special test equipment is provided to developers and publishers. The most significant tools are the test or debug kits, and the dev kits. The main difference from consumer units is the ability to load games from a burned disc, USB stick, or hard drive. The console can also be set to any publishing region. This allows game developers to produce copies for testing. This functionality is not present in consumer units to combat software piracy and grey-market imports.
Test kits have the same hardware specifications and overall appearance as a consumer unit, though often with additional ports and connectors for other testing equipment. Test kits contain additional options, such as running automated compliance checks, especially with regard to save data. The system software also allows the user to capture memory dumps for aid in debugging.
Dev kits are not normally used by game testers, but are used by programmers for lower-level testing. In addition to the features of a test kit, dev kits usually have higher hardware specifications, most notably increased system memory. This allows developers to estimate early game performance without worrying about optimizations. Dev kits are usually larger and look different from a test kit or consumer unit.