Software testing today is most effective when it is continuous, indicating that testing is started during the design, continues as the software is built out, and even occurs when deployed into production. Continuous testing means that organizations don’t have to wait for all the pieces to be deployed before testing can start. Shift-left, moving testing closer to design, and shift-right, where validation is done by end-users, are also philosophies of testing that have recently gained traction in the software community. Once your test strategy and management plans are understood, automation of all aspects of testing becomes a must to support the speed of delivery that is required.
There are many different types of software tests, each with specific objectives and strategies:
In each case, validating base requirements is a critical assessment. Just as important, exploratory testing helps a tester or testing team uncover hard-to-predict scenarios and situations that can lead to software errors.
Even a simple application can be subject to a large number and variety of tests. A test management plan helps to prioritize which types of testing provide the most value – given available time and resources. Testing effectiveness is optimized by running the fewest number of tests to find the largest number of defects.
Software testing arrived alongside the development of software, which had its beginnings just after the second world war. Computer scientist Tom Kilburn is credited with writing the first piece of software, which debuted on June 21, 1948, at the University of Manchester in England. It performed mathematical calculations using machine code instructions.
Debugging was the main testing method at the time and remained so for the next two decades. By the 1980s, development teams looked beyond isolating and fixing software bugs to testing applications in real-world settings. It set the stage for a broader view of testing, which encompassed a quality assurance process that was part of the software development life cycle.
“In the 1990s, there was a transition from testing to a more comprehensive process called quality assurance, which covers the entire software development cycle and affects the processes of planning, design, creation and execution of test cases, support for existing test cases and test environments,” says Alexander Yaroshko in his post on the uTest developer site.
“Testing had reached a qualitatively new level, which led to the further development of methodologies, the emergence of powerful tools for managing the testing process and test automation tools.”
Few can argue against the need for quality control when developing software. Late delivery or software defects can damage a brand’s reputation — leading to frustrated and lost customers. In extreme cases, a bug or defect can degrade interconnected systems or cause serious malfunctions.
Consider Nissan having to recall over 1 million cars due to a software defect in the airbag sensor detectors. Or a software bug that caused the failure of a USD 1.2 billion military satellite launch. 2 The numbers speak for themselves. Software failures in the US cost the economy USD 1.1 trillion in assets in 2016. What’s more, they impacted 4.4 billion customers. 3
Though testing itself costs money, companies can save millions per year in development and support if they have a good testing technique and QA processes in place. Early software testing uncovers problems before a product goes to market. The sooner development teams receive test feedback, the sooner they can address issues such as:
When development leaves ample room for testing, it improves software reliability and high-quality applications are delivered with few errors. A system that meets or even exceeds customer expectations leads to potentially more sales and greater market share.
Software testing follows a common process. Tasks or steps include defining the test environment, developing test cases, writing scripts, analyzing test results and submitting defect reports.
Testing can be time-consuming. Manual testing or ad-hoc testing may be enough for small builds. However, for larger systems, tools are frequently used to automate tasks. Automated testing helps teams implement different scenarios, test differentiators (such as moving components into a cloud environment), and quickly get feedback on what works and what doesn't.
A good testing approach encompasses the application programming interface (API), user interface and system levels. As well, the more tests that are automated, and run early, the better. Some teams build in-house test automation tools. However, vendor solutions offer features that can streamline key test management tasks such as:
Use one tool to collaborate across teams, manage code, run standup meetings, plan sprints and track work. Available on premises and on the cloud.
IBM Engineering Test Management is a collaborative, quality management solution that offers end-to-end test planning and test asset management, from requirements to defects.
A comprehensive testing and virtualization platform to help ensure application quality throughout the software lifecycle.
Easily create and execute test scripts for functional, UI, performance and API testing.
Emulates services that may not yet be fully developed and/or available to test.
Improve productivity, reduce business risk and deliver applications faster using generative AI and automation.
Continuous delivery of any application to any environment.
Visualize, optimize and increase the velocity of your software delivery.
Dive deeper into the benefits of integrated continuous testing on software quality.
Learn the essentials of software development and how it helps businesses innovate and compete.
Explore why testing earlier and more often is critical for achieving the DevOps goal of faster, more efficient software delivery.
Developer-centric, deeper dive resources to help improve your software lifecycle experience.
Stay informed through webinars, blogs, and other great content. Discuss software testing and DevOps with your peers from around the world.
1 https://www.utest.com/articles/small-history-of-software-testing (link resides outside of ibm.com)
2 https://www.guru99.com/software-testing-introduction-importance.html (link resides outside of ibm.com)
3 https://www.cloudcomputing-news.net/news/2017/oct/30/glitch-economy-counting-cost-software-failures/ (link resides outside of ibm.com)