+31 35 543 1000 info@kza.nl
Naar het voorbeeld van de ING.

 

DevOps en Continuous Delivery zijn in IT-land populaire begrippen. Het is een manier van werken die goed bij agility past en continu inzicht geeft in de applicaties die een organisatie oplevert. Om Continuous Delivery te laten werken zal er veel geautomatiseerd moeten worden; deployments, het reviewen van code en testen. Over dat laatste punt, het automatiseren van testen binnen een organisatie, gaan wij het vandaag hebben.

Door teams te laten transformeren naar DevOps teams krijgen de teams extra taken, namelijk het ontwikkelen en het beheren van applicaties. Om meer taken te kunnen doen met dezelfde hoeveelheid mankracht, zullen bepaalde zaken sneller moeten gaan. Testen is een aspect dat gemakkelijk versneld kan worden. Testen die met enige regelmaat draaien, kunnen geautomatiseerd worden.

Ook de ING heeft haar testproces aangescherpt. Zij heeft een manier gevonden in een complexe omgeving met complexe testdata, de belangrijkste stappen in de keten op elkaar aan te sluiten door middel van automatische regressietesten. Zo slaan zij twee vliegen in één klap, er worden zowel automatische regressietesten gedaan als een ketentest. Dat klinkt organisatorisch erg ingewikkeld, maar eigenlijk doorlopen deze testen de meest uitgebreide flow die een gebruiker kan doorlopen. De ING pakt dit als volgt aan:

  • Ketenoverleg: Alle teams die in de ketentest zitten, sluiten aan in het overleg. Er wordt besproken welke testen er gedraaid zijn en of er testen gefaald zijn.
  • Verantwoordelijkheid bij teams: Elk team doet een geautomatiseerde regressietest op zijn eigen applicatie(s).
  • Gedeelde testdata: De testdata die daarvoor gebruikt wordt, wordt opgehaald uit een gezamenlijke database waar een team testdata inzet en alle andere teams data muteert.

Een voorbeeld van de ING:

Het Mijn ING team heeft voor hun testen nieuwe klanten nodig waarin sommige klanten al een betaalpas hebben en andere klanten nog niet.

  • Team ‘Nieuwe klant’ test het aanmaken van nieuwe klanten.
  • Team ‘Nieuwe klant’ runt hun geautomatiseerde test waarin ze klanten aanmaken.
  • De gecreëerde klanten worden opgeslagen in een gezamenlijke database.
  • Team ‘Betaalpas’ test het aanmaken van een nieuwe betaalpas voor een nieuwe klant.
  • Team ‘Betaalpas’ heeft hiervoor nieuwe klanten nodig. Deze haalt het team uit de gezamenlijke database.
  • Team ‘Betaalpas’ voert zijn geautomatiseerde test uit op deze klanten, waardoor deze klanten nu een betaalpas hebben. Deze klanten staan nog steeds in de gezamenlijke database.
  • Team ‘Mijn ING’ wilt hen geautomatiseerde test draaien waarin ze een inlogaccount maken voor nieuwe klanten met en nieuwe klanten zonder pas. Deze verschillende klanten kan het team uit de gezamenlijke database halen.
  • Na het uitvoeren van de automatische regressietest worden de testpersonen weer vrijgegeven in de database. Ditmaal met een nieuwe status, namelijk klanten met een Mijn ING account. Een ander team die testpersonen nodig heeft met een Mijn ING account, pakt deze klanten dan weer op.
Key Relatienummer Test_Status Test_Log Status
0123 123456789 Nieuwe_klant 0
0124 234567890 Betaalpas_toevoegen Nieuwe_klant 1
0125 345678901 MING_account Betaalpas_toevoegen; Nieuwe_klant 255
Dit is de status van het account, in welk deel van de keten deze zich bevindt. Hier wordt weergegeven door welke delen van de keten het account heen gegaan is. En daarmee dus welke variabelen het account heeft. Is het account vrij om te gebruiken en schoon.

0 = het account wordt momenteel niet door een team gebruikt en is dus vrij om te gebruiken.
1 = het account wordt momenteel gebruikt door een ander team, die kan je nu dus niet gebruiken.
255 = de test is gefaald terwijl dit account gebruikt is. Dit account wordt niet verder in de keten gebruikt.

Voor het vinden van een klant die aan de juiste criteria voldoet voor de geautomatiseerde regressietest, wordt een api call gebruikt. Voor het updaten van de klant die net gebruikt is in de testcase wordt een SQL query gebruikt.

Deze manier van werken heeft de volgende voordelen:

  1. Testdata wordt sneller gecreëerd. Door de testaccounts door de keten heen te laten gebruiken, wordt de testdata gerecycled en kost het minder tijd om testdata te creëren. In plaats van dat elk team klanten creëert en los de variabelen koppelt, worden de klanten slechts in één team gecreëerd en koppelen de bijbehorende teams de variabelen aan producten en eigenschappen die in hun team ontwikkelt worden.
  2. Kwaliteit van de applicaties verbeterd. Elk team binnen de keten wordt gestimuleerd automatische regressietests te doen, wat het testen nauwkeuriger maakt en de kwaliteit van de applicatie beter.
  3. Elk team kan zijn eigen tools gebruiken voor testautomatisering zonder dat dit andere teams in de weg zit.
  4. Eilandjescultuur verdwijnt. Ondanks dat elk team zelf verantwoordelijk is voor hun eigen applicatie(s),
  5. Transparantie over de keten. Doordat alle teams hun regressietest op elkaar aansluiten door testdata te delen, ervaren zij wel meteen hoe hun applicatie in het landschap functioneert. Wat ervoor zorgt dat de kwaliteit van het gehele product en daarmee de klantbeleving verbeterd.

De volgende haken en ogen zitten aan deze manier van werken:

  1. Voor testgevallen met bestaande klanten i.p.v. nieuwe klanten moet een aparte database gecreëerd worden.
  2. De implementatie van deze methode vereist kennis en kost tijd. Er is kennis nodig om een dergelijke schaduwdatabase op te stellen met een bijbehorend framework om de testdata op te halen en te updaten, plus er is kennis nodig binnen de teams over automatisch testen. Alle teams in de keten moeten aansluiten inclusief geautomatiseerde regressietesten om de ketentest volledig te maken.

Concluderend, in een complexe omgeving met complexe testdata is het interessant om het grote geheel te bekijken, de keten. Alle teams maken een deel uit van een groter geheel, de organisatie. Door de relatie tussen de teams te onderhouden, wordt er meer samengewerkt, is er meer transparantie en kan elkanders werk hergebruikt worden. Om deze synergie te bereiken moeten er geïnvesteerd worden, maar levert het grote meerwaarde op voor zowel de organisatie als de klant.

Door: Lilian Jacobs