Go With Flow: Unit Testing, DevOps, and the Mainframe
Here are some insights into where Agile, DevOps, and some of their associated approaches like Flow Agile and CI/CD combine for better synergy.
Join the DZone community and get the full member experience.Join For Free
If Mark Twain were a software developer, he’d surely define insanity as continuing to follow the aging waterfall software development methodology. After all, most waterfall projects fail in one way or another, from running over budget to missing deadlines to delivering poor quality results.
To address these issues, Agile methodologies like Scrum have been around for years – and yet, many attempts at implementing Scrum still involve iterations that feature a fixed sequence of steps.
This ‘Scrumfall’ approach falls short of delivering the promised benefits of Agile. Organizations may say they’re Agile, but they’ve fallen into the trap of implementing a mini-waterfall process rather than implementing ‘true’ Agile.
Today, as organizations move to DevOps, Scrumfall becomes a risk factor that can sink such a move. More than a software methodology, DevOps represents a cultural shift toward increased collaboration, depending in large part upon better automation – and Scrumfall can stop it dead in its tracks.
However, teams that get DevOps ‘right’ are able to achieve continuous integration and continuous delivery (CI/CD), delivering software on an ongoing basis, as fast as the business requires.
If those organizations have mainframes, however, both cultural and technical issues stand in the way of this CI/CD goal of DevOps. Many such organizations suffer under the burden of Bimodal IT, where the mainframe group is relegated to the ‘slow’ mode, inevitably following waterfall with its concomitant limitations.
The siren song of DevOps, however, is drawing mainframe leadership away from this Bimodal trap, as mainstreaming the mainframe is critical for the success of digital transformation initiatives at any company that depends upon the platform to run their business.
Improving Upon ‘Scrumfall’
This mainstreaming of the mainframe faces additional hurdles, in particular, the challenges of Scrumfall. The approach that is shaping up to address these challenges, ‘Flow Agile,’ is becoming increasingly popular.
Flow Agile is not a formal methodology, and in fact, its informality is by design. It eschews the dogmatic approaches of both waterfall and Agile, instead favoring the Lean notions of avoiding waste and continuous improvement.
In practice, teams following Flow Agile realize that the various steps in the software lifecycle – design, develop, test, deploy, etc. – are not discrete steps in a sequence, but rather loose clusters of activities that anyone on the team may undertake at any time as appropriate to the goals of the software.
Automated Unit Testing Essential to Flow Agile
Needless to say, the tooling such teams use must reflect this practice, especially when the team is mainstreaming the mainframe. Automated unit testing, for example, is a prime example.
Unit testing focuses on small portions of code in isolation, allowing team members to catch errors and anomalies quickly and efficiently.
Because today’s code is typically connected to other bits of code, either as objects within a single execution environment or via APIs across such environments, automated unit testing must virtualize such external interactions in a way that the automated tests can adequately cover the code in question.
In a heterogeneous environment, say, when mainframe application code must interact with code on distributed platforms both on-premises and in the cloud, the ability to unit test consistently across all such environments is essential to the success of the DevOps effort overall.
Remember, with Flow Agile, testing is no longer a step in a sequence of steps. Rather, testing is a set of activities that various members of the team may undertake at different times throughout an effort as appropriate.
Unit testing is one of the most important of these activities, as long as all relevant code is available to automated unit testing. This context for unit testing explains why Compuware acquired XaTester from Xact Consulting. Compuware already offered Topaz for Total Test, an automated unit test suite for COBOL-based batch applications.
XaTester brings PL/I, assembler, CICS, and IMS into the Topaz fold, thus extending the reach of Compuware’s unit testing capabilities to the vast majority of mainframe programming environments.
Coupled with Topaz’s integration with DevOps tools including Jenkins, SonarSource SonarQube, and Compuware ISPW, DevOps team members can now perform automated unit testing across environments as a seamless part of their DevOps automated toolchain-supported workflows.
The Intellyx Take
Unit testing is an essential part of any software methodology, including both waterfall and Scrum as well as Flow Agile – and furthermore, automating unit tests will improve the results and reduce the time of any testing regimen.
As a result, the combination of Topaz for Total Test with XaTester can provide value for both DevOps and more traditional efforts alike.
It’s important to remember, however, that as a cultural shift, what is and is not DevOps is not a black-and-white distinction. Teams can be more or less collaborative, more or less Lean, and leverage automated tooling to a greater or lesser extent.
Any progress toward the DevOps CI/CD ideals is likely to improve the business results of the software development effort, regardless of whether an organization is full-blown DevOps or just getting started on its DevOps journey.
For teams working in heterogeneous execution environments, in particular those with mainframes, ensuring a level playing field for all team members avoids the Bimodal bottleneck that can throttle progress with DevOps and digital transformation overall.
Automated unit testing is an essential part of this level playing field. Team members should be focusing on delivering business value, not on the intricacies of manual testing, or the complexities of testing across environments. Everybody knows that testing is essential, but it certainly doesn’t have to be manual.
Copyright Intellyx LLC. Compuware is an Intellyx client. At the time of writing, none of the other organizations mentioned in this article are Intellyx clients. Intellyx retains full editorial control over the content of this paper. Image credit: Konstantin Malanchev.
Published at DZone with permission of Jason Bloomberg, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.