In mainframe, we never do test on live data. Test data sources:
anonymized copy of real data
hand-made data
test data generator programs
filling DB2 test tables
Test data types:
valid records
invalid records
boundary values
extreme values
missing fields
faulty formats
There are separate enviromments on mainframe:
DEV (development)
TEST (testing)
UAT (user acceptance test)
PROD (live)
All environments have
LOADLIB
COPYLIB
DB2 schema
VSAM file
PS dataset
JCL library
For every module a tester main program is made:
reads from PS
writes with DISPLAY
create PS logs
create PS for found errors only
EXAMPLE FOR MAIN TESTER PROGRAM:
The developed main program is executed:
all modules a loaded from LOADLIB (not linked into the main program)
on test data
executed from JCL
If a module changes:
all tests are re-executed
comparing the output with the baseline
The whole process is tested:
input
processing
output
log
error file
DISPLAY with D indicator: mostly used. For this, compiling must happen to trigger debugging mode.
EXAMPLE FOR USING DISPLAY:
PS dataset output for writing test data:
results
errors
logs
SYSOUT; in the spool:
IGYCRCTL messages
IEWL messages
program DISPLAYs
ABEND codes (S0C7, S0C4, S0C1)
ABEND code analysis:
SYSOUT
SYSUDUMP
CEEDUMP
LE traceback
In the compiler JCL the debugging mode will be enabled:
SSRANGE (runtime index check; in case of wrong index, immediate ABEND, no silently corrupting memory)
LIST (the generated machine code, the storage map and the symbol table will be visible)
LIB (library listing; easier to read)
DISPLAY (in COBOL with D indicator; debug in execution time)
EXAMPLE FOR COMPILER JCL FOR TESTING:
EXAMPLE FOR BINDER JCL:
The LE provides:
traceback
CEEDUMP
runtime diagnostics
abend analysis