Introduction to Mainframe Environment and Roles
What's a Mainframe?
Mainframe vs. Distributed
Core Mainframe Components
Mainframe Operating System
Mainframe Data Storage
The Mainframe SDLC
Key Mainframe Roles
The Mainframe Tester Role
Mainframe Test Environments
Change Management on Z
Why Test Mainframe Apps?
Impact of Downtime
Compliance & Regulations
Mainframe Modernization
Future of Mainframe Testing
Navigating the Mainframe: TSO and ISPF Fundamentals
Mainframe Access Basics
ISPF: Your Mainframe Hub
Navigating ISPF Panels
What are Mainframe Datasets?
Dataset List Utility (3.4)
Browsing Datasets (3.4 'B')
Editing Datasets (3.4 'E')
Copying Datasets (3.3)
Deleting Datasets (3.4 'D')
Allocating New Datasets (3.2)
Renaming Datasets (3.4 'R')
Moving Datasets (3.4 'M')
Member Management (3.4 'S')
ISPF Utilities (Option 3)
Customizing Your ISPF
Understanding Mainframe Application Types: Batch Processing
What is Batch Processing?
Batch vs. Online: Key Diffs
Batch Job Components
Batch Job Flow Basics
Batch Processing Benefits
Job Submission & Monitoring
Job Logs: Your First Look
Common Batch Outputs
Batch Job Dependencies
Batch Job Scheduling
Batch Testing Challenges
Test Data for Batch
Verifying Batch Outputs
Batch Test Scenarios
Batch Test Environment
Understanding Mainframe Application Types: Online (CICS)
What is CICS?
CICS Architecture Basics
CICS Transactions Explained
CICS Programs & Maps
CICS Resources Overview
Conversational CICS
Pseudo-Conversational CICS
CICS Data Handling
CICS File Access
CICS and Databases
CICS Test Considerations
CICS Test Data Needs
Executing CICS Tests
CICS Performance Testing
CICS Error Analysis
Understanding Mainframe Application Types: Online (IMS)
What is IMS?
IMS DB: The Database
IMS DC: The Transactions
IMS DB/DC Interaction
IMS vs. CICS: Key Differences
IMS Transaction Flow
IMS Test Data Needs
IMS Test Environment Setup
IMS Test Execution Basics
IMS Output Analysis
IMS Performance Testing
IMS Recovery Testing
IMS Security Testing
IMS Batch vs. Online Testing
IMS Problem Diagnosis
Job Control Language (JCL) for Test Execution
What is JCL?
The JOB Statement
The EXEC Statement
The DD Statement
JCL Comments & Syntax
Conditional JCL
Symbolic Parameters
In-stream Data (DD *)
JCL Procedures (PROCs)
The SET Statement
JCL for Batch Program Test
JCL for Utility Execution
JCL for DB2 Program Test
JCL for CICS Program Test
JCL for IMS Program Test
Mainframe Utilities for Test Data Management
Why Utilities Matter
JCL for Utilities
IEBGENER: Copying Data
IDCAMS: The Swiss Army Knife
IDCAMS: Deleting Datasets
IDCAMS: Renaming Datasets
IDCAMS: Defining Datasets
IDCAMS: Listing Dataset Info
IEBCOPY: PDS Management
IEBUPDTE: Updating Libraries
SORT: Ordering Test Data
ICETOOL: Advanced Data Ops
Utilities for Test Setup
Utilities for Test Cleanup
Best Practices for Utilities
Test Data Management: VSAM and GDGs
What is VSAM?
VSAM Dataset Types
VSAM Access Methods
VSAM Components
VSAM vs. Sequential Files
Defining VSAM Datasets
Loading VSAM Test Data
Modifying VSAM Test Data
Deleting VSAM Datasets
VSAM Test Data Strategies
What are GDGs?
GDG Base Definition
Creating GDG Generations
Accessing GDG Generations
GDG Test Data Strategies
Test Data Management: DB2 Databases
DB2: Mainframe's Data Hub
DB2 Architecture Basics
DB2 Objects: Tables & More
SQL: The Data Language
Retrieving Test Data (SELECT)
Adding Test Data (INSERT)
Modifying Test Data (UPDATE)
Removing Test Data (DELETE)
DB2 Data Types & Constraints
Joining Tables for Tests
DB2 Test Data Refresh
DB2 Data Subsetting
DB2 Data Masking
DB2 Utilities for Testers
DB2 Test Data Best Practices
Executing and Analyzing Batch Tests
Batch Job Basics
Submitting Your First Job
Monitoring Job Status
Job Output Retrieval
Holding and Releasing Jobs
JESYSMSG Decoded
SYSPRINT and Program Output
Return Codes Explained
Condition Codes & JCL
Reading the Job Log
What's an Abend?
Common System Abends
Common User Abends
Abend Location & Context
Initial Abend Diagnosis
Executing and Analyzing Online (CICS/IMS) Tests
CICS Test Execution Basics
Navigating CICS Screens
CICS Functional Testing
CICS Error Handling Tests
CICS Transaction Monitoring
IMS Test Execution Basics
Navigating IMS Screens
IMS Functional Testing
IMS Error Handling Tests
IMS Transaction Monitoring
CICS Transaction Logs
IMS Transaction Logs
System Messages for Online
Troubleshooting Online Issues
Reporting Online Test Results
Advanced Test Data Management with File-AID
What is File-AID?
Accessing File-AID
Browsing Data with File-AID
Editing Data with File-AID
Copying Data with File-AID
Data Subsetting
Data Masking & Anonymization
Data Generation
Data Extraction to PC
Data Loading from PC
File-AID for DB2: Browse
File-AID for DB2: Edit
File-AID for DB2: Copy
File Comparison
Report Generation
Debugging and Problem Analysis with Xpediter
Why Xpediter?
Accessing Xpediter
Debugging Modes
Setting Up a Batch Debug
Setting Up an Online Debug
The Debugging Screen
Stepping Through Code
Breakpoints Explained
Conditional Breakpoints
Watchpoints & Monitors
Inspecting Variables
Memory & Registers
Diagnosing Logic Errors
Abend Analysis with Xpediter
Advanced Debugging Tips
Abend Analysis with Abend-AID
What's an Abend?
Meet Abend-AID
Accessing Abend-AID Reports
Report Sections Overview
The Abend Summary
Program & Register Info
Data Areas & Storage
File & Dataset Info
Traceback Analysis
Common Abend Codes
S0C7: Data Exception
S0C4: Protection Exception
Using Abend-AID for CICS
Abend-AID for DB2
Resolving Abends
Functional and Regression Testing Strategies
Functional Test Basics
Mainframe Test Case Design
Batch Functional Testing
CICS Functional Testing
IMS Functional Testing
Regression Testing Defined
When to Regression Test
Regression Test Selection
Regression Test Data
Regression Test Execution
Test Suite Organization
Test Case Maintenance
Test Reporting & Metrics
Test Environment Mgmt
Challenges & Best Practices
Integration Testing and System Verification
What is Integration Test?
Types of Integration Tests
Mainframe Interfaces
Test Environment Setup
Data Flow & Dependencies
Designing Integration Test Cases
Test Data for Integration
Executing Batch Integration
Executing Online Integration
Analyzing Integration Results
What is System Verification?
Planning System Verification
Executing System Verification
Troubleshooting Integration
Best Practices & Tools
Agile and DevOps Principles in Mainframe Testing
Agile: Not Just for Distributed
Scrum in Mainframe Teams
Kanban for Mainframe Flow
DevOps: Bridging the Gap
CI/CD on the Mainframe
Mainframe Automation Tools
Culture of Collaboration
Shift-Left Testing
Test Environment Strategy
Automated Unit Testing
Automated Functional Tests
Performance & Security
Measuring Success
Best Practices for Success
Your Mainframe Journey
Mainframe Test Automation with Zowe CLI
What is Zowe CLI?
Installing Zowe CLI
Configuring Zowe Profiles
Basic Zowe CLI Commands
Working with Zowe CLI Output
Managing Datasets
Transferring Files
Submitting & Monitoring Jobs
Interacting with USS
Working with JES Spool
Scripting Zowe CLI
Zowe CLI & CI/CD
Zowe CLI & Test Data
Zowe CLI Plugins
Best Practices for Zowe CLI
Unit Testing on Z with IBM Z Open Unit Test
Why Unit Test Mainframe?
Unit Test Principles on Z
IBM Z Open Unit Test Intro
ZOUT Architecture Overview
Setting Up Your ZOUT Env
Test Case Generation Basics
Defining Test Inputs
Setting Expected Outputs
Mocking External Calls
Executing ZOUT Tests
Interpreting Test Results
Debugging Failed Tests
Code Coverage with ZOUT
CI/CD Integration
Best Practices for ZOUT
Mainframe Testing Interview Preparation
Mainframe Basics: Interview
Roles & SDLC: Interview
TSO/ISPF: Interview Q&A
Batch Apps: Interview Q&A
CICS Apps: Interview Q&A
IMS Apps: Interview Q&A
JCL for Tests: Interview
Mainframe Utilities: Interview
VSAM & GDGs: Interview Q&A
DB2 Data: Interview Q&A
File-AID: Interview Q&A
Xpediter & Abend-AID: Q&A
Testing Strategies: Interview
Agile & DevOps: Interview
Automation: Interview Q&A