Manual Testing (IT)Manual QA Engineer

When manually validating a legacy **IBM i** (AS/400) green-screen application modernization wrapper that transforms **5250** data streams into responsive **HTML5** web interfaces, what systematic manual testing methodology would you employ to verify field-level validation parity, screen transition synchronization during subfile scrolling, and accurate handling of **AID** (Attention Identifier) codes when simultaneous multiple users trigger record locks on shared **DB2 for i** physical files?

Pass interviews with Hintsage AI assistant

Answer to the question

History of the question

Mainframe and midrange modernization projects often encapsulate legacy green-screen logic within web wrappers using tools like IBM Rational Host Access Transformation Services (HATS), Rocket LegaSuite, or custom 5250 emulation gateways. Testers frequently assume that the web layer acts as a simple passthrough, but the translation between EBCDIC character encoding, 5250 field attributes, and HTML5 widgets introduces abstraction layers where validation logic, error messaging, and concurrency controls can diverge from the source system. This question probes the candidate's ability to test emergent behaviors at the intersection of legacy terminal emulation and modern web protocols.

The problem

The core challenge lies in the stateful nature of 5250 terminal sessions versus the stateless HTTP request-response cycle. Legacy applications rely on the 5250 data stream to enforce field-level constraints (such as signed numeric zones, mandatory fill, and field exit checks) and use AID codes to signal specific user actions like ENTER, CLEAR, ROLL UP, or ROLL DOWN. When multiple users access the same DB2 for i record through the web wrapper, the underlying 5250 session management must correctly proxy record lock waits, deadlock timeouts, and CPF (Control Program Facility) error messages back to the appropriate browser instance without cross-contaminating sessions or losing cursor positioning context.

The solution

A systematic methodology requires a three-tier approach: Protocol Fidelity Testing, Concurrency Stress Testing, and Visual Parity Validation.

First, capture raw 5250 data streams using Wireshark or IBM i Access Client Solutions traces to establish a baseline of field attributes and AID sequences. Create test cases that exercise each field type (alpha, numeric with implied decimal, date fields with MDY separators) and verify that the web wrapper enforces identical constraints through client-side JavaScript validation that mirrors the host's EDTCDE and EDTWRD logic.

Second, orchestrate multi-user scenarios using controlled Windows terminal sessions alongside browser instances, targeting the same database record. Verify that the 5250 emulator's MSGWAIT status correctly propagates to the web layer as non-blocking AJAX polling or WebSocket notifications, and that DASD record locks are released appropriately when browser sessions timeout or navigate away.

Third, employ pixel-perfect comparison tools like Applitools or Sikuli to ensure that subfile (scrollable grid) rendering matches the green-screen row/column alignment. Pay particular attention to SFLSIZ and SFLPAG roll behaviors where partial page updates must synchronize with HTML table virtual scrolling.

Situation from life

Problem description

During a modernization initiative for a distribution company's IBM i-based inventory system, the QA team discovered that warehouse users using the new HTML5 interface were inadvertently overwriting each other's stock adjustments. The legacy green-screen application had correctly enforced record locks, showing "Record in use by User X" when simultaneous edits occurred. However, the web wrapper appeared to allow both users to enter edit mode simultaneously, resulting in "Update conflict" database errors triggered at the ODBC layer that presented as generic HTTP 500 errors rather than user-friendly warnings, causing data integrity issues and user confusion.

Solution A: Enhanced Session State queuing

Implement a server-side queue that serializes all requests to the same DB2 record through a singleton adapter pattern, forcing the web wrapper to mimic the blocking behavior of a single 5250 workstation. This approach guarantees data integrity by preventing concurrent modifications entirely and is simple to implement with a Redis distributed lock. However, it creates a bottleneck that degrades performance during high-volume warehouse shifts and diverges from modern web UX expectations where users anticipate concurrent editing capabilities with merge conflict resolution rather than hard locks.

Solution B: Optimistic Locking with versioning

Leverage row-level versioning using DB2 RRN (Relative Record Number) or timestamp columns, allowing both users to retrieve data but rejecting the second commit with a specific conflict message. This method prevents silent overwrites and scales better for read-heavy operations while aligning with RESTful conventions to provide clear feedback for conflict resolution workflows. Nevertheless, it requires schema modifications to legacy physical files technically owned by the IBM i system of record, and legacy programs might not update version columns automatically, potentially creating synchronization gaps between green-screen and web users.

