Software Testing: A History

    Bill Holland
    Bill Holland
    Share

    Software testing now enjoys a level of acceptance that was not always there. In the early days of software development, debugging was the primary form of software test. It was primarily performed by the programmer who wrote the code and the object was to get the application to working without crashing the system. End users played a very small role in the acceptance of the applications during those days. It was up to the user to learn how to manipulate the program to achieve his/her expected results. If the program did not produce the desired outcomes, the user had to find ways to adjust data or entry techniques in order to reach the anticipated end goal.

    A Brief History

    When I joined DataPoint Corporation in 1974, I was hired directly into the Test Department. Our job was to design and produce test equipment and procedures to test production line printed circuit boards. The emphasis was on hardware testing. It was well understood that a board had to be properly populated and functioning correctly in order to perform its task successfully. DataPoint was, as I like to believe, the creator of the first desk top, personal computer – the DataPoint 2200. The 2200 was an amazing machine for its time: completely self-contained, had a small desktop footprint and performed some very useful tasks with complete independence. It had its own operating system and all of the applications were developed in-house. The hardware was thoroughly tested, but the Test Department did not have a Software Test Division. All software testing was performed by the engineering department that was responsible for its development. When I left DataPoint in 1980, very little had changed in that regard. Software testing was still little more than an after-thought.

    Progress Creates Problems

    With the advent of the Graphical User Interface (the GUI) and user friendly software, the need for more comprehensive software testing became evident. User friendly put more responsibility on the developer’s shoulders to create programs that could be run out of the box. Unfortunately, developers do not think like end-users. Manufacturers found it necessary to hire teams of outside ìexpertsî to simulate the activity of the end-user. These ìexpertsî were expected to find any problems that the end-user might experience but do it before the product was released. Beta testing became popular at about that time. Beta testing is the practice of allowing knowledgeable end-users access to the programs and exercising them in a manner consistent with the way an actual end-user would use the product in the field. The problem with beta testing, however, is that it begins at the end of the production cycle. If the beta testers found any significant defects, that meant the project had to be returned to development, determine the cause of the problem, fix it then return it to the beta testers. This cost the manufacturer time and money and could cause cost over-runs as well as shipment delays. Obviously, this was not the best approach to producing a profitable, revenue-generating product.

    A Solution Waiting to be Discovered

    Fortunately, smarter minds and common sense prevailed and a more thorough and deliberate software testing scheme was established. Today, the testing of a software product begins with the planning of the product. The software testing cycle co-exists with the production cycle. Specialized teams are established to work side-by-side with the developers and planners. Software Test Plans have become an integral part of the deliverable package to the customer. These plans cover the procedures that will be put into place while the product is under development and finalized before the product is delivered to the end user.

    Future Exploration

    Utilizing the resources of this forum, I would like to present to you the various stages, levels and processes that have become so important in the production life-cycle. I will talk about the various levels of testing: Unit, Integration, System, User Acceptance, Regression, et al. I will delve into white box and black box (and maybe even gray box) testing. I will discuss the newest member of the testing group: Performance Testing and its end-goals and misconceptions. And I will go into what many call ìnegative testing. This is the practice of trying to get the program to do something itís not supposed to do. I hope to present these concepts and practices in an entertaining and enlightening manner that you will find difficult to put down. Along the way, I will expose some myths and reveal to you a very challenging and rewarding career field. Hope to see you next week and hear from you during the process.

    Frequently Asked Questions (FAQs) about the History of Software Testing

    What is the significance of software testing in the development process?

    Software testing is a critical component of the software development process. It ensures that the software functions as intended and meets the specified requirements. Without proper testing, software can have bugs or errors that can lead to system crashes, data loss, and other serious issues. Moreover, testing helps in maintaining the quality of the software, enhancing its performance, and ensuring its reliability and security.

    How has software testing evolved over the years?

    Software testing has evolved significantly over the years. In the early days, testing was often an afterthought in the software development process. However, with the advent of agile methodologies and DevOps, testing has become an integral part of the development process. Today, testing is conducted at every stage of development, from requirement gathering to deployment, to ensure the quality of the software.

    What are some of the key milestones in the history of software testing?

    Some key milestones in the history of software testing include the introduction of the first testing techniques in the 1950s, the development of the first automated testing tools in the 1980s, and the rise of agile testing methodologies in the 2000s. Today, we have advanced testing techniques and tools that allow for continuous testing and integration, making the testing process more efficient and effective.

    What is the role of automation in software testing?

    Automation plays a crucial role in software testing. It allows for the execution of repetitive tasks without human intervention, thereby saving time and reducing the risk of human error. Moreover, automation enables continuous testing and integration, which is essential in today’s fast-paced development environments. It also allows for more comprehensive testing, as it can easily handle complex test scenarios that would be difficult to execute manually.

    How has the rise of agile methodologies impacted software testing?

    The rise of agile methodologies has had a profound impact on software testing. Agile methodologies emphasize continuous testing and integration, which means that testing is conducted at every stage of the development process. This approach ensures that any issues are identified and addressed early on, thereby reducing the risk of major bugs or errors in the final product. Moreover, agile testing encourages collaboration between testers and developers, leading to better communication and understanding of the software requirements.

    What are some of the challenges faced in software testing?

    Some of the challenges faced in software testing include dealing with complex software systems, managing time and resources effectively, ensuring the completeness and accuracy of tests, and keeping up with the rapid pace of technological change. Moreover, testers often have to deal with unrealistic expectations and pressures from stakeholders, which can make the testing process even more challenging.

    What is the future of software testing?

    The future of software testing looks promising, with advancements in technology and methodologies. We can expect to see more automation in testing, with the use of artificial intelligence and machine learning to make the testing process more efficient and effective. Moreover, there will be a greater emphasis on continuous testing and integration, as well as collaboration between testers and developers. We can also expect to see more focus on security testing, given the increasing importance of cybersecurity in today’s digital world.

    How has the role of a software tester changed over the years?

    The role of a software tester has evolved significantly over the years. In the past, testers were often seen as the ‘gatekeepers’ of software quality, responsible for finding and reporting bugs. However, with the rise of agile methodologies and DevOps, testers are now seen as key contributors to the development process, working closely with developers and stakeholders to ensure the quality of the software. Moreover, testers are now expected to have a broader set of skills, including programming, problem-solving, and communication skills.

    What is the importance of software testing tools?

    Software testing tools are essential for conducting effective and efficient testing. They automate repetitive tasks, handle complex test scenarios, and provide detailed reports on the testing process. Moreover, they support continuous testing and integration, which is crucial in today’s agile development environments. Some of the popular testing tools include Selenium, JUnit, TestNG, and Cucumber.

    What are some of the best practices in software testing?

    Some of the best practices in software testing include planning and preparing for tests, understanding the software requirements, conducting testing at every stage of development, using automated testing tools, and collaborating with developers and stakeholders. Moreover, it’s important to continuously learn and adapt to new testing techniques and methodologies, as the field of software testing is constantly evolving.