If you’re working with DevOps, there’s a good chance that you’ll know about continuous testing. In this blog post we take a look at continuous testing to understand why it plays a key role in DevOps, and why test automation is essential in enabling continuity.
They have emerged with the need to make testing more lean and to enable businesses to deliver quality at speed.
DevOps, CI/CD and Agile are different, but share the same purpose and goal of allowing businesses to deliver quality through flexible delivery models that drive fast feedback loops and immediate responses, allowing businesses to adapt to changes in the market quicker than ever before.
This is made possible by automation, which you can learn more about in our guide to achieving continuous delivery with test automation.
In this blog post, we’ll focus on defining continuous testing and DevOps, and explain how these are intertwined. We'll answer the following questions:
- What is CI/CD
- What is continuous testing?
- What is DevOps?
- What is the role of continuous testing in DevOps?
First, let’s take a look at CI/CD, and break down this concept in order to understand what continuous testing is, and why it’s strived for.
What is CI/CD?
CI/CD stands for continuous integration and continuous delivery.
In practice, CI/CD is a pipeline with a series of tools that work together to deliver high quality software at speed. The CI/CD pipeline is by definition completely automated, with no human intervention.
It is automation that makes the continuity of processes possible, and implementation of automation tools is therefore a prerequisite for building a CI/CD pipeline.
The CI/CD pipeline consists of several parts:
- Continuous integration (CI): This is the first part of the pipeline. When developers write their code and submit it to the code repository, it is immediately and continuously integrated, and then pushed forward to build.
- Continuous testing: In CI/CD, this is considered part of CI. Once code is built, it is automatically tested, and developers are immediately notified if something is broken.
- Continuous development: Continuous integration and continuous testing together make up continuous development.
- Continuous delivery (CD): After the code has been built and tested it is pushed forward to delivery. Some also automate processes all the way through to deployment, in which case the CD stands for continuous deployment.
In this post, we’ll focus on the first part of this pipeline, and more specifically, continuous testing.
What is continuous testing?
Writing code is a bit like building a house: You start with the foundation and build your way up. Testing is like making sure that the materials used for building are stable and won’t break.
So what happens when you get to building the second floor, and you realize that the wooden frames used to hold the walls on the first floor aren’t strong enough?
You have to start over.
But what if you had found out about the faulty wooden frames whilst still building the first floor?
It would have been a whole lot easier and quicker to fix.
This is why testing as close to the build is incredibly important - especially if you want to avoid wasting needless developer resources or throwing valuable time out the window.
Catching bugs sooner rather than later means that valuable time and resources can be saved on big rollbacks.
This is why teams strive to test continuously, rather than at the end of the cycle.
Naturally, you need more resources and power to test more frequently.
If you were building a house alone, you might be inclined to skip testing, because it would take you forever, and you might consider the risk of faulty foundations low.
However, even the smallest fault can make that house fall to the ground. So to eliminate risk, a small investment can be made: a robot.
Automation robots can, once set up, carry out the testing for you, and let you proceed with your building, at the same pace as before, but with much lower risk.
This is why automation is key in achieving continuous testing.
So why is continuous testing a key ingredient in DevOps?
As mentioned at the beginning of this article, DevOps also aims to deliver quality at speed through flexible and agile delivery models.
Quality comes from more testing in breadth and depth, and speed comes from frequency and continuity. And this is exactly what test automation offers.
Let’s have a closer look at DevOps to better understand the priorities that make continuous testing key.
What is DevOps?
DevOps is the contraction of Development and Operations. It has come into existence with the need for better collaboration between these two departments. DevOps is not just a mindset, but a job title for people whose role it is to assure this collaboration.
As we wrote in this blog post about DevOps;
DevOps has emerged in connection with the agile movement as a result of the need to increase the frequency and speed of product releases while maintaining or improving a certain standard of quality.
DevOps encourages collaboration and communication between teams from development to deployment, and requires automation throughout the pipeline in order to enable the flexibility and continuity that is required to deliver quality at speed today.
Simply put, continuous testing makes it possible to achieve the principle aim of DevOps: to deliver quality at speed.
When talking about DevOps as a job, it is the role of the DevOps to build the CI/CD pipeline, in order to ensure that software keeps a high quality from development to release, and that it moves with speed and agility through the pipeline.
It is therefore also the DevOps’ task to find and implement test automation tools that will help them achieve continuous testing, as well as other automation tools for the remaining pipeline.
The role of continuous testing in DevOps
In sum, it is the role of DevOps teams to build the CI/CD pipeline, and thus implement automation throughout the software development life cycle in order to deliver frequent, reliable software.
Continuous testing is an important part of the CI/CD pipeline, and can be achieved by the means of test automation.
You can learn much more about the role of DevOps, the importance of test automation, and how to start building your DevOps pipeline in our whitepaper: DevOps and Test Automation.