History of Software Testing

Filed in News, Software Testing by on 18 January, 2017

History of Software Testing

Recently I have become interested in the history of Software Testing. Software testing is my area of specialisation. I make a living from it. Each day I apply my knowledge at customer sites in either testing their actual software or consulting to their testers and other team members on testing processes. Now I desired to know more about the history of my profession, where and when it started, and how it has developed over the years to where we find ourselves today.

Software testing has been defined in different ways. Glenford Meyers defines it as “…the process of executing a program with the intent of finding errors.” [Myers:11]. Kooman et al define it as “a process that provides insight into, and advice on, quality and the related risks [Koomen et al:36].

However, generally the different definitions all refer to the overall topic of Software Testing.

The History of Software Testing

Software Testing first started in the fifties. At that time the primary method of testing a computer program was debugging, which is the process of identifying and getting rid of bugs in the software code. The developers really relied on ad-hoc methods to find bugs in their code.

However, by the seventies, Software Testing was starting to become a process of destruction. Testers would break down the code to find holes or gaps in it. In the late seventies and early eighties there was a distinct shift towards Software Testing as we know it today. That’s when the practice of Software Testing moved from debugging towards actually testing the software in real life settings.

Furthermore, Software Testing started getting broken down into the core components that we know of today, including unit testing, integration testing, functional testing, regression testing, user acceptance testing, configuration testing, performance testing and security testing.

Today, software testing has morphed into a complex and multi-faceted practice with many new areas of specialisation dedicated to specific niches. To a large extent, it was influenced by:

  • The introduction of PC’s in the early 1980’s and the many clones that resulted.

  • Increasing demand for more frequent releases.

  • Commercialisation of software.

  • Customers requesting releases for bug fixes and new features more often.

  • The growing importance of the internet making it easier and more cost effective to release new versions of software.

  • The release of open source software such as Linux.

  • The Agile Software Development Manifesto in 2001.

In addition, we’ve learned a lot about software testing over the years, due to the large number of dedicated enthusiasts, researchers, practitioners and independent thinkers. Most notably:

  • Glenford J. Myers The Art of Software Testing, a book that became a classic and a best-seller in the computer science field.hypothesized that there must be a distinction between debugging and testing in the real world [Myers:16-18]. He is the author of the book

  • Rex Black is a software engineer and an author in the field of software testing. He is regarded as a pioneer in the test automation field, working with a variety of vendor and open-source test automation tools since the first Windows tools were released with Windows 3.0. [internet: Rex Black].

  • Cem Kaner is best known as an advocate of software usability and software testing [Internet: Cem Kaner].

  • James Bach is a leader in the field of Software Testing, writing and teaching a great deal on topics including exploratory testing, rapid testing, the use of heuristics, and [Internet: James Marcus Bach].session based test management

  • Bret Pettichord is software testing expert and influential author and speaker. Extensive experience with automated testing tools, including commercial, open-source and home-built tools using over a dozen languages. His emphasis Is on agile methods [Internet: Bret Pettichord].

  • Martin Fowler is an author, speaker on the design of enterprise software. He is dedicated to improving the profession of software development [Internet:martinfowler.com].

  • Gojko Adzic is a strategic software delivery consultant who works with ambitious teams to align software delivery with business goals, and improve the quality of their software products and processes. Gojko specialises in are agile and lean quality improvement, in particular impact mapping, agile testing, specification by example and behaviour driven development [Internet: Gojko Adzic].

  • Janet Gregory is the internationally renowned designer of ICAgile's testing track and co-author of “Agile Testing” and “More Agile Testing”. She, together with Lisa Crispin, are regarded as leaders in the development of agile testing techniques. [Internet: Promoting Agile Quality Processes in Software Development].

Overview of the [Core Components]

