Using DevOps principles to improve testing
What exactly is DevOps?
With such a high rate of adoption, DevOps and all that it encompasses has become a hot topic in today’s world of tech. What started out as a set of practices which deliver continuous integration into production by combining developers and operations has evolved differently within each organisation.
Now that the surrounding methodologies and tools have matured, it's become easier to integrate these concepts into our everyday development process, with two main motivations - produce a quality product and reduce time to launch.
While most teams excel at this when it comes to building and delivery, testing can often fall flat, yet it is the key to maintaining this quality.
Traditionally, testing would come towards the end of the development process and often cause a bottleneck for the team, delaying deployment. DevOps puts an emphasis on testing throughout the entire development process, with an aim to avoid this issue and increase reliability of the product.
There are three main areas of focus when adopting this approach for testing practices:
- Improving communication
- Automating the process
- Gathering metrics from the feedback along the way
How DevOps applies to testing
Here at Adaptavist, our team has integrated DevOps practices into our current cycle, so that we can improve the quality of our Test Management tool while speeding up delivery so that our customers receive fixes and features regularly.
Let’s take a look at how we’ve done this.
Improved communication and collaboration
This is essential at each stage of the process, from requirement scoping to delivery. We involve QAs/testers in the planning of features or tasks, so that they can gain useful insight for writing test cases that accurately cover the requirements.
Our developer and QA roles overlap in that they have a shared understanding of writing tests. Using Cucumber enables each team member to cleared recognise the aim of individual tests. When manual testing is required, Product Owners, Developers and QAs may all be involved to get this done quickly and safely if necessary.
Using Jira to create Epics and Stories helps us to outlines the requirements of the product in an organised way. Every team member has access to this so that they are aware of the current workflow and priorities. Business Analysts, Product Owners, Developers, QAs and Operations all work together in one common tool.
When we create a new test case, this is linked to an existing Jira Story so that we can ensure 100% coverage. This information, as well as the status of test results, is visible by the whole team either from the issue view in Jira or via the traceability section of a test case in Test Management for Jira.
Codify the process
If it can be automated, then it should be. That’s how we work at Adaptavist, and testing is no exception. As we develop new features or fix bugs, we continually add to our automated test repository to ensure that we have good coverage.
Each time the code changes, automated tests are run on each environment (development, staging and production), with an aim to catch any issues before the customer does. We use a Continuous Integration tool to build the code, and have configured a task to send the results of automated tests from this tool to Jira.
Now we can view all our results in one place - both manual and automated. The aim here is to improve the work flow and ensure that the product we are building is robust by continuously running tests when new code is committed, that accurately cover the requirements.
Analyse the metrics
Running these automated tests provides fast and effective feedback to the team. It is this feedback that supports the decision to release to production or continue to develop the product. Finding effective ways to review manual and automated test results, and other statistics from the testing process can shed valuable insight on where the process can be improved or where major issues lie. We use a dashboard of graphs and charts to review a number of useful statistics, such as “Issues reported during testing”, “test coverage” and “testing effort over time” so that we can make the right changes.
By analysing these metrics, the entire team can make more informed decisions. We can prioritise bug fixes that are blocking development, reallocate resources based on testing efforts and ensure that our tests are accurately covering the requirements of the product.
How taking a DevOps approach can benefit testing
Taking a DevOps approach to testing can be beneficial in several ways.
Improving communication through team participation in each stage enabled a mutual understanding of requirements, which in turn helps the member responsible to write tests that successfully cover these requirements. Having a cross-functional team also allows many roles to get involved with testing new features from different viewpoints, rather than relying on a single viewpoint, which can reduce development time overall and reduce the time it takes to recover from failures that might occur.
From a process perspective, having automated tests that run each time code is deployed increases the chance of catching bugs before they are pushed to production, leading to a more reliable product. It also frees up time for the QA/testers to focus efforts elsewhere and removes the chance of a bottleneck forming towards the end of the development cycle.
Effectively analysing metrics from testing is a great way to highlight issues across the board, whether this is a problem in the process, a particular bug blocking development or inadequate test coverage. Not only does the team benefit from improvements made based on this, but the customer receives a more robust product.
Want to learn more about Test Management for Jira?