What's the origin of "beta" to describe a "user-testing" phase of computer development?
There are some phases in Software Developing.
- Pre-alpha refers to everything that is prior to testing.
- Alpha is when the product is ready to go through the first phase of testing. It's not exactly true that Alpha means only internal testing, or at least this mainly refers to proprietary software. In Open Source softwares, Alpha versions might be publicly available. There might be several Alpha versions.
- Beta is the second phase in testing. Its focus is not to implement features anymore, (it is called feature complete), but rather to improve its user-friendliness. Everything is taken care by beta-testers that are "usually customers or prospective customers of the organization that develops the software, willing to test the software without charge, often receiving the final software free of charge or for a reduced price."
About other names being used, here's some info:
Other Greek letters, such as gamma and delta, are sometimes used to indicate versions that are substantially complete, but still undergoing testing, with omega or zenith used to indicate final testing versions that are believed to be relatively bug-free, ready for production.
You can read more about this here.
About the origins of this usage, I found a page written by Jeff Atwood, where he writes:
But where did these terms originate? There's an uncited Wikipedia section that claims the alpha and beta monikers came, as did so many other things, from the golden days of IBM:
The term beta test comes from an IBM hardware product test convention, dating back to punched card tabulating and sorting machines. Hardware first went through an alpha test for preliminary functionality and small scale manufacturing feasibility. Then came a beta test, by people or groups other than the developers, to verify that the hardware correctly performed the functions it was supposed to, and that it could be manufactured at scales necessary for the market. And finally, a c test to verify final safety. With the advent of programmable computers and the first shareable software programs, IBM used the same terminology for testing software. As other companies began developing software for their own use, and for distribution to others, the terminology stuck -- and is now part of our common vocabulary.
Alpha is, in fact, still used: an alpha release of a software program is typically complete enough to run in a limited fashion for testing purposes, but lacks significant functionality or content in some areas, and may crash or otherwise fail in expected or unexpected ways. Alpha testing is usually conducted internally or among a very small and trusted group of outsiders.
It is easy to see, therefore, how beta logically follows alpha: the program is still not ready to ship, but it more complete than it is during the alpha phase, and the group of testers is larger than it is during alpha but not nearly as large as the anticipated user base of the final product is anticipated to be.
"Release candidate," which I believe is of more recent vintage than the other two terms, indicates software that is at a more advanced state than beta. Typically it means exactly what it says--that the software is believed to be ready for release, unless additional siginificant bugs are uncovered--although the distinction between a late beta and an early RC tends to get obscured from time to time.
Beta is not equivalent to release candidate. A beta is usually internal or released to a controlled group of testers, whereas a RC is a version of the product that can be released to the public if no major issues are found.
Of course there is alpha; it is internal only, never seen by the outside world.
See here for a detailed explanation.