As mentioned above, by the seventies the software testing was starting to be understood in terms of its core components – unit testing, integration testing, functional testing, regression testing, user acceptance testing, configuration testing, performance testing and security testing. Today, most instructors and experts will address these topics separately so that students and others who are interested in learning about this topic or getting a specific result will have an easier time doing so. Here is a brief description of each of the core components:

  • Unit testing: A test carried out in the developer environment with the aim of demonstrating that a unit test meets the requirements defined in the technical specifications [Koomen et al:82].

  • Integration testing: This is where individual software modules are combined and tested as a group [Internet: Integration Testing].

  • Manual testing: The process of manually testing software with the intention of finding defects [Internet: Manual Testing].

  • Functional testing: Testing carried out in an optimally simulated production environment with the aim of demonstrating that the developed system meets the functional requirements [Koomen et al:82].

  • System testing: Testing that is done by the supplier of the software with the aim of demonstrating that the developed system, or parts of it, meet with the functional and non-functional specifications and the technical design [Koomen et al:82].

  • Regression testing: This is testing that is aimed at verifying that all the unchanged parts of a system still function correctly after the implementation of a change [Koomen et al:51].

  • User Acceptance testing: Testing that is carried out by the future users of a system in an optimally simulated production environment, with the aim of demonstrating that the developed system meets the requirements of the users [Koomen et al:82].

  • Configuration testing: The process of testing a system with each of the supported software and hardware configurations [Internet: Configuration Testing]

  • Performance testing: Performance testing is testing that is performed, to determine how fast some aspect of a system performs under a particular workload [internet: What is Performance Testing in Software?].

  • Security testing: Security testing is a process intended to reveal flaws in the security mechanisms of a computer system that protect data and maintain functionality as intended.

In Conclusion

Software Testing wasn’t always the way we see it today. Indeed, just sixty years ago, Software Testing was really in its infancy. However, thanks to the pioneers like Pettichord, Bach, Gregory and others, our understanding and appreciation for software testing has really progressed over the years.

Thanks to the following sites for providing some background information on the history of software testing:

  • Universal Exams [internet: Basic History of software testing].

  • Sauce Labs: [internet: Quality Assurance and Software Testing: A Brief History].

Bibliography

  1.   Adzic, G. (ND) Gojko Adzic [online] Available at [Accessed 17 January 2017].

  2. DRAGONFIRE INC (ND) Promoting Agile Quality Processes in Software Development [online] Available at [Accessed 17 January 2017].

  3. Fowler, M. (ND) martinfowler.com [online] Available at [Accessed 17 January 2017].

  4. ISTQB (ND) What is Performance testing in software? [online] Available at [Accessed 18 November 2017].

  5. Kooman, T., van der Aalst, L., Broekman, B., and Vroon, M. (2006) TMap Next: for result-driven testing. 2nd edn. Hertogenboscen, The Netherlands: UTN Publishers.

  6. MICROFOCUS (ND) Configuration Testing [online] Available at [Accessed 18 November 2017].

  7. Myers, G.J. (2004) The Art of Software Testing. [online]. 2nd edn. Hoboken, New Jersey: John Wiley & Sons, Inc. Available at <http://http://www.51testing.com/N_download/lib/TestingTechDL/ArtofSoftwareTesting.pdf> [Accessed 1 November 2016].

  8. Pettichord, B (ND) Bret Pettichord: Software Quality Architect at HomeAway [online] Available at [Accessed 17 November 2017].

  9. Ranker (ND) Cem Kaner [online] Available at [Accessed 17 January 2017].

  10. Ranker (ND) James Marcus Bach [online] Available at [Accessed 17 January 2017].

  11. Sauce Labs (July 2016) Quality Assurance and Software Testing: A Brief History [online] Available at [Accessed 18 January 2017].

  12. universalexams (2011) Basic history of software testing [online] Available at [Accessed 18 November 2017].

  13. Wikipedia, the free encyclopedia (6 January 2017) Integration testing [online] Available at [Accessed 18 November 2017].

  14. Wikipedia, the free encyclopedia (20 December 2016) Manual testing [online] Available at [Accessed 18 November 2017].

  15. Wikipedia, the free encyclopedia (25 April 2016) Rex Black. [online]. Available at [Accessed 17 January 2017]. [online] Available at [Accessed 18 November 2017]Wikipedia, the free encyclopedia(8 December 2016) Wikipedia, the free encyclopedia

  16. Wikipedia, the free encyclopedia (8 December 2016) Security Testing [online] Available at [Accessed 18 November 2017].

Tags: ,

Comments are closed.