How Software Gets Tested
Software testing is the most common method of checking and assessing that a software application does what it is designed to do. By testing software, bugs are eliminated, which increases reliability and consistency of workflow, thereby increasing performance.
There are multiple different kinds of software testing, each of which has a different purpose. Following is a general list of software testing types.
Even the simplest software applications are tested in multiple ways, but you might notice in the above list that Beta testing isn't typically considered to be a formal part of the software testing process. As you can read in the article What is a Beta Tester?, that one additional form of testing just might be the most important form.
From the 1940s, when modern day software was just beginning to emerge, to the mid-1980s, the type of troubleshooting practice that dominated involved simply looking for inconsistencies and repairing them. Low-level software testing is generally referred to as finding and identifying bugs. Although the concept of finding bugs, in the sense of flaws or glitches, in one's designs goes all the way back to at least the time of Thomas Edison, the modern computer age was coincidentally introduced by a machine the size of a room that would repeatedly act in an unexpected way. The machine continued to have unexplained problems until a troubleshooting technician happened to find a month in one of its components. After the bug was removed, the machine started operating as expected, and bug repair forever became the official name for repairing both software and electronic designs.
By the 1990s, the basic approach of bug repair at larger publishers had been largely replaced by more formal techniques that were more in line with the kinds of quality assurance techniques performed on other types of products, and by the time of this writing, it is possible to see systems that can put software through a battery of different, unrelated tests, all for the singular purpose of identifying any kind of problem that might not have been seen or imagined during the design processes.