Continuous delivery gives organizations the ability to deliver features quickly, stably and sustainably. As teams and enterprises grow and adopt continuous delivery, it becomes important to have scalable testing processes in place.
In particular, it is vital to have continuous testing throughout the software development lifecycle. Testing should start in parallel with development, right from the requirements phase, and continue until the application deployment and production monitoring phase.
That means certain testing activities are going to have to change. Let’s explore the specific activities QA needs to perform throughout the continuous delivery process.
Flushing out ambiguities in requirements
Right from the start, QA analysts should work with other roles to get more clarity concerning requirements. Being clear from the beginning helps prevent problems later in the development process, saving a considerable amount of time and cost for the team.
Here are some common discussion questions to create more clarity:
- What are your critical paths?
- How does your business make money?
- How do your users use the application?
- How are your application services advertised?
- What has been a problem in the past?
Automating as many processes as possible
To ensure stable features are released to customers quickly, automation should start at the earliest development stage, so teams can catch defects early and get them fixed as soon as they occur. This may involve the use of CI/CD tools such as Travis CI for building out pipelines for builds and tests, other tools for tracking the metadata around each step of the process, and internal tools for developers to ensure they’ve got proper code coverage.
The important thing here is standardizing something that works for the overall testing effort, not focusing on the specific tools. Think of the bigger picture.
Also, we need to start building tests incrementally. After fixing a bug or developing a new feature, teams should create an automated test specific to the bug or feature and add it to the regression test suite. Over time, the regression tests will cover only the most important and relevant aspects of the application.
Shifting the focus of manual testing
With automated tests running parallel to development work, it frees up a lot of time for testers to focus on other types of testing approaches that would need more critical thinking. Testers can use this time to uncover issues that would otherwise be hard to find via automation through activities such as exploratory testing, usability testing, risk-based testing and more.
However, testers shouldn’t try to test everything, because automated tests will have some of their bases covered. Instead, they should focus their attention on the system’s critical paths and the new features that have to work as expected before pushing them to end-users.
Increasing system stability and reliability
It is a common misconception that since teams deliver features rapidly as part of the continuous delivery process, they compromise stability and reliability. This is far from the truth. In fact, the features released are of higher quality because automated tests are run right from the start of the development process. They finish running within a matter of minutes to give quick feedback about the system, revealing defects as early as possible.
Also, there is always a stable version of the code ready to be deployed at any time, enabling the team to do quick checks using feature flags, employing rollbacks in case of any problems. This ensures end-users always have a stable version of the application to use.
Finally, automated performance and security testing also help make the system more reliable and find critical vulnerabilities before the features are released.
The role of QA in a continuous delivery pipeline is critical to the successful release of products to customers. Keeping the above factors in mind will help teams understand the activities QA needs to be involved in to streamline the overall development process.
All-in-one Test Automation
Cross-Technology | Cross-Device | Cross-Platform