Overcoming some common challenges in continuous testing

Tags: testing, qa, agile, devops
Published: 2020-03-06 10:49:58

We are now increasingly dependent on complex IT applications and solutions. Right from the integration of consumer facing apps with back office systems, along with cloud, IoT and AI tech. This has significantly widened the technology ecosystem of the modern business.

To add to that, customers demand faster, better and cheaper solutions. Organizations attempt to meet this mandate using agile and DevOps delivery model.

And so, it is not surprising that they struggle to adapt their QA and testing practice to keep up with these changes. The biggest challenge here is the risk of technical failure, especially for mission critical apps.

This has made it necessary for organizations to adopt transformational QA and mature test practices like shift left and continuous testing.

However, if you are new to this paradigm then it can be confusing where to start.

Getting requirements specification right
Getting requirements right is nearly half the battle one. If you have a very specific and accurate understanding of requirements, you can design test plans better and cover requirements well.

Yet, many teams spend a lot of time and effort in simply clarifying the requirements. This is a common pitfall and to avoid this, teams can adopt Model Based Testing and Behavior Driven Development techniques to design test scenarios accurately and adequately.

These practices will help address and resolve the gaps more quickly and enable them to generate more test cases automatically right from the early stages of a sprint.

Pipeline orchestration
Not only continuous testing but the success of continuous delivery is tied to pipeline orchestration. This means understanding how it works, how it works, how to comprehend the results, and how and when to scale. Everything depends on the pipeline. And you need to integrate the pipeline with the automation suite.

But the reason teams fumble is that no single solution provides the complete toolchain required to build a CD pipeline.

Teams have to typically search for the pieces of the puzzle that are right for them. There are no ideal tools but typically best-of-breed tools that provide integrations with multiple other tools. And of course, an API that allows easy integrations with more.

In short, it is not possible to implement continuous testing without the speed and reliability of a standardized and automated pipeline.

Scaling up and managing complexity
Another key challenge is that continuous testing becomes more complex as it moves towards the production environment. The tests grow both in number and complexity with the maturing code and the environment becoming more complex.

Tests must be updated every time different phases and automated scripts are updated. As a result, the overall time taken to run the tests also increases towards the release.

The answer lies in improved test orchestration that provides the right amount of test coverage in shorter sprint cycles and enables teams to deliver confidently. Ideally, the entire process should be automated with CT carried out at various stages using policy gates and manual intervention, up until the code is pushed to production.

Creating Feedback Loops
Without frequent feedback loops at every stage of the development cycle, there can be no continuous testing. This is partly why CT is difficult to implement. You don’t just need automated tests, you need visibility of the test results and execution.

Traditional feedback loops like logging tools, code profilers, performance monitoring tools are no longer effective. They don’t work together and don’t provide the depth of insight required to fix issues. Real-time dashboards that generate reports automatically and actionable feedback across the entire software development lifecycle (SDLC) helps release software faster into production with fewer defects.

Real-time access to dashboards and access for all team members facilitates the continuous feedback mechanism.

Lack of environments
Continuous Testing means testing more often. And this requires hitting multiple environments more frequently.

This presents a bottleneck if the said environments are not available when required. Some environments are available through APIs and others through various interfaces. These environments can be built using modern architecture while others with monolithic legacy client/server or mainframe systems.

But how do you coordinate testing through all the various environment owners that may not always keep the environments up and running for you to test against?

Virtualization holds the answer. By virtualizing the environment, you can test the code without worrying about areas that are unchanging. Making the environments accessible and available on demand through virtualization helps remove a significant bottleneck from your pipeline.

Ultimately, ensuring ‘continuity’ is the most challenging aspect of CI/CD orchestration and this includes continuous testing. The most common challenges in continuous testing are caused by the need for accelerated innovation. It is a question of balancing the business risks versus the opportunities. Implementing CT through the SDLC will help achieve continuous quality and ensure that teams catch the bugs in real time.