Handmatige testen (IT)Senior Handmatige QA Ingenieur - Mainframe Modernisering

Bij het handmatig valideren van een **mainframe CICS** (Customer Information Control System) online transactie verwerkingsgateway die legacy **COBOL**-programma's als **RESTful** webservices via **z/OS Connect** exposeert, welke systematische handmatige testmethodologie zou je toepassen om **COMMAREA** buffergrensschendingen te detecteren, de rollback-integriteit van **EXEC CICS SYNCPOINT** te verifiëren tijdens gedistribueerd bronnenherstel, en de validatie van **TDQ** (Transient Data Queue) triggerverwerking te bevestigen wanneer meerdere **CICS**-regio's **VSAM**-clusters delen onder **RLS** (Record Level Sharing) toegangmodus?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord op de Vraag

Geschiedenis van de Vraag

Deze vraag komt voort uit moderniseringsinitiatieven van ondernemingen waarbij decennia oude CICS-transacties die kernbank- of verzekeringssystemen aandrijven, worden blootgesteld als moderne REST API's via z/OS Connect of vergelijkbare middleware. De complexiteit komt voort uit de impedantie mismatch tussen stateless HTTP-protocollen en stateful CICS transactiecontexten, vooral met betrekking tot gegevensmarshaling tussen JSON en COBOL copybooks. Historisch gezien blijken handmatige QA-benaderingen die zijn ontworpen voor ofwel puur mainframe green-screen testen of moderne microservices onvoldoende te zijn voor deze hybride grens, wat leidt tot productiefouten die zich alleen onder specifieke belastingcondities of gegevensrandgevallen manifesteren.

Het Probleem

Handmatige QA staat voor unieke uitdagingen in deze omgeving omdat defecten zich voordoen op het snijvlak van het gedrag van gedistribueerde systemen en legacy mainframebeperkingen. COMMAREA-buffers hebben vaste lengtes gedefinieerd in COBOL-copybooks, maar JSON-payloads zijn variabele lengte, wat stille truncatie veroorzaakt in plaats van expliciete fouten wanneer z/OS Connect datamapping uitvoert. Bovendien kunnen CICS-transacties die EXEC CICS SYNCPOINT gebruiken voor databaseconsistentie wezenlijke records achterlaten als de REST-client tijdsoverschrijding vertoont voordat de mainframe commit, terwijl de HTTP-response misleidend succes kan aangeven. Ten slotte kunnen TDQ-triggers voor asynchrone verwerking meerdere keren worden geactiveerd tijdens RLS-recordvergrendelingsconflicten tussen CICS-regio's, waardoor dubbele workflow-initialisaties optreden die geautomatiseerd API-testen niet kunnen detecteren.

De Oplossing

Een systematische methodologie vereist drie validatielaag.

Eerst gebruikt Boundary Analysis Testing op copybook gebaseerde equivalentiepartitionering om payloads op exacte COMMAREA-lengtegrenzen in te voegen, en verifiëren dat EIBCALEN (Execute Interface Block Communication Area Length) overeenkomt met de verwachte waarden in het COBOL-programma.

Ten tweede omvat Transactional Integrity Verification het configureren van netwerkmiddelen om opzettelijk time-outs in te voeren tijdens elkaar opvolgende SYNCPOINT-operaties, gevolgd door het gebruik van CEMT (Master Terminal) commando's om de status van CICS-regio's te inspecteren en z/OS System Logger om UR (Unit of Recovery) uitkomsten te auditen.

Ten derde gebruikt Concurrency Stress Testing meerdere REST-clients om RLS-conflicten na te bootsen, en verifiëren de TDQ-idempotentie via CEBR (Browse Transaction) queue-inspectie en VSAM EXAMINE-hulpmiddelen voor bestandsintegriteitsvalidatie.

Situatie uit het Leven

Een grote verzekeringsmaatschappij migreerde hun polisopvraag CICS-transactie naar een klantgerichte mobiele app via REST API. Na implementatie kwamen intermitterende gegevenscorruptieproblemen aan het licht waarbij de adressen van polishouders halverwege de straatnaam werden afgekapt, en dubbele polisgoedkeuringsbrieven werden naar waardevolle klanten verzonden, wat leidde tot risico's voor de naleving van regelgeving en reputatieschade.

