Blog
Regression Testing with an Agile Mindset
When applying agile methods to existing software development practices, it is often useful to start from the basics. For regression testing this boils down to:
- Regression testing ensures continuity of business functions.
- In an agile context it helps the team focus on the (new) functionality to develop in the sprint while maintaining overall stability.
- To maximally utilize regression testing in an agile context, test automation and continuous execution should be applied.
- It is important to realize the difference between functional tests and regression tests to avoid some common pitfalls.
- Since the system is developed in iterative and evolutionary fashion, the same business functions are often changed and enhanced multiple times over many sprints. As a result many functional tests are written for the same business function. This means a lot of "test duplication". Since the business function is changing, the old test scripts have to be adapted and the required effort will grow with every sprint.
- At the same time, the value of the regression tests has not increased, since the same business function is being tested. The overall overview of the system has not improved, but rather been obfuscated by adding more data.
- As a side effect it also takes longer to execute the regression tests and to analyse the results.
- The product owner compiles a list of all business functions that should be included in the regression test. This can happen gradually over several sprints while the team learns what functions are important. Creating the tests can also be done gradually.
- Functional tests in the sprint are basically "throw away" tests: They are not intended to be maintained for long. Perhaps you keep the tests so you can update and reuse some of them later.
- Some functional tests can be upgraded to regression tests, when they cover certain business functions better then existing tests. The existing tests can then be taken out of the regression test suite.
- Regression test scripts are updated in the sprint when necessary. This is part of the UserStory and should thus be taken into account when estimating.
- Regression testing has an important role in Agile development. In addition to its usual purpose of proving stability, it helps the team focus on the functionality in the current sprint.
- Although it is tempting to use the functional tests of the past sprints as regression tests for the current sprint, this will lead to an unwieldy regression test suite and will blur the purpose of the regression test suite by introducing a lot of duplication. In stead the regression test suite should be constructed to reflect the (most important) business processes.
Maarten Winkels
Contact
Let’s discuss how we can support your journey.