Continuous Testing in the DevOps Universe
Source – itbusinessedge.com
One of the main challenges with DevOps is that the term itself does not adequately describe the functional integration taking place in the enterprise. If it was just a matter of combining development and operations, things would be a lot simpler. But the fact is that a number of processes need to gain equal footing in the DevOps pipeline in order to produce a truly agile IT environment.
One of these functions is testing. Like other aspects of the software lifecycle, the test phase is crucial for a successful release but has long been viewed as a distinct step from the remainder of the process, which happens only once, or maybe twice, before a product is launched into production environments.
But just as continuous integration/continuous deployment (CI/CD) is infiltrating the DevOps world, so too is continuous testing (CT).
The challenge, says Eran Kinsbruner, tech evangelist at cloud-based testing provider Perfecto, is to integrate testing into the pipeline without disrupting it. By nature, CT will require automated testing to be embedded into every commit, even if they take place once per week, once per day or every few hours. The best way to accomplish this is to foster a high degree of communication between test, dev and ops to ensure everyone is on the same page when it comes to releasing quality code. This also helps build trust within and between teams, as long as everyone is honest about what they need to do, and why.
Another key aspect of CT is a rapid and robust continuous feedback mechanism, says Stefan Friese, test/R&D manager at HERE Technologies. Again, automation is a key factor here, but it also requires a holistic approach in which test data is integrated into the workflow smoothly and at an early stage to prevent a lot of work being undone in order to achieve quality results. This process will become increasingly intricate as the enterprise evolves from services and applications to container-based microservices. In this world, many unit tests will still take place in isolation, while integration and end-to-end testing will require more time and may end up being more fragile.
As DevOps environments expand and grow more complex, however, adequate testing will largely come down to proper management, according to Plutora’s Bob Davis. Poor management leads to release delays, cost overruns, disaffected users and poor team morale, which is why it is crucial to create oversight of the entire release cycle up front when workflows are still relatively simple. Test-Environment Management (TEM) software can help in this regard by helping teams devise appropriately configured testing regimes as needed, which should streamline testing requirements both before and after deployment. Ultimately, this can evolve into a continuous delivery management (CDM) architecture that combines test, analytics, governance, and a host of other capabilities to ensure management of the DevOps environment is as agile as the actual development and operational functions.
Of course, even the most agile testing environment is only as effective as the tools at its disposal, which is why organizations should take a hard look at how well they implement new systems and practices. Steve Watson, interim project manager at Reed Business, noted to Software Testing News recently that with new rules like Europe’s General Data Protection Regulation (GDPR) coming due, organizations are facing new compliance requirements that existing test resources might not be equipped to deal with. And this will affect not just testing, but governance, security, management and a host of other factors, all of which must be updated and integrated into a functioning agile environment.
Testing has long been the black sheep of the software world. Developers build, testers break. Developers fix, and testers break it. But if the enterprise is to have any hope of success with DevOps, these two functions must come together willingly.
Without testing, of course, bad code makes its way into production, which leads to unhappy customers and, ultimately, unhappy management. With testing as an integral function in both dev and ops, the enterprise stands a better chance of getting it right the first time, and from there it can expand and build on what already works rather than perpetually fixing what doesn’t.