A Beta Test is a term used in the development of new software or video games. Internal testing is refered to as the Alpha Test, where only the programmers are able to interact with the programming and they test out the various features. The Beta is when the software is in a useable or near-completed state but not ready for public use. At that stage it is sent into testing outside the programming circle.
There are usually additional stages sometimes called Gamma, but to the regular public this is sometimes manifested as an "Open Beta" where a partial component of the software or a bare skeleton of the program is available for general download and use. This is to give very close real world interaction before the full item is ready for release.
The development stages of software generally go as follows, this being the road map that IBM laid out
in the 1930s:
: A proof-of-concept of the basic mechanics of the program. In a racing game, it might be a program that lets a single vehicle drive around a single map.
: An incomplete version of the program, used to test individual parts. In our racing game example, the AI might be missing or the physics are simplified, and many of the tracks are missing.
: The software is stable enough to allow significant testing. Features may still be incomplete, or non-existent, but throughout this phase they will be added and tested. This is intended to find bugs and test features. In a racing game, the AI may make incredibly stupid decisions, tracks may be untextured, and cars may clip through walls or fly into the air. It may even be possible to win a 5-minute track in 2 seconds by simply backing up and crossing the finish line.
: All major and most or all minor features are in the game in some form. They may still be incomplete or buggy. This is intended to find more obscure bugs, balance or tune features, and otherwise ensure the software works as intended. In a racing game, the AI may still be goaded into stupid decisions, a certain part of the wall may not have collision, but almost all tracks exist and the cars (mostly) stay on the track. Note that according to the original IBM test specification, this is the stage at which all
features are to be complete with no room to add anything else, although modern software developers are sometimes a bit more flexible with this, particularly when a feature can demonstratively improve the final product. If someone claims a product is in "beta" with major features missing, however (using the previous example, a racing game that's supposed to feature multi-level tracks but only one clipping plane works) then it isn't really in beta. This happens with depressing regularity.
Gamma/Public Beta/Release Candidate
of the features have been implemented and tested; this is, theoretically, a product that you could sell immediately (thus the term "release candidate"). If new bugs are found here, most won't be fixed — only showstopping bugs will. Certain members of the public may get copies. In games, Prima and Brady guides will get their copies, as will preview journalists. In other software, large corporate clients may receive advance copies so they can ensure their custom software still works with the newer version. This is the very final last call for only the worst bugs; no new features will be added, though some features may be cut. In a racing game, all tracks and cars will be in the game and look like they will when released, the minor clipping through a barrel will not be fixed, and the spray-painting feature that randomly crashes the game will be cut. A trend that started in the late 2000's was publishers putting a stop to the use of the word "Demo", instead changing to the use of "Public Beta". Publishers and creators realised that by changing the name, people who would otherwise have refused to purchase a game with a bad "Demo", would now forgive the developer for a "Beta" under the mistaken impression that the "Beta" would be used to improve the game, or that the player could choose to believe that it was "just a beta" and that it would be magically fixed upon release.
: The software is produced and distributed for sale.
See Perpetual Beta
and Obvious Beta