Testadvies, Testmanagement

Iedere datamigratie kan getest worden. Hoe complex ook. Wel moet je met veel zaken rekening houden, nauwkeurige voorbereidingen treffen en alles goed overdenken. Dat leerde ik gedurende de afgelopen acht jaar dat ik bij een financiële instelling complexe datamigraties leidde. Bij deze migraties waren meestal tien tot twintig teams betrokken, werd gewerkt met een toegespitste migratiestrategie en teststrategie en waren vele miljoenen euro’s gemoeid. In dit artikel deel ik graag mijn ervaringen en tips. Want krachtige hulpmiddelen zoals een integratietest van de migratie en de nieuwe doelapplicatie(s), een Dress Rehearsal en een migratie pilot zijn bij complexe datamigraties onmisbaar gebleken.

Het ontwikkeltraject voor de datamigratie software

Ook voor datamigraties geldt: begin bij het begin. Natuurlijk moet de datamigratie software het normale ontwikkeltraject doorlopen, of het nu om standaard tooling of maatwerk gaat. Daarom:

  • Laat de migratieontwerpen door alle betrokken teams toetsen.
  • Laat de teams unit testen uitvoeren op het datamigratiesysteem.
  • Zorg dat de teams systeemtesten uitvoeren met zelf ontworpen data.
  • Vraag de testresultaten op.
  • Moet je het doelsysteem aanpassen om de extra data te kunnen ontvangen? Test deze aanpassingen dan grondig via de reguliere testen met synthetische data. Probeer de wijzigingen al in productie te hebben voordat je start met de integratietest van doelsysteem en de datamigratie.

Een geïntegreerde test van de migratie en nieuwe doelapplicatie(s)

Zijn alle unit- en systeemmigratietesten door de teams afgesloten? Is de doelsoftware opgeleverd? Dan kun je beginnen met de integratietest van migratie en de nieuwe doelapplicatie(s). Let daarbij op het volgende:

1.  Voer een intaketest uit

Met een intaketest beoordeel je of de testomgeving, migratiesoftware en wijzigingen in de doelapplicatie bruikbaar zijn voor de integratietest. Dat is belangrijk omdat collega’s de software vaak onder hoge druk opleveren waardoor de kwaliteit niet voldoende is om integratietesten uit te kunnen voeren. Met een intaketest check je of hier sprake van is. Nog beter is het om al in een vroeg stadium aan te haken bij de testen en opleveringen van je collega’s zodat je – indien nodig – de start van de integratietesten kunt uitstellen.

2.  Gebruik een afgeschermde testomgeving

Nu je de data kunt gaan testen, heb je een afgeschermde testomgeving nodig. Gebruik hiervoor het liefst een bestaande (acceptatie) testomgeving, om geen extra omgevingsproblemen te veroorzaken. Moet je een nieuwe afgeschermde testomgeving creëren? Let er dan op dat deze testomgeving dezelfde soort veiligheidsmaatregelen heeft als productie. Zorg dat je testers toegang hebben of krijgen tot de afgeschermde testomgeving en kopieer de data die je wilt gaan testen er naar toe. Denk aan het volgende:

  • Maskeer namen, adressen en woonplaatsen als deze bij de migratie of doelapplicaties geen hoofdrol spelen.
  • Neem alle relevante systemen van de betrokken teams op in de testomgeving. Gebruik een risicoafweging om te bepalen welke systemen je buiten scope wilt houden.
  • Zorg dat de omgevingen groot en snel genoeg zijn. Houd rekening met de data die erbij komt door de migratie. Uren moeten wachten op een batch die eigenlijk maar kort hoeft te duren is geen pretje!
  • De Wet bescherming persoonsgegevens (Wbp) verbiedt het testen met productiegegevens niet letterlijk. De wet stelt dat je de gegevens mag gebruiken voor het doel waarvoor je ze krijgt, en voor doelen die in duidelijk direct verband daarmee staan (art. 8 en 9 Wbp). Het testen van de omgeving waarbinnen je persoonsgegevens wilt gaan gebruiken, lijkt mij genoeg verband te houden met het daadwerkelijk doel. Lees ook de blog ‘Mag je testen met persoonsgegevens van klanten?’ hierover.

"Bij het testen van datamigraties dien je met veel zaken rekening te houden, nauwkeurige voorbereidingen te treffen en alles goed te overdenken"

