De situaties waarin klanten tevreden waren, hadden altijd gelijksoortige kenmerken. De software die werd opgeleverd voldeed aan de verwachting of oversteeg die verwachting zelfs. Er werd kortcyclisch ontwikkeld en daarmee werd ook snel businesswaarde geleverd. En tijdens de realisatiefase werden gewijzigde inzichten zoveel mogelijk meegenomen.

Auteur: Edwin van Loon

Edwin van Loon is testmanager bij APG. Hij legt de verbinding tussen conceptueel denken en pragmatisch handelen. Zijn motto is 'deliver higher quality within less time and effort'.

Testen als belangrijke enabler voor DevOps

Dit is natuurlijk geen rocket science. Deze pijlers voor een maximale klanttevredenheid zijn ook de basis voor DevOps en Agile werken. De fundamenten van DevOps zijn continuous deployment en continuous improvement. Continu kunnen leveren, zodat je zo snel mogelijk meerwaarde kunt leveren. En continu verbeteren, waardoor het proces ook steeds beter, sneller en goedkoper wordt. En zo kun je de klant ook steeds weer aangenaam verrassen.

Bij APG zijn we alweer enkele jaren bezig met de implementatie van het Agile en DevOps gedachtegoed. We willen dus continu kunnen leveren, waardoor de periode tussen de laatste wijziging in de software en de in productiename van de software zo kort mogelijk moet zijn. En laat het merendeel van de activiteiten op dat kritieke pad nu juist testactiviteiten zijn. Dus moeten die zo soepel mogelijk verlopen en zo snel mogelijk worden uitgevoerd. Testen wordt hiermee een belangrijke enabler voor DevOps.

Vroeg accepteren en automatisch testen

Binnen APG zijn we de activiteiten op dit pad daarom tot een minimum gaan beperken. Voorheen werd er op een waterval-manier ontwikkeld, waarbij een aparte acceptatie-test plaatsvond nadat alle software was gerealiseerd. Maar met de introductie van Agile werken, hebben we er voor gekozen om de acceptatie van afzonderlijke wijzigingen zo vroeg mogelijk te laten plaatsvinden. Die tests zijn dus al gebeurd als we in de laatste fase van het proces aankomen en daarom hoeft dan alleen nog een finale acceptatietest uitgevoerd te worden. Dit is wel nog steeds nodig, omdat we in een scaled agile omgeving acteren, waarin meerdere realisatieteams werken aan één oplossing.

Verder zijn alle testen die we ontwikkelen automatisch uitvoerbaar, waarvoor we het concept TADT (Test Automation Driven Testing) hebben geïntroduceerd. Hierbij gaat het niet alleen om de Unit testen, maar ook om de functionele testen, acceptatietesten en ketentesten. Ook dat automatisch testen geeft veel tijdwinst.

Het combineren van testsoorten

Om zo snel mogelijk te zijn, worden de verschillende testsoorten waar mogelijk gecombineerd. Het is bijvoorbeeld mogelijk om de proces-georiënteerde systeemtesten te combineren met de data-georiënteerde acceptatietesten. Hiervoor zijn deze testsoorten samengevoegd tot één gecombineerde test. Hierbij hebben de systeemtesters de mogelijkheid om zelf testscripts samen te stellen en aan elk testscript een lijst met test-data te koppelen, die door de acceptatie testers is opgesteld. Dit is een voorbeeld van hoe testactiviteiten slim gecombineerd kunnen worden. Waar vroeger twee handmatige regressie-testen na elkaar werden uitgevoerd (systeem regressietest en acceptatie regressietest), wordt nu één gecombineerde geautomatiseerde regressietest uitgevoerd. Deze wordt ook dagelijks uitgevoerd, zodat eventuele regressie-fouten vroegtijdig gesignaleerd worden, en niet pas op het kritieke pad.

Naast het combineren van de automatische regressietesten, worden ook de reguliere testen zoveel mogelijk gecombineerd. Zo maken we geen onderscheid meer tussen unit-testen, systeem-testen en acceptatie-testen, die allemaal moeten aantonen of de functionaliteit de kwaliteit heeft die op voorhand door de product owner is vastgesteld in de acceptatie-criteria. Het voordeel hiervan is dat er in deze nieuwe werkwijze vaak volstaan kan worden met één test per acceptatie-criterium. In het verleden waren dit meerdere testen, die sequentieel na elkaar werden uitgevoerd. En dus levert dit opnieuw veel tijdwinst op, zonder in te leveren op de kwaliteit van de testen.

Real time reporting en snelle inzichten

Een ander concept dat vanuit testen is geïmplementeerd en dat het proces soepeler maakt is 'Real Time Reporting'. Dat geeft op elk moment automatisch inzicht in kwaliteit. Per quality gate (Definition of Ready en Definition of Done) maken we hierbij een dashboard dat automatisch controleert of aan de benoemde softwaregerelateerde criteria wordt voldaan. Zo worden vroegtijdig belemmeringen voor het passeren van een quality gate gesignaleerd. Hierdoor voorkom je dat bevindingen pas op het kritieke pad (bij de quality gate zelf) gevonden en opgelost worden en verklein je de kans op vertragingen.

Proces data als basis voor verbeteren

Het laatste concept dat vanuit QA/testen is geïntroduceerd, is data driven quality management. Tijdens het voortbrengingsproces wordt heel veel data vastgelegd in verschillende tools. Denk bijvoorbeeld aan de Scrum en Kanban administratie en ook aan de bevindingen die tijdens het proces gevonden en opgelost worden. Bij APG zetten we BI tooling in om correlaties tussen data te leggen en zo inzicht te krijgen in de kwaliteit van het proces en product. Deze inzichten/dashboards vormen de basis voor het continue verbeterproces.

Zo hebben we bijvoorbeeld een dashboard rondom bevindingen gemaakt. Dit geeft inzicht in waar in het proces bevindingen worden gevonden. Hiermee krijgen de teams inzicht in welke fouten pas laat in het proces worden gevonden. Daarnaast hebben ze met deze tools de mogelijkheid om verbanden op te zoeken en op zoek te gaan naar de oplossing, zodat zulke fouten voortaan eerder worden gevonden of zelfs worden voorkomen.

Testen aan de basis

Met al deze verbeteringen leveren Testen en QA bij APG dan ook een belangrijke bijdrage aan DevOps. Het kritieke pad door testautomatisering en het vervroegen van acceptatie-testen is drastisch verkort en dus kan er versneld business-waarde worden geleverd. Door de introductie van een continu verbeterproces, wordt de klant iedere keer weer aangenaam verrast. De kwaliteit van de opgeleverde software wordt continu verhoogd en de doorlooptijden worden verkort. Al met al leggen QA en testen hiermee de basis voor optimale klanttevredenheid.