Test Driven Development on the Mainframe: It’s Here
Overview: Learn how you can support Test Driven Development on the mainframe with Topaz for Total Test and how it allows you to write tests before you code to ensure higher-quality programs.
When I joined Compuware in 2018 as part of its acquisition of XaTester—a tool that provided functional testing for mainframe applications—Compuware’s automated testing tool, Topaz for Total Test, was at the cutting edge of automated unit testing for mainframe applications.
With two of the best testing products on the market now under one roof, our primary mission became integrating the best approaches and capabilities of the tools to generate unprecedented synergies that would fuel the acceleration of our customers’ DevOps journeys.
On April 1, for our 18th consecutive quarterly launch of innovation, we released the first results of this integration. I covered much of this in a recent episode of Compuware’s podcast, The Modern Mainframe.
You can also read about everything new we released in our press release, including:
- One user experience for running unit, functional and integration tests from the same test scenario
- Automated functional testing
- Advanced, flexible test scenario support
- Support for multi-program integration testing
- Another integration with our partner XebiaLabs
- Automatic generation of JCL
New: Test Driven Development on the Mainframe
One profound benefit to come of this release is that Topaz for Total Test now supports Test Driven Development on the mainframe. Developers and testers can now design test cases, before developing programs, based on program specifications.
What Is Test Driven Development?
Test Driven Development isn’t something most mainframe developers are familiar with. It differs from the traditional processes of analyzing, designing, developing and then testing a program.
Test Driven Development is a modern approach wherein you specify the test of a program based on its specifications during functional testing, which is when you test the specification of a program.
By writing the test before you write the code, you can specify what a program should do in the best possible way because you can execute the test again and again until it succeeds, then develop the program with the knowledge of how it can meet its specification.
How Topaz for Total Test Supports Test Driven Development
With the new functionality we’ve added to Topaz for Total Test, whether you’re a developer or a tester, you can create functional tests in a Test Driven Development process before you have the program.
With our stubbing technology, you can virtualize the program to be tested without executing the test case against it, instead executing the test case against the program stubs you’ve created. To learn more about stubbing, read this blog.
Test Driven Development not only allows you to write a program based on the success of its test, it also enables parallel development in the sense that one developer or tester can focus on creating tests while another develops the source code, effectively increasing velocity and efficiency while ensuring higher quality.
Caveat: Test Driven Development Is for New Development
Test Driven Development isn’t applicable in every case. It works well for new development, “when you are writing new code that has few or zero dependencies on other code,” as my colleague Glenn Everitt explains in his blog; and the reality is, most mainframe code already exists.
But there’s another useful application of Test Driven Development—what we might actually call Test Driven Maintenance. When you find a bug, you should create a test to reproduce it before fixing it or changing the source code. This ensures higher quality by giving you a way to prevent bugs that you’ve specified through this process in the future.
It’s Time to ‘Shift Left’
Automating unit, functional and integration testing as well as enabling modern approaches like Test Driven Development are critical to helping you shift testing left so it occurs earlier in the development lifecycle.
Doing so empowers you with new visibility and knowledge of what’s happening sooner so you can prevent costly, time-consuming, agility-constraining bottlenecks as you move through delivery, not to mention with greater quality, velocity and efficiency through the employment of these techniques.