3.  Regel hulp van testers voor de doelapplicaties

Je kan niet alle testen zelf of met een eigen team uitvoeren omdat je daarvoor nooit alle kennis in huis hebt. Regel daarom via de backlogs hulp van scrum of DevOps teams. Organiseer een scrum of productowners om uit te leggen waarom een gezamenlijke test uitvoeren belangrijk is en wat het doel ervan is. Gebruik hierbij duidelijke user stories en maak van de gelegenheid gebruik om alle betrokken teamleden kennis met elkaar te laten maken; het werkt immers veel sneller en makkelijker als mensen elkaar een keer ontmoet hebben.

4.  Gebruik een testset; hoe kom je aan testdata vanuit productie?

Om aan te tonen dat de nieuwe systemen overweg kunnen met de gemigreerde[RF1]  data moeten de testers van de doelapplicaties testcases uitvoeren. Maar omdat de normale synthetische gevallen bij migratietesten niet beschikbaar zijn moet je vooraf de gewenste testdata inventariseren. Doe dat als volgt:

  • selecteer samen met productowners, buniness analisten of product specialisten de testdata;
  • gebruik queries vanuit productie of selecteer vanuit een bestaand datamanagement systeem;
  • zorg voor meerdere gevallen per gewenste selectie. De data kan immers veranderen voordat de integratietest wordt uitgevoerd, een product kan uit de handel worden genomen, een contract kan worden beëindigd, etc.

5.  Meerdere testcycli om de testen uit te voeren

Zorg voor meerdere testcycli. Meerdere korte testcycli hebben de voorkeur omdat een team dat in de eerste cyclus nog niet gereed is of geen tijd heeft, dan kan aanhaken in één van de volgende cycli. Let er daarvoor wel op dat je de productiedata vaker kunt kopiëren, bijvoorbeeld via een bestaande productiekopie. Twee tot vijf cycli zijn meestal voldoende, maar dit hangt ook af van de kwaliteit van de opgeleverd software, de complexiteit van de doelapplicaties en de duur van de testcycli. Iedere testcyclus bestaat uit:

  • installeren van de testomgeving,
  • uitvoeren van de datamigratie,
  • testen van de doel applicatie(s).

6.    Gesynchroniseerde testomgevingen

Als de testomgevingen van de verschillende doelapplicaties niet gesynchroniseerd zijn dan loopt een test eenvoudig in het honderd. Bijvoorbeeld wanneer de één op donderdag en de ander op vrijdag kopieert om er vervolgens achter te komen dat in de interfaces op datums gecontroleerd wordt. Of als de één gebruikmaakt van een standaard back-up van het systeem die na de batches wordt genomen, terwijl bij de ander die backup voor de batches wordt gemaakt. Daardoor loopt de batch van de tweede tester in een error. Zorg er om dit te voorkomen voor dat de doelaplicaties gesynchroniseerd zijn:

  • Neem de activiteiten voor het kopiëren van de productieomgevingen gedetailleerd op in een draaiboek.
  • Breng de verschillende partijen bij elkaar om het draaiboek door te spreken.
  • Zorg voor een droogtest van het draaiboek.
  • Voer dit draaiboek uit bij de intaketest.
Ook al heb je de data van tevoren geschoond, houd rekening met bevindingen door data vervuilingen die over het hoofd zijn gezien.

7.  Houd rekening met defects door slechte datakwaliteit

Ook al heb je de data van tevoren geschoond, houd rekening met bevindingen door data vervuilingen die over het hoofd zijn gezien. Batches zijn daarbij kwetsbaarder omdat deze meestal alle data doorlopen; in het ergste geval klapt de belangrijkste batch van de doelapplicatie eruit en kan je niet verder met de testuitvoering. Bij online transacties kan je de niet geschoonde data omzeilen door een ander testgeval te kiezen. Zaken waarmee je defects door slechte data kwaliteit zoveel mogelijk kunt voorkomen:

  • Pas de data direct aan in de testomgeving als de test niet verder kan worden uitgevoerd.
  • Zorg dat er een schoningsteam stand-by staat om de data te schonen in de productie omgeving.
  • Zorg dat het schonen van de data herhaald kan worden. Bij een nieuwe kopie van productie kan het immers weer nodig zijn.

