The importance of build pipelines in Quality Assurance

QA automation solutions are software projects which value is actually delivered once they are running against the applications they are designed to test. Nowadays many software engineering teams try to operate within the CI (continuous integration) framework, which, as its name suggests, is a practice that consists on integrating, or merging, the work of all developers with a high frequency. The main goal of continuous integration is to ensure the pieces of code produced by several developers can work properly as whole system and so they can be safely deployed into production environments.  The relationship between the CI framework and QA is in my opinion crystal-clear: when automated tests are run each time changes are merged into the main code branches, you get a live report of the health status of your application. Automated tests can catch bugs before they are deployed to production once they are run in a build pipeline

What is a build pipeline?

When a developer implements a new change in an application, it can conflict with other changes produced by other developers due to defects in the code. How to catch this bugs with less effort? QA Automation Engineers produce automated tests that will automatically run the application and assert if it behaves as expected. But, in the CI framework, this tests are not coded to be run on the QA engineers’ working machine, rather, they are implemented in a build pipeline. 

Probably you will hear people referring to build pipelines as build jobs, build plans, build execution, or maybe just build. But the concept is the same, a build pipeline is a series of automated processes that compile, build, and execute tests on a given application before it is deployed to a production environment. Put simply, a build pipeline is formed of several steps that are executed sequentially. 

The benefits of a build pipeline

Since a build pipeline is executed automatically, it removes much of the time-consuming work that would be done by developers which necessarily results into freeing-up time that can be invested in coding more features and reducing costs

Removing manual checks, makes it more feasible for an engineering team to produce smaller code changes that would be tested and merged automatically by the build pipeline.  If you don’t have a human doing all these checks you don’t have to worry about performing those too often. The immediate benefit is that smaller chunks of code can be implemented by developers and therefore, such changes will be easier to handle and to pin-point when a bug is detected. 

On the other hand, the MTTR (mean time to resolution) is considerably reduced. MTTR is a metric that tracks the time needed to repair broken features. Due to the aforementioned advance of build pipelines (smaller code changes), bug detection is more fine-grained and the complexity of the code to be fixed is lower. 

More related to QA, an automated build pipeline that is executed within a CI framework brings in a very important concept, continuous reliability. When tests fail it might mean one of two things: either the application is failing to behave as expected, or the tests need maintenance. With automated pipelines running tests against the new code at a high frequency, QA Automation Engineers get alerted whenever the the tests need to be changed, and code defects are reported rather soon. These two factors together ensure continuous reliability which ultimately means that the status of our application was of the highest quality and that our tests were reliable at the moment of release. 

Lastly, although there are many other advantages to CI and build pipelines, we can summarise the aforementioned factors into higher costumer satisfaction. It is true that many of the benefits of the CI framework apply to tech team, however, the ultimate consequence is that the customers will get their products up to date with new features released earlier and bug fixes done faster. 

Conclusion

In a nutshell, automated pipelines are the core of efficient application health-checks and help development teams implement simpler easy-to-fix changes and faster. Good test specialists deliver reliable automated tests, but also know that most of its value lies on them being executed in an automated build pipeline, therefore it is key for a good Automation engineer to be familiar with the concepts con continuous integration, and the way pipelines work.