Professional Documents
Culture Documents
A recent Forrester Consulting study found that there’s still a way to go, stating,
“the lack of modern mainframe development and testing tools hinders development
teams’ ability to improve software quality and slows down ramp-up times,” which
leads to reduced quality and places the enterprise at risk. Forrester identifies several
challenges that must be faced, primary among them being detecting performance
issues and automated testing.
The Forrester discoveries reflect a common industry reality: modernization tools will
improve the quality of applications by a significant margin. Their report shows that
“nearly two thirds (62%) of developers said modern tools will increase the quality of
their organizations’ applications by 23%.”
The bottom line with this analysis, as well as our own, is that automated testing tools
are necessary and so too is improvement to the testing process itself, which must
enable testing earlier and more often.
02
Ten steps to
testing effectiveness
We have identified ten steps that will make testing of mainframe code much more
accurate, while being faster, more profitable, and far more practical, and this eBook
is your guide. So ask yourself, what if you could:
+ Be sure that all your code changes have been tested before moving to the next level
Our proposed shift in the way you can approach testing is summarized as “Analysis,
Data, and Testing.” Here are the ten steps which will put you and your team on a path
for better testing and better development outcomes.
03
Table Of Contents
05 Determine Your Current and Desired State (Analysis)
STEP 1:
As we described in our previous eBook, DORA 4 Metrics for Mainframe DevOps, organizations vary in
the pace of their work. Changes may be deployed extremely frequently, such as hourly, or on a longer
timescale, even annually, for items such as changes in an interest rate. In line with the deployment
frequency metric, organizations themselves are described in terms of maturity as low, medium, high,
and elite.
+ A low performer deploys once a month or once every six months, which is quite common in the
mainframe world.
+ A medium maturity performer deploys between once a week and once a month.
+ Elite status is given to organizations that deploy multiple times a day. Typically, these are
companies like Google, Facebook, and Netflix. They expect their teams to be able to push code
into production on day one. In terms of mean time to recover, an elite company can fix a problem
in less than one hour from the time it’s detected until it’s resolved.
05
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
Self-assessment
Tools that can help
+ It starts with a self-assessment that may involve a process analysis
to take a snapshot of how things are currently done: The Escaped Abends Ratio built into BMC
Compuware zAdviser assesses abilities, generates
+ Define your current testing processes reports, and establishes benchmarks that will be
useful in tracking your progress. It identifies abends in
+ Identify your technology stack production helping you establish a goal of decreasing
them over time.
+ Define your desired testing methodology and frameworks
Next, list your success indicators. Here are a few typical success indicators
(yours may be different):
+ Decrease your change failure rate – ability to add new test cases when
errors are found
+ Employ shift left – perform testing earlier in the process and increase
testing frequency, such as every sprint, or every night, or every compile
06
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 2:
This is obviously critical for testing because whoever is in the driver’s seat at any given Success indicators
moment, must understand what is being tested and how this impacts the overall
application, which itself might feed into Program B, which feeds into Program C. + Modern Developer Experience, IDE
Understanding the overall big picture, including the connections, when it comes time
to test, is critical. + Tooling that promotes agility
The modern development environment helps ensure that people have the right tests + Ability to scan for quality and measure testing
to test the data or the code. Having that in a modern interface, rather than a green
screen makes things much easier. + Modern source code management
07
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 3:
+ What is involved The BMC Compuware Topaz for Program Analysis Runtime
Visualizer provides a dynamic visualization of program and I/O calls
+ Programs and their call structure - is it online? What transactions does presented in the sequence in which they occur. There is no need to
it perform? How would you test it? Is it a DB2 program? IMS? Does it recompile your programs; simply just run them with Runtime Visualizer on.
have VSAM?
These type of questions boil down to the use of a program analysis tool,
which is an essential component of automating testing.
08
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 4:
Implement code coverage to understand how much of your code is being better. When the day to go to production arrives, testing is declared done.
executed. The benefit of increasing code coverage is that, whereas traditional Testing at the very end of the project means that errors are caught too late,
testing might leave large chunks of edited code unchecked – risking errors especially if the error requires going all the way back to the beginning, which
being found in production – code coverage means getting a higher could be drastic. In earlier decades, this process relied on end users to report
percentage of the right code under control immediately. bugs back to the developer, who would then fix them for the next release.
But the marketplace has no time or patience for such tradition any longer.
How can you know whether or not you have tested the relevant pieces of
mainframe code? How do you know if your testing is effective or when you’re The market now demands testing within each two-week sprint, or even every
done with testing? Code coverage delivers the metrics that ensure a test case night, or after every change, which is impossible when a traditional test suite
has covered the changed lines of code. The BMC Compuware Xpediter Code takes hours to run, and must then be looked over. What needs to happen is a
Coverage product highlights the lines that were executed in green, and those shift left, in which testing is done earlier and throughout the development
that were not executed show up in red. This means you can run a test case process, using smaller amounts of data. Code coverage is the means to do
through BMC Compuware Topaz for Total Test using code coverage and this effectively.
generate a report that shows everything that was covered.
09
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
Why is this smarter and more effective? Because you need the right balance between the
type of test (functional, regression, performance), and how often you will test (each compile,
each sprint before Prod). The amount of data you will need varies depending on what type of
testing you will be doing. You won’t need a million records to test a few lines of changed
code. But is it really possible to feel comfortable with just a small amount of test data?
Code coverage is the game changer. It allows you to say, “I ran it with 100 records, and I hit
everything.” By comparison, testing with a million records isn’t better just because it’s more.
In fact, it is more like testing blindly, since you can’t be sure that you have tested the changes.
Once developers see how code coverage can work, it becomes far easier to embrace.
Code coverage represents a shift left process that is essential for effective mainframe testing
overall. It’s one of the foundational pieces to getting testing done. It answers key questions
about knowing whether or not you have tested the relevant pieces of mainframe code, and
when you are done with testing.
Success indicators
10
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 5:
11
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
Actions that can help Minimal viable data: making smaller test data fles
Create a plan for your data: MVD is the smallest set of data that is required to test the portions of code
where changes are being made. This is something that can only be known
+ Provide Minimum Viable Data (MVD) – this is because testing with once the data, its structures, and its relationships to other data, are fully
insufficient data or with too much data are both inefficient – not all understood. This is especially important for bringing data down from the
records are needed, just the right records gold copy. But this, too, is a process that developers don’t typically do, even
though it allows companies to move at a much faster speed.
+ Procure production data on a regular basis and or as needed
You have two choices to produce smaller datasets:
+ Establish consistent standards for sub-setting and masking data
1. Take your main driving dataset and cut it in half, check the code coverage,
+ Stay compliant – Disguise Personally Identifiable Information (PII) then cut it in half again, check the coverage. Repeat until you get
something that won’t take long to run and still gets acceptable coverage.
+ Develop the ability to subset and disguise data
2. Use BMC Compuware Test Data Optimization (TDO), a more scientific
method to get you to the minimal data necessary. TDO can help identify an
optimized subset of records that yield an acceptable execution percentage.
Test data optimization means selecting the data that is needed to ensure the
highest level of code coverage. It is the exact number of records you need to
test your code.
12
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
Case study – A large North American bank: A client of ours told us that to test all
their capabilities, they would replicate their 15-to-20 million records in production
to multiple different databases at different levels, simply because they did not want to
go through the task of figuring out what data they needed at what area. Their testing
process took hours, days, and sometimes weeks. Imagine how much more efficient
their system would have been if, instead of 20 million records, they needed to identify
only the 10,000 records required. This is what optimization does. It makes things
simpler to run, simpler to understand, simpler to update, simpler to complete. It also
makes things faster, while reducing costly CPU usage.
Success indicators
13
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 6:
14
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
Success indicators
15
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 7:
The complexity of testing is made easier through the use of the McCabe Complexity metric, which
identifies the number of unique test cases, not for the whole program, but for modules or paragraphs. If
there are seven test cases needed to test it, it’s not too difficult to come up with seven test cases. But if
it’s 256, or 500 different test cases, then a different strategy is needed. The McCabe metric helps people
understand the complexity of the testing requirement, and might lead to a more significant refactoring.
Success indicators
16
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 8:
Manual testing carries a further risk even when there is not necessarily a bug Tools that can help
within the code that has been updated. Manual testing adds a human factor,
BMC Compuware Topaz for Total Test enables developers and
and humans come with their own weaknesses such as fatigue, distraction,
testers at all skill levels to test programs and subprograms almost
and hunger. Things can get overlooked when testing is done manually, which
immediately after updating a piece of code to ensure unintended
adds greater risk and time to the project.
changes were not introduced into the codebase. It intelligently executes
only test cases related to changed programs in a CI/CD pipeline, and
By contrast, a codified, consistent, automated set of scripts runs at the same
ensures the consistency and accuracy of test data through an
time, it takes the same amount of time, and it hits all the pieces. It’s like the
integration with BMC Compuware Topaz for Enterprise Data.
expert’s perfect maxim: “all I can do is save you time and money.” Automated
testing does this for the organizations that deploy it.
17
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 9:
18
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
STEP 10.
The move to Agile and DevOps has as a central area of focus, the idea of
continuous improvement through shift left and continuous testing, all of
which are intended to continuously improve a product during development,
but to also continuously improve an organization as it progresses through its
life. Continuous improvement is an ongoing process of tuning and tweaking
the system. In terms of testing, it’s about constantly refining the process to
improve code quality. It has no beginning and no end.
Success indicators
19
STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 STEP 9 STEP 10 SUMMARY
In terms of efficiency and quality, we’re all looking to move faster, and get the product out to the market
more quickly. But it’s important to not lose any of the efficiencies that have already been attained. Make
sure to maintain the relationship between quality and efficiency on the one hand and moving faster and
getting the product out the door, on the other.
In addition to the quality of the product being developed, it is advisable to also ensure you seek out
something that enhances the developer experience or makes the developer experience a delight. This
is part of the DevOps mantra and helps ensure your team members feel good about the changes and
developments, since they are the ones, ultimately, who are making progress happen for the organization.
Want to build a pragmatic approach to adopting efficient testing practices for your mainframe
application development? Schedule a DevOps Transition Workshop with our BMC DevOps architects,
and they will help you develop a pragmatic approach to adopting DevOps practices for the mainframe.
20
About BMC
BMC works with 86% of the Forbes Global 50 and customers and partners around the world to create their future. With our history of innovation, industry-
leading automation, operations, and service management solutions, combined with unmatched flexibility, we help organizations free up time and space to
become an Autonomous Digital Enterprise that conquers the opportunities ahead.
BMC, the BMC logo, and BMC’s other product names are the exclusive properties of BMC Software, Inc. or its affiliates, are registered or pending registration with the U.S. Patent
and Trademark Office, and may be registered or pending registration in other countries. All other trademarks or registered trademarks are the property of their respective owners. * 537032*
© Copyright 2022 BMC Software, Inc.