8.  Wees voorbereid op onverwachte bevindingen

Zeker als je data migreert uit oude bronsystemen zonder goede documentatie, kan je onverwachte bevindingen tegenkomen. Denk aan euro’s die centen zijn geworden, onverwachte productypen, andere klantsoorten of onbekende factuur statussen. Dit is juist één van de redenen om met productiedata te testen! Denk aan het volgende:

  • Zorg voor een goede bevindingenadministratie, toegankelijk voor alle betrokken teams. Wij gebruikten bij de migratietesten Defect Management van HP ALM.
  • Zorg dat de business analisten aangehaakt zijn zodat zij deze soms lastige bevindingen uit kunnen zoeken.

9.  Gebruik een draaiboek dat groeit naar een migratie draaiboek

Veel migraties lopen schade op of mislukken omdat de acties niet vastlagen of niet in de juiste volgorde zijn getest. Zorg daarom dat alle uit te voeren acties van de teams in een draaiboek worden vastgelegd. In het begin zijn alleen de essentiële IT-acties voldoende, zoals: “Maak een extract van de klantdata”, “Verzend het klantenextract via XFB naar de Converter” of “Transformeer de transacties van bestanden X en Y naar bestand Z”. Zorg dat het draaiboek groeit naar een migratie draaiboek en dat dus ook alle validatie acties, handmatige acties, communicatie, besluitvormingsacties worden opgenomen. Enkele tips bij het opstellen van een draaiboek:

  • Gebruik Excel of als het complexer is Microsoft® Project. Zeker als je veel afhankelijkheden wilt vastleggen is Project erg handig.
  • Een uniek ID, een omschrijving, het uitvoerende team, de duur in minuten, de starttijd of afhankelijkheid zijn onmisbare attributen. Houd bij de doorlooptijd ook rekening met administratie en huishoudelijke zaken die worden uitgevoerd. Het zal niet de eerste keer zijn dat de collega die aan de beurt is, net een sigaretje is gaan roken.
  • Let speciaal op de mate van centralisatie / decentralisatie van het draaiboek. Een paar tips:
  1. Hanteer één draaiboek waarin je alle acties van de teams tot detail opneemt. Dat voorkomt problemen met versiebeheer en afstemming van draaiboeken. Ook is het voor iedereen duidelijk welke stappen uitgevoerd gaan worden en welke afhankelijkheden er tussen de detailstappen van de teams zijn.
  2. Zijn teams gewend om hun eigen invoeringen met hun eigen draaiboek (template) uit te voeren? Dwing hen dan niet om alle acties op te nemen in een centraal draaiboek. Gebruik als alternatief een overall draaiboek en detail draaiboeken. Zorg wel dat overkoepelende stappen uit de detail draaiboeken worden opgenomen in het overall draaiboek. En ook alle acties die samenhangen met acties van andere teams. Natuurlijk kan je teams die wel willen integreren volledig opnemen in het overall draaiboek.

10.  Denk aan het eventueel testen van het oude bronsysteem

Als bij een volledige migratie het bronsysteem helemaal “leeg” getrokken wordt, dan is een eenvoudige test van het stilzetten van dat systeem vaak genoeg om vast te stellen dat systemen rondom het bronsysteem daar geen last van hebben. Je moet een bronsysteem wel uitvoeriger meenemen in de testcycli als:

  • een deel van het bronsysteem nog wel gebruikt wordt;
  • de migratie een zogenaamde close/open techniek bevat. De data wordt dan in de bron gesloten/beëindigd en in het doel systeem geopend/gestart;
  • bij oudere mainframe systemen bestanden niet meer verstuurd worden vanuit het gemigreerde systeem. Een ander systeem verwacht zo’n bestand nog wel en trekt aan de noodrem.

De Dress Rehearsal als belangrijk toetje

In de integratietest is de focus vooral gericht op de data en de applicaties. Maar als een migratie langer dan een dagdeel duurt , moet er ook aan andere zaken gedacht worden. Bijvoorbeeld huishoudelijke zaken (het pand is niet open op het afwijkende tijdstip waarop de migratie plaatsvindt) en de besluitvorming (de Finance afdeling komt op de valreep nog met een extra eis). Met een zogenaamde Dress Rehearsal kan je al deze zaken beproeven. De Dress Rehearsal is de laatste repetitie waarbij je alles uitvoert zoals het straks bij de daadwerkelijke migratie gaat, maar dan in de testomgeving. Het organiseren van zo’n Dress Rehearsal is best pittig! Een paar aandachtspunten:

  • Voer de Dress Rehearsal uit op een zelfde tijdstip als de echte migratie. Is de echte migratie op een zondag? Doe dan ook de Dress Rehearsal op een zondag. Anders bereik je je doel niet: je komt er dan niet achter dat de lichten niet automatisch aangaan in het weekend. Of dat de achterdeur voor de rokers niet opengaat. Of dat er in het weekend huishoudelijke batches draaien.
  • Voer de Dress Rehearsal uit in een afgeschermde testomgeving.
  • Zorg dat het draaiboek in een productiestaat is.
  • Alle teamleden en betrokkenen draaien bij voorkeur tijdens de Dress Rehearsal dezelfde diensten zoals ze dat ook tijdens het migratie weekend gaan doen.
  • Dit geldt overigens ook voor een directeur die in het echte migratieweekend het besluit neemt. Dan doet die directeur dat ook in de Dress Rehearsal. Ook als dat betekent dat hij daarvoor om drie uur in de ochtend moet opstaan.
  • Zorg goed voor je collega’s! Vaak voer je een migratie op een incourant tijdstip uit. Waarbij je wel verwacht dat iedereen messcherp is. Regel het eten. Als het nodig is: ontbijt, lunch, diner en eten in de nacht. Zorg ook voor gezonde snacks. Breek door lastige procedures heen als het moet. Je wilt niet vijf afdelingen ver moeten lopen voor een hapje en een drankje. Regel daarom desnoods een koelkast en een magnetron op de werkvloer. En ook extra vuilniszakken en schoonmaakdoekjes.
  • Zorg dat je de telefoonnummers van alle betrokken teamleden beschikbaar hebt. En natuurlijk ook alle nummers van beveiliging, logistiek en andere betrokkenen. Als het bij de toegang tot de parkeergarage al fout gaat, dan is het heel fijn wanneer je het nummer van de juiste afdeling of persoon bij de hand hebt.
  • Bij een Dress Rehearsal mogen zaken misgaan. Je wilt er juist van leren. Gebruik een logboek waarin je alle bevindingen opneemt. En voer na de Dress Rehearsal een evaluatie met alle betrokkenen uit. Verwerk de geleerde lessen in het plan van aanpak voor de echte migratie.

Pilot in productie

Mochten de hiervoor genoemde maatregelen niet voldoende zijn om de zorgen van de besluitvormers weg te nemen, voer dan ook nog een migratie pilot uit. De keuze om dit te doen kan echter enorme impact hebben op de migratiesoftware en de doelsystemen. Zorg daarom dat de beslissing hierover al in het voortraject bij de test strategie wordt genomen. Een migratie pilot is een echte migratie van een deel van de totale populatie. Betreft de echte migratie 100.000 contracten van zakelijke en particuliere klanten, migreer bij de pilot dan vijf representatieve zakelijke en vijf particuliere contracten. Dit kunnen vrijwillige klanten zijn of personeel. Zijn de risico’s hiervan te groot? Dan kan je ook testklanten laten opvoeren via de normale wegen. Indien nodig geautoriseerd door de Finance of Risk afdeling. Maar denk eraan dat het opvoeren van test-objecten niet altijd zo eenvoudig is, bijvoorbeeld wanneer een burgerservicenummer een verplicht invoerveld is. Voer de migratie pilot exact hetzelfde uit als de echte migratie. Iedere afwijking geeft immers een extra risico voor de echte migratie. Na de migratie pilot voer je representatieve use cases uit met de gemigreerde data. Gebruik hiervoor ook weer een draaiboek dat afgestemd is met de stakeholders. Zorg dat de belangrijke business partijen of product owners input leveren voor de use cases. Zij zijn immers degenen die het beste gevoel hebben bij wat de klant denkt, vindt en doet met applicaties die gebruik maken van jouw gemigreerde data. Zorg dat alle teams op de hoogte zijn van deze use cases zodat zij bevindingen direct aan jou doorgeven.

Schrijf je in voor
de nieuwsbrief

Bartosz_Header_004

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

Mijn Paarsz