Regression Text

Jeffrey Fortin

August 23, 2017

Every time we modify code we run the risk of introducing new bugs. When programmers make changes to software to fix errors that have been identified, it can cause functions that were previously working properly to experience new problems.

As a result, every change made during software development necessitates retesting in order to verify that the previous quality baseline is still intact. Regression testing, also known as verification testing, is the process of analyzing software after a change has been made to verify that the quality has not regressed. Regression testing is performed after a software update but also when the software is ported to a new runtime environment, a new compiler is used or when the software is migrated to a new hardware platform. 

When developing complex, embedded software, many development teams choose to utilize automated regression testing. Automated regression testing enables tests to be run continuously and with minimum effort, allowing more time for developers to continue working on a project. Because it is automated, the same code can be tested and retested many times, as changes are made. For software that is used in regulated and safety-critical industries such as aerospace, military, medical, railway, automotive and industrial controls, automated regression testing can be an indispensable development tool and lowers the risks involved with sustaining engineering.

Automated regression testing can provide:

  • Enhanced regression testing efficiency
  • Improved quality
  • Easy to understand status dashboards
  • Historical testing metrics

In today’s software development environment, software applications are becoming larger, life-cycles are becoming longer, and development teams are often spread over multiple sites. Despite the benefits, many development teams have struggled with finding a means to implement and automate a regression test process. Testing also consumes a large portion of the software development budget, and it is critical to managers that the investments made in test cases are leveraged across the entire development team, and the full application life cycle.

Historically this has been a costly and time-consuming process. Leaving regression testing in the hands of even the most capable software engineers is problematic because the sheer number of repetitive tests with similar results creates opportunity for overlooking errors. Managers are looking for test resources that allow their software teams to easily run regression testing and enable any team member to run any test, on any version of the application at any time. This ultimately results in faster release cycles and fewer bugs reaching customers.

With a continuous integration and regression test strategy, testing is not just a single schedule phase but rather a constant activity.  Rather than using separate code and test phases, builds are created constantly, and the entire regression test suite is run on each new build. This ensures that errors are quickly found, and the code change which caused the error is easily identified.

Another challenge for software development organizations, even ones with very stringent test standards, is to enable accurate status reporting of the current state of testing. It is only with access to complete and accurate reporting that release decisions can be made. Continuous testing and accurate reporting means projects have a constant release readiness assessment.

Automation with VectorCAST’s Enterprise editions for unit and system testing helps software development organizations maintain a high level of code quality as the source code evolves and is the key to organizing large test suites, controlling the execution of these suites, and providing detailed status reports which summarize the current state of testing. 

For more information on automated regression test tools, click here.