Introducing IBM Test Accelerator for Z
The Announcement is out, and now I can share the exciting news about the new IBM Test Accelerator for Z.
I also highly recommend you read the IBM leadership blog for a summary of the business value this can bring to IBM Z clients.
IBM Test Accelerator for Z is test tooling designed for z/OS Application Developers and Testers, providing unit testing as well as application integration testing, along with testing environment creation, to hasten adoption, usage, and delivery of tests into the development lifecycle of the application.
Testing earlier
A unit test is the test of the smallest piece of code or application that can be practically isolated at a program level.
An integration test verifies the interactions between programs and modules
As these tests happen before deployment during the earlier stages of development, these are the tests that can be used to test and catch defects much earlier in the processes where they can be corrected with less impacts, risks, and cost.
Shifting the test capabilities for mainframe testing left with a modern experience and approach, IBM Test Accelerator for Z is focused on delivering pre-deployment testing capabilities into the hands of z/OS application developers to take advantage of the benefits of of verifying the program in the early lifecycle of the application.
The key component of the Test Accelerator for Z is the Dynamic Test Engine for z/OS. The Dynamic Test Engine for z/OS is the sturdy, proven core for both Early Development Testing for z/OS and Integration Test Builder for z/OS used to create test recordings. It also enables Early Development Testing for z/OS to run without requiring middleware.
The Dynamic Test Engine for z/OS on the host in concert with the IBM z/OS Debugger makes for a trifecta of enablement for the developer doing test enhancements, allowing programming with code coverage collection and debugging while working with the tests to assure the tests cover the code and the code behaves as expected.
On-demand Dev and Test environments for z/OS
On-demand Dev and Test environments for z/OS provides the capability to provision isolated virtualized z/OS instances, irrespective of the target platforms, for development and test using either the IBM z/OS Dev & Test Stock Image or a custom built image. This can be done using an easy to use role-based web user interface or via APIs integrated within a pipeline.
The IBM z/OS Dev & Test Stock Image, containing the Dynamic Test Engine for z/OS, can provide a development and test environment to use as a creative playground for testers to build integration tests and developers to make unit and early integration tests, as well as a platform for running those tests and verifying the program behavior.
Having isolated customized z/OS virtual environments allows testers and developers to have the freedom to truly test, earlier in the cycle so they can report and react on any major problems that are found, without having the impact on others of a shared system. This also has the additional benefit of reducing the test environment burdens of non-virtual LPARs where the environments are shared.
The Unit tests and early integration tests together as a develop and test experience
Early Development Testing for z/OS is the encapsulation of the z/OS mainframe language programmer developer test experience,
Starting with allowing for recording and execution of test paths of the program, the creation and execution of reusable unit and early integration tests that can run without middleware. With test artifacts designed for use with modern source code management tools and capability to use tests in pipelines, the tests are designed for a modern age.
Developers and testers generate automated unit tests and early integration tests through an Eclipse IDE extension offering for IBM Developer for z/OS (IDz), integrating with the Integrated Development Environment. This is so that development and early testing are part of the same experience, enabling Test Driven Development and encouraging co-development of code with test. Unit tests for z/OS developers need to be able to reference middleware and can need to test batch, CICS TS, and IMS programs early in the development lifecycle, so we enable unit testing to occur and be repeatedly used without the need for artifacts to be deployed in the target environments.
For proper unit testing, covering all of the paths can be hard to record or provide during the normal flow. We are introducing a capability of generating test data for those hard-to-reach paths and new paths to be able to be able to reach new corners and get higher code coverage for unit tests.
Early integration testing, which is the next stage after unit testing, allows recording a test, whether it be a batch program or a transaction, and then execute the test without the need for artifacts to be deployed in the target environments.
Building integration tests
Some types of changes and development cannot be tested by using Early Development Testing, for example configuration changes, middleware upgrades, or module changes; instead these must be tested against real subsystems. Integration testing is key in finding and fixing bugs early in the delivery lifecycle that aren’t individual coding issues.
This is where Integration Test Builder for z/OS helps accelerate the testing, by providing a generated test from a recording that exercise the program using Galasa as the test framework. By utilizing the same recording mechanism as Early Development Testing for z/OS, the Integration Test Builder for z/OS defines a Galasa test, where the test run causes the system to run the program, and then the test can assert the values of interest, such as the updated records in the DB2 table or a member created in a dataset.
Being able to use recordings to create programmatic Galasa tests helps both utilize the Early Development Testing and maintain a consistency, but enables the expected results to be then used as part of the larger lifecycle of the application. The generated tests are programatic interactions with the real program interfaces and subsystems, and so are tied to the expectations and requirements and not the program by language, allowing for supporting multiple program language applications.
Integration Test Builder for z/OS provides an integrated experience through use of a Microsoft VS Code extension utilizing Zowe Explorer so that the test is close to the developers and testers creating and using the Galasa tests.
The proven Galasa framework enables end-to-end testing of applications across different platforms, middleware, and a variety of test tools. These tests can validate a new release, settings changes, a new level of z/OS, changes to application code, and changes to files, programs, or transaction definitions. Galasa allows verification of real test data by checking the real subsystems, be they data stores or message queues and allows for automated testing with this IBM supported distribution of Galasa.
Putting it all together
Each of the Test Accelerator for Z parts are available and quite capable on their own, but work optimally together.
On-demand Dev and Test environment for z/OS allows Early Development Testing to happen with limited sharing and isolated environments, allowing for testing in images allowing for controlled circumstances.
Early Development Testing and Integration Test Builder for z/OS in working together provide the left-shifted range of testing.
In creating unit tests, the shift of possible issues detection toward the code allows for quick detection and revision. In early integration testing, we have a capability to test the larger program without the need for the middleware systems, and then in integration testing we can test the full scenario of the new functions or changes including the middleware.
Integration Test Builder for z/OS and Galasa with On-demand Dev and Test environment for z/OS is a powerful combination for integration testing. On-demand Dev and Test environment for z/OS allows an integration level test to quickly be provisioned, and also test against different images. This allows for the testing of not only the applications and their changes but different deployments and configurations, before committing to an actual environment, and also allows for resets, in addition to being useful in having a specific known testing environment.
The extra advantage comes in that these also all fit together to deliver an better end to end experience not just for the individual; these can be incorporated in to the continuous integration and delivery pipelines to allow the tests to not only exist with the source and be treated as code, but run with the changes in the pipeline, as the tests are designed to be able to be managed in source code management and be executable in the pipeline.
More to come
The announcement is just the beginning.
Register and attend the webinar in just a few short weeks on June 25th for the Future of test automation for Z hybrid applications for more information.
I look forward to sharing more soon!