Probleembeschrijving

De COBOL-copybook definieerde het adresveld als PIC X(30), maar de mobiele app verstuurde Unicode UTF-8-tekens, waaronder meerbyte-accents. Toen z/OS Connect dit mapping uitvoerde naar EBCDIC, overschreed het byte-aantal de buffer zonder uitzonderingen te genereren als gevolg van stille truncatielogica. Ondertussen, onder productiebelasting, vuurde de TDQ-trigger twee keer af toen RLS-vergrendelingen de erkenning van de eerste trigger vertraagden, wat ertoe leidde dat de correspondentie-batchjob identieke verzoeken twee keer verwerkte.

Overwogen Oplossingen

Oplossing 1: Geautomatiseerde API-testen met Stubbed Mainframe

Het team overwoog WireMock te gebruiken om CICS-antwoorden te simuleren zonder de daadwerkelijke mainframe aan te raken, wat snelle regressietests mogelijk maakte.

Voordelen: Snelle uitvoeringcycli, geen verbruik van dure mainframe MIPS, en de mogelijkheid om in CI/CD-pijplijnen te draaien zonder mainframeconnectiviteit.

Nadelen: Kan geen COMMAREA-truncatiegedrag, VSAM-vergrendelingsconflicten of de daadwerkelijke EBCDIC-codering conversiefouten detecteren, wat een vals gevoel van vertrouwen in de testdekking biedt.

Oplossing 2: Directe CICS Regio Debugging

Het bevestigen van CEDX (Execution Diagnostic Facility) om elke EXEC CICS aanroep te traceren en de COMMAREA-inhoud in real-time te inspecteren.

Voordelen: Bepaalt exacte foutopdrachten en bekijkt ruwe geheugenlay-out van COBOL-structuren.

Nadelen: Vereist gespecialiseerde mainframe-expertise die het QA-team ontbeerde, heeft aanzienlijke impact op de prestaties van de CICS-regio en kan geen realistische netwerklatentie tussen gedistribueerde REST-clients en het mainframe simuleren.

Oplossing 3: Systematische Handmatige Grensvalidatie met CEBR Inspectie

Handmatig opstellen van REST-verzoeken met payloadlengtes van 29, 30 en 31 tekens met behulp van Postman of cURL, gevolgd door het gebruik van CEBR om de TDQ-inhoud te inspecteren en CEMT INQUIRE FILE om de VSAM RLS-vergrendelingsstatussen te controleren.

Voordelen: Valideert het daadwerkelijke productiecodepad inclusief karaktercoderingsconversie, afscherming van COMMAREA-grenzen en vergrendelingsgedrag van RLS over meerdere CICS-regio's.

Nadelen: Tijdrovend handmatig proces dat toegang tot TSO-referenties voor mainframe vereist en vaardigheden voor interactie met CICS-terminal.

Gekozen Oplossing

Oplossing 3 werd geselecteerd omdat alleen directe validatie de stille COMMAREA-overloop en de duplicaat TDQ-activeringstoevoeging onder RLS-conflicten kon blootleggen. Het team creëerde een uitgebreide testmatrix die payloadlengtes varieerde (grenswaarden), lettertypen (ASCII versus EBCDIC versus UTF-8), en gelijktijdige gebruikersladingen (5, 10 en 20 gelijktijdige verzoeken).

Ze gebruikten CEDF om door de uitvoering van het COBOL-programma te stappen en de waarden van EIBCALEN te verifiëren, waarbij ze bevestigden dat de programmalogica niet controleerde of binnenkomende bufferlengtes geldig waren vóór verwerking. Voor het TDQ-probleem gebruikten ze CEMT INQUIRE TDQUEUE om het aantal triggers te monitoren tijdens gelijktijdige toegangsscenario's.

Resultaat

De testen toonden aan dat UTF-8-tekens die meer dan 30 bytes (niet tekens) overschreden, leiden tot truncatie, specifiek wanneer klanten adressen invoerden met meerdere geaccentueerde tekens. Het COBOL-programma werd aangepast om EIBCALEN te controleren tegen verwachte COMMAREA-lengtes en om oversized payloads met specifieke HTTP 400 foutcodes te weigeren.

Voor het TDQ-probleem ontdekte de test dat wanneer RLS-vergrendelingswachttijd meer dan 2 seconden overschreed, de retry-logica van de REST-gateway dubbele TDQ-items creëerde. De architectuur werd gewijzigd om idempotente verwerking te implementeren met behulp van unieke correlatie-ID's die via de DFHCOMMAREA werden doorgegeven, waarbij ervoor werd gezorgd dat dubbele triggers door de batchverwerker werden gedetecteerd en genegeerd. Monitoring na implementatie toonde geen truncatiefouten aan en elimineerde dubbele correspondentie.

Wat Kandidaten Vaak Missen


Hoe verifieer je het rollback-gedrag van de CICS-transactie wanneer de REST-client de verbinding verbreekt na het verzenden van de aanvraag maar voordat de respons is ontvangen?

De meeste kandidaten stellen voor om simpelweg de database-status na de ontkoppeling te controleren. De juiste benadering omvat het gebruik van CEMT INQUIRE TASK om te verifiëren dat de transactie is verwijderd uit de CICS-regio, en vervolgens de z/OS System Logger LOGSTREAM te onderzoeken om te bevestigen dat de UR (Unit of Recovery) is teruggedraaid. Bovendien moet men de consistentie van VSAM RBA (Relative Byte Address) verifiëren met behulp van IDCAMS VERIFY om ervoor te zorgen dat er geen wezenlijke records zijn. Het subtiele punt dat kandidaten missen, is dat CICS lokaal kan hebben gecommitteerd, maar de REST-gateway mogelijk de bevestiging niet heeft verzonden, waardoor inspectie van de z/OS Connect-foutenlogboeken voor HCON (HTTP Connection) time-outs versus CICS abendcodes zoals AEXZ (time-out) nodig is.


Wanneer je TDQ-verwerking test, hoe onderscheid je dan intra-partitie TDQ-triggers die binnen dezelfde CICS-regio worden verwerkt versus extra-partitie TDQ-triggers die in z/OS datasets zijn geschreven en door batchjobs worden verwerkt?

Kandidaten missen vaak dat het TDQ-gedrag fundamenteel verandert op basis van DESTID-definities in de DCT (Destination Control Table). Voor intra-partitie TDQ's (geheugen-gebaseerd), gebruik CEBR om de diepten van de queue te inspecteren en CEMT SET TDQUEUE om de verwerking handmatig te activeren, waarbij de onmiddellijke initiatie van de CICS-transactie wordt geverifieerd. Voor extra-partitie TDQ's moet je de fysieke z/OS-dataset monitoren met behulp van ISPF 3.4 of SDSF om triggerrecords te zien verschijnen, en vervolgens de initiator JOB-klasse-uitvoering verifiëren. Het cruciale onderscheid is dat intra-partitie TDQ's de integriteit van de CICS-transactie behouden via SYNCPOINT, terwijl extra-partitie TDQ's aparte VSAM RLS-vergrendelingsstrategieën vereisen om racecondities voor recordverwijdering tussen CICS en batchjobs die dezelfde DESTID benaderen, te voorkomen.


Hoe valideer je de mapping van JSON naar de COBOL-copybook wanneer de copybook OCCURS DEPENDING ON (ODO) clausules bevat met variabele lengte arrays?

Veel testers controleren alleen vaste structuren en missen de complexiteit van ODO. Voor ODO-clausules moet je verifiëren dat z/OS Connect correct het afhankelijkheids teller veld invult vóór de array gegevens in de COMMAREA. Testgevallen moeten omvatten: (1) Geen voorvallen (lege array), (2) Enkele voorkomst, (3) Maximale gedefinieerde voorvallen, en (4) Overschrijding van maximale voorvallen om de afhandelingsfouten te valideren. Gebruik CEBR of CEDF om de lay-out van de COMMAREA in hexadecimale vorm te inspecteren, waarbij je verifieert dat binaire COMP-velden de juiste Big-Endian byte-order behouden na de JSON-numerieke conversie. De complexiteit ontstaat omdat JSON-arrays geen expliciete lengte-indicator hebben, wat vereist dat de mapper ODO-waarden berekent op basis van het aantal elementen, wat fout kan tellen als er null waarden aanwezig zijn in de JSON-payload, wat leidt tot COBOL-tabeloverloop of truncatie.