DevSecOps Solutions - Group home

Testing hybrid Z applications with VTP 2.0

  


In the book “Spying on
Whales,” Nick Pyenson writes about how the largest mammals on earth precariously balance the marine ecosystem from tiny organisms to large fishes - and interestingly, how the tiny zooplankton are directly responsible for the well-being of these resplendent beings. This is a reminder of how the tiny can never be ignored and how critical functions are held together by minuscule pieces.

In the context of the world that we are in, IBM Z is indeed the steadfast mammal, with its ability to sustain critical functions throughout the world. Sometimes we forget that these important functions are held together by smaller pieces. So when there is a change in a large application running these day to day functions for a retailer or a bank enabling people around the world to go about their lives without a blink of an eye, we often forget to make sure that these small functions are given enough importance. The changes made in the applications are tested, often, from a functional point of view much later in the development cycle - leading to a mad scramble to fix things or delaying customer deliverables. 


In June 2020, we released a new product called IBM Wazi Virtual Test Platform v1.0 - which carved a niche in the area of testing Z Applications by allowing a developer to test and verify the impact of their changes before deployment. A ZVTP test is created by recording and capturing all the subsystem and program interactions of a transaction(s) or a step in a batch job. Once recorded, this test can run against the application load libraries without the need for the subsystem. So a developer can test the changes made to a program that's a part of a transaction against his or her own load libraries before deploying the code. The past year has been eventful for ZVTP. We added a number of features - like support for QSAM/VSAM files for COBOL, IMS , MQ, CICSplex and so on. The product even got its first rename - to IBM Z Virtual Test Platform (ZVTP). 


A business capability delivered by an enterprise application is seldom restricted to just CICS or IMS transactions or jobs. The overall capability might be delivered by a combination of technologies - browser or mobile-based front ends, cloud applications accessing CICS or IMS transactions via APIs, etc. With ZUnit for unit testing a program and ZVTP for early integration testing, a developer now has the automation to test changes under various stages of stubbing. The next level of testing consists of tests run within the environment - Integration tests with the z/OS components or end-to-end tests for the hybrid application. 


These integration tests are typically managed by test teams and run either manually or via automation developed by the test teams. A number of test frameworks allows testing of web pages or APIs. However, these frameworks do not have an easy and consistent way to interact with the z/OS components such as CICS transactions or batch jobs. Galasa (https://galasa.dev/) is an open-source test framework that offers deep integration with z/OS allowing you to write test scripts that invoke CICS transactions or batch jobs and verify them. Galasa can also test the distributed components of the hybrid application and even integrate with existing test products like Selenium or JMeter. 
With the June 2021 release of IBM Z Virtual Test Platform 2.0, you can now get a supported version of Galasa called IBM Distribution for Galasa. This enables you to extend the developer-led testing offered natively with ZVTP with end-to-end cross-platform integration testing with IBM Distribution for Galasa.

ZVTP 2.0 also formalizes the existing ZVTP tests by introducing test case artifacts and HTML-based test results that can be managed via Source-Control Management (SCM). ZVTP provides information about the test case recording so you can understand more about what is happening, such as which transactions and programs were called.


The results can be exported as PDF and stored for audits. The results of a test case run help identify any differences between the test case recording and the latest run, without the need to deploy the code. Developers can determine if the changes are what's expected based on the code changed. 


In this modern development where infrastructure as code and GitOps are the future, ensuring that your tests are also version controlled and executed as part of a pipeline is very important. Both ZVTP and IBM Distribution for Galasa ensure that you maintain your tests as code, checked into the SCM and executed as part of your automated pipeline. ZVTP 2.0 brings you closer to the reality of creating a single testing pipeline for all. You now have similar methods and technologies to test the z/OS components along with the distributed parts of your application enabling continuous integration across your hybrid-cloud applications.



Software quality is a continuous process - everybody responsible for the product plays a role; just like the different organisms that make up a marine ecosystem.