Solution C: Proxy Passthrough with transparent lock status

Configure the 5250 emulation layer to transparently proxy the IBM i's native record lock status messages (CPF5027, CPF5074) directly into the web interface as modal dialogues, maintaining exact behavioral parity with the green-screen experience. This approach preserves the original business logic without modification and ensures that web users see identical messaging and timing to terminal users, leveraging existing IBM i security and audit trails without middleware interference. The downside is that it requires deep understanding of 5250 protocol nuances to correctly parse and translate DSPSIZ and INDARA attributes, and session management becomes complex when users refresh browsers or lose connectivity, potentially orphaning 5250 sessions that hold record locks.

Chosen solution and reasoning

The team selected Solution C because the regulatory environment (pharmaceutical distribution) required absolute behavioral parity between old and new interfaces for FDA 21 CFR Part 11 compliance. Any deviation in how record contention was handled could invalidate the validation documentation of the legacy system. By implementing a WebSocket-based 5250 session bridge that maintained a persistent terminal session per browser tab, the wrapper could accurately reflect record lock waits and MSGID displays in real-time.

Result

The web interface successfully replicated the green-screen's "Record in use" behavior, displaying exact replicas of CPF messages in modern styled modals. Subsequent load testing revealed that the 5250 session pool required autoscaling configurations to handle peak warehouse traffic, as each browser tab consumed a dedicated QINTER subsystem job. The project achieved FDA validation without rewriting the core RPG programs, though monitoring dashboards were added to track orphaned 5250 sessions that could indicate browser crashes holding unintended locks.

What candidates often miss

How do you verify that subfile control records (SFLCTL) with SFLINZ and SFLRNA keywords are correctly interpreted by the web wrapper when the underlying RPG program initializes subfile pages dynamically?

Candidates often focus only on visible data rows, missing that 5250 subfiles rely on control record formats that define page size, subfile size, and scroll indicators. When SFLINZ (Initialize Subfile) is active, the host sends empty records that must be rendered as blank editable rows in HTML5, while SFLRNA (Subfile Records Not Active) controls whether input-capable fields accept data. Testers must verify that the wrapper correctly maps these indicators to DOM element disabled attributes and input field presence, ensuring SFLROLVAL (Scroll Value) indicators trigger specific AID codes (ROLL UP/ROLL DOWN) when users scroll the HTML container so the RPG program receives correct control flow to fetch subsequent data pages.

What methodology validates EBCDIC special graphic characters (like CCSID 37 box-drawing characters or currency symbols) transcription accuracy when the 5250 data stream is transformed to UTF-8 for browser rendering?

Many testers assume standard character encoding conversion handles all cases, but 5250 terminals support alternate character sets and field-level COLOR/DSPATR attributes that map to Unicode combining characters. The methodology requires creating a reference screen containing all CCSID 037 special characters (such as cent signs, pipe symbols, and hexadecimal FF field markers) and comparing rendered output across browsers (Chrome, Edge, Safari, Firefox). Special attention must be paid to SO/SI (Shift-Out/Shift-In) characters that toggle between single-byte and double-byte character sets in DBCS environments for Chinese, Japanese, or Korean language support, ensuring that FF (Field Format) byte positioning within DBCS strings is preserved to prevent misalignment of input fields that could cause RPG programs to read truncated data or throw RNX0101 errors.

How do you test AID code handling for COMMAND key mappings (such as F3=Exit, F12=Cancel) when browser shortcut keys or operating system keybindings conflict with legacy 5250 function key expectations?

Candidates frequently overlook that browsers reserve certain function keys (F1, F3, F5, F12) for their own use, or that macOS treats F-keys differently than Windows. The systematic approach involves mapping every 5250 AID code (F1-F24, CLEAR, HELP, HOME) to test cases verifying that browser keydown events prevent default behavior to avoid triggering browser refresh (F5) or developer tools (F12), that AID codes transmit as distinct POST parameters or WebSocket messages rather than generic button clicks, and that CA (Command Attention) versus CF (Command Function) distinctions are preserved to ensure CA keys trigger the RPG program's INZSR subroutine without validating modified fields while CF keys submit field data. Additionally, validation must occur across Windows, macOS, and Linux clients with different keyboard layouts (US, UK, German) to ensure Alt and Ctrl combinations used for F13-F24 emulation (typically Shift+F1 through Shift+F12) do not trigger OS-level shortcuts like Alt+F4 or Ctrl+Shift+F.