Successful Continuous delivery means being able to roll out a working configuration to production at any time. You’ve got a large and ever-growing list of “application endpoints” that must be consistently working in order for you to achieve Continuous Delivery.
While development times have increased, quality hasn’t kept up. Companies are expected to develop faster, release faster, but face issues of risk and compliance if testing isn’t run properly. Not factoring testing into your continuous delivery process can lead to application crashes and customer service issues.
Continuous testing is the process of running automated unit tests throughout the software delivery cycle, as applications are being developed and all the way to production. This includes larger performance tests and API monitoring both before and after a release, so that you are constantly testing that what you have built is achieving its purpose.
In order for these small and continuous tests to be most effective, they should be run by the people who are developing the application themselves, ideally with the testing toolset that they are most familiar with.
Why is continuous testing important?
As software release cycles shrink from years and months to weeks and days, our testing practices need to evolve to keep up and ensure that your site and application are running. Any break in an application can lead to unhappy customers, and a huge loss in revenue.
A recent Forrester Total Economic Impact Study on Continuous Testing found that implementing true Continuous Testing can reduce QA bottlenecks, saving an organization up to $7 million in operating costs over a three-year period.
The survey also found that improved efficiency in the requirements design process meant less unnecessary work, and more time freed up through a reduced number of meetings. Efficiency in collecting application requirements results in a value of $1.4 million over that same three-year period, according to the study.
But continuous testing isn’t easy to implement
A recent report by Capgemini and Sogeti on continuous testing has found that although many enterprise companies embrace continuous testing, adoption and implementing best practices have been a challenge. While 57 percent of respondents claimed to have “fully embraced continuous testing”, only 17 percent were using automation during the testing process, and over 80 percent claimed that their teams were spending over a third of their testing time on setting up their test environments.
The problems that software teams faced when it came to automating their testing for a full continuous testing strategy included:
- Managing test data
- Moving to Agile development processes
- Legacy tool sets that did not support agile transformation
So what can teams do to successfully implement continuous testing?
There are several things that software teams can do to successfully implement continuous testing. These include: an Agile mindset, a move to shift left (and shift right) processes, and adopting the right tools for digital transformation and continuous testing success.
Shifting testing left (and right)
If you are shifting your processes towards continuous delivery, but your testing is stuck at the end of your delivery process, then testing will become a bottleneck in your delivery.
By shifting your testing left (and shift right testing), developers gain greater visibility before software is pushed to production, by allowing them to test and detect bugs and errors at a faster pace, before it’s too late.
Developers can also manage the test data creation based on previous statistics that enables improved bug fix turnaround time and decision-making.
You can read more here about how the NY Times’ engineering team ran its agile transformation, putting testing at the center of their processes.
Utilizing service virtualization to eliminate dependencies
Not having access to the right environment or the right service can slow down your testing. By running tests with on-demand virtual services, teams can easily virtualize parts of the system, whenever they need, if they are not under test, or unavailable. This means testing can move ahead in a timely manner, letting you get discrete insight into the quality and performance of what you’re testing.
You can read more here about how Fidelity used Service Virtualization to speed up their software delivery development, and how they could test out ideas early on in the development process.
Use the right toolset
Adopting new testing techniques and tools require transformation. In order to successfully implement continuous testing, you need technical skills, organizational structures, and collaboration patterns between various stakeholders.
Testing skills need to evolve to take on the increasingly demanding asks of modern-day testing, and you need to create a culture of people who want to join this digital transformation.
An essential part is working with the tools that your team is already using, so it will be easier for those developers to adopt and run their own tests. These tools should be open-source friendly, easy to use and work with a developer’s already existing toolset. If you limit who can test, you won’t be able to really implement continuous testing.
You can read more here about how Piksel made the transformation to continuous testing, by getting their developers involved in testing at every stage of the software development process, with tools that were easy to use and code with.
By making your team comfortable with these tools, with easy adoption, online training and community support , you can support your team in leading this journey to shift to a modern, continuous testing approach.