For my first post of 2016, I’d like to try a non-technical article. I’ve pulled together several sources and compiled this brief history of software testing.
The main source is an article by D. Gelperin and B. Hetzel entitled “The growth of software testing”.1)Gelperin, D.; B. Hetzel (1988). “The Growth of Software Testing”. CACM 31 (6): 687–695. doi:10.1145/62959.62965. ISSN 0001-0782.
The Debugging-Oriented Period (pre 1956)
In the beginning, testing was focused on the hardware. On September 9, 1947, Grace Hopper (an early computing pioneer known for inventing COBOL) found the first “bug”. A moth was found in the relay of the Harvard Mark II machine. The moth was removed and taped to the page in the log book with the description “1535 Relay #70 Panel F (moth) in relay. First actual case of bug being found”; the first bug report.2)“Bug”, The Jargon File, ver. 4.4.7. Retrieved June 3, 2010.
Testing was not considered a separate part of the SDLC. A developer would “write” a program and then would “check it out” in order to get the bugs out.
In 1950, Alan Turing writes the first article that discusses software testing. The Turing test addresses the question “How would we know that a program exhibits intelligence?” The test consists of an interrogator given the task of interrogating a human player and a computer player and determining which player is which. If the interrogator cannot reliably tell the machine from the human, the machine is said to have passed the test.3)Turing, Alan (October 1950), “Computing Machinery and Intelligence”, Mind LIX (236): 433–460, doi:10.1093/mind/LIX.236.433, ISSN 0026-4423, retrieved 2008-08-18
The Demonstration-Oriented Period (1957 – 1978)
In 1957, Charles Baker distinguishes debugging from testing in a review of Dan McCracken’s book Digital Computer Programming. Program checkout composed of two goals:
- Debugging “Make sure the program runs”
- Testing “Make sure the program solves the problem”
Testing during this time would only focus on the happy path.
During this time, employers begin posting job listings explicitly requesting testing skills and software test engineering becomes a career path in a few companies.
The first conference on software testing is held at the University of North Carolina in June of 1972.
The Destruction-Oriented Period (1979-1982)
In 1979, Glenford J. Myers publishes the first software testing book, The Art of Software Testing and defined testing as “the process of executing a program with the intent of finding errors.” and introduces sad path testing.
By using test data that has a high probability of causing program failures, we increase the probability of detecting issues in the program.
During this time the term “testing” became associated with activities other than checkout, such as software analysis and review techniques.
The Evaluation-Oriented Period (1983 – 1987)
In 1983, the Institute for Computer Sciences and Technology of the National Bureau of Standards published Guideline for Lifecycle Validation, Verification, and Testing of Computer Software. This publication describes testing as a methodology which includes analysis, review, and testing activities.
Two national standards are published, one on test documentation (ANSI/IEEE STD 829) in 1983 and one on unit testing (ANSI /IEEE 1008) in 1987.
The Prevention-Oriented Period (1988-present)
Starting in in the late 1980s and continuing to the present, testing becomes focused on preventing program failures before they occur.
The Systematic Test and Evaluation Process (STEP) methodology introduces testing activities being performed in parallel to development activities.
Testing activities begin to include planning, analysis, design, implementation, execution, and maintenance.
It is realized that defect detection during the design phase is significantly cheaper than defect detection at the implementation phase.
Test driven development (TDD) is introduced, raising the veil between tester and programmer. Writing tests first and sharing them with programmers results in code with less bugs.
References [ + ]
|1.||↑||Gelperin, D.; B. Hetzel (1988). “The Growth of Software Testing”. CACM 31 (6): 687–695. doi:10.1145/62959.62965. ISSN 0001-0782.|
|2.||↑||“Bug”, The Jargon File, ver. 4.4.7. Retrieved June 3, 2010.|
|3.||↑||Turing, Alan (October 1950), “Computing Machinery and Intelligence”, Mind LIX (236): 433–460, doi:10.1093/mind/LIX.236.433, ISSN 0026-4423, retrieved 2008-08-18|