How can businesses compete and become leaders in their field today, especially with the move to digital and the Cloud?
Every CIO (chief information officer) now focuses on digital transformation initiatives, like the Cloud, as means to ensure their company is “disrupting” and not “disrupted”. From an IT perspective, this requires faster delivery of innovative software and greater agility – the ability to pivot as soon as you identify a new opportunity or challenge. As a result of greater adoption and investments in agile and DevOps methodologies, today’s developers are producing software faster than ever before, and operations teams can now deliver new releases to applications in a matter of seconds.
But, if only development and operations are transformed, the same basic story always emerges: the software can be developed and delivered faster, but software testing cannot keep pace. When testing is overlooked, software quality takes a huge hit, and organisations are forced to either knowingly add greater risk to the business by releasing software that hasn’t been testing thoroughly or complete the testing and slow down delivery which may miss deadlines and demands from customers. Neither is acceptable.
The testing tools and processes architected for traditional, months-long release schedules simply don’t fit modern delivery cadences which require immediate quality feedback with each new build.
It’s a sad but simple fact: If you have a slow testing process standing between highly accelerated development and operations processes, there’s no way you can achieve the desired – and often, required! – delivery speed necessary for avoiding disruption.
Today’s businesses recognise that they can no longer gain or retain a competitive edge unless they consistently deliver market-leading software innovations faster than their competition. This has escalated development movements such as Cloud, DevOps and Continuous Testing into digital transformation initiatives on the boardroom agenda.
They don’t want or need “perfect” software, they want to deliver new, business-differentiating software as soon as possible. To enable this, development and testing teams need fast feedback on whether their latest innovations will work as expected or crash and burn in production. These teams also need to know if code changes somehow broke the core functionality that the customer base (and thus the business) depends upon.
Can test automation help with the transition to the Cloud?
It’s one thing to automate a test for a simple “create” action in a web application (e.g., create a new account and complete a simple transaction from scratch), it’s another to automate the most business-critical transactions, which typically pass through multiple technologies (SAP, APIs, mobile interfaces and even mainframes) and require sophisticated setup and orchestration.
Test automation is essential for meeting this challenge, but it’s not sufficient on its own. This is where “Continuous Testing” comes in, a process of executing automated tests as part of the software delivery pipeline in order to obtain feedback on the business risks associated with a software release candidate as rapidly as possible. It evolves and extends test automation to address the increased complexity and pace of modern application development and delivery.
This reinvention of software testing remains for many an untapped opportunity to accelerate the delivery of innovative software. Continuous Testing goes beyond test automation by involving practices such as:
- Aligning testing with your business risk;
- Applying service virtualisation and stateful test data management to stabilise test automation for continuous integration;
- Performing exploratory testing to expose “big block” issues early in each iteration.
Granted, Continuous Testing is not a quick fix, but the rewards are truly great. When you reinvent testing, you also unlock a stealth strategy to surge ahead of your competitors.
With its growing complexity, some view testing as hindrance others as a must; where do you think it fits today?
Testing has traditionally been viewed as a roadblock to innovation due to the fact that it was being largely performed manually. Most organisations who made investments in automation to speed up their testing efforts quickly discovered that any code changes/additions still resulted in extensive manual effort around maintenance of their automation test suite. Thus, lofty promises made by vendors around automation rate gains were never achieved and were made further from reality as application complexity grew with each release.
In the era of agile and DevOps, release decisions need to be made rapidly, even automatically and instantaneously. If your test results don’t indicate how much of your business-critical functionality is tested and working, you can’t rely on them to drive automated release gates. Manual review and assessment will be required, and that’s inevitably going to delay each and every delivery.
By moving beyond test automation’s limited scope, Continuous Testing has undeniably become imperative, especially now that 97% of organisations have adopted Agile and 71% are practicing or adopting DevOps. New Forrester research confirms that Continuous Testing is one of the key factors separating Agile/DevOps leaders from Agile/DevOps laggards.
How can companies ensure Continuous Testing?
Like the move to Cloud from traditional on-premises hosting and development, Continuous Testing is a full-scale transformation. We’re not talking about simply adding more tools or replacing existing tools. Continuous Testing requires a deeper shift across people, cultures, processes, as well as technologies.
To enable Continuous Testing, automation rates need to exceed 85% and, to achieve this, several changes are required:
- Align testing with business risk to optimise test execution, implement automated quality gates and provide critical insight for release decisions.
- Minimise manual testing and shift it to session-based exploratory testing.
- Shift testing efforts to the API layer when feasible.
- Use test data management and service virtualisation to enable continuous execution of realistic end-to-end tests – without false positives and timeouts.
- Integrate functional testing into Continuous Integration and Continuous Deliver (CI/CD) so it’s a seamless part of the delivery pipeline.
While Continuous Integration is primarily a tool-driven activity and Continuous Delivery is a tool- and team-driven activity, Continuous Testing involves tools, teams, individuals and services. Building and integrating code changes is certainly important. However, if the automated delivery process cannot identify how changes impact business risk or disrupt the end-user experience, then the increased frequency and speed of Continuous Integration and Continuous Delivery could become more of a liability than an asset.
Given all the change required to just get such an initiative off the ground – much less to see it succeed – executive buy-in and sponsorship is key. I firmly believe that extending investment commitments to the testing process, as well as the development process, is key for fully preparing the organisation to face the current and next wave of digital disruption.