Testen in productie; feit of fictie?

Testen in productie wordt steeds meer als het nieuwe normaal gezien. In deze 2-luik gaan de auteurs dieper op de toepassing van testen in productie in. O.a. wordt ingegaan op de redenen om testen in productie toe te passen, potentiële toepassingsgebieden, risico’s, impact op de QA aanpak en de voor- en nadelen.

Deel 1

In deel 1 gaan we in op de redenen voor testen in productie, de definitie van testen in productie en mogelijke toepassingsgebieden.

Aanleiding

Sterker nog, de grenzen tussen ontwikkeling en productie vervagen steeds meer. Een tendens die al Tot een aantal jaren geleden was het “not done” om software van welke aard dan ook in productie te testen. Alle kwaliteitsmaatregelen moesten voor livegang zijn uitgevoerd en eventuele bugs opgelost zijn voordat we live mochten gaan.

Wie goed om zich heen kijkt ontdekt dat het testen niet meer stopt bij het in productie nemen van een nieuw of gewijzigd systeem. geruime tijd gaande is en zich steeds verder ontwikkelt. Mede veroorzaakt door de opkomst van het devops werken. Daarbij werken we continu gezamenlijk aan het product als ontwikkelaars en beheerders.

Er zijn goeroes die zelfs beweren dat testen tijdens de ontwikkeling niet meer nodig is en beperken zich tot het testen in productie. Hiermee lijkt het traditionele testen zijn beste tijd te hebben gehad. Uiteraard zijn er aan de andere kant goeroes die sterk vasthouden aan de klassieke insteek. Van beide standpunten is natuurlijk iets te vinden en beide invalshoeken bevatten sterke punten. Kortom, de waarheid zal in het midden liggen.

De mening van de auteurs zit hier tussen in. Het is niet het een of het ander. Er zijn sterke situaties aan te wijzen waarbij testen in productie de enige mogelijkheid is om de kwaliteit van het product te valideren. Aan de andere kant wil je het risico niet lopen om de eerste testen in productie uit te voeren. Het afbreukrisico kan gewoon te groot zijn.

Vandaar dat we onze inzichten verzameld hebben, verrijkt met de ervaringen vanuit diverse projecten, in dit artikel. Naar onze mening zeker een positieve ontwikkeling waarmee tot nu toe niet af te dekken risico’s worden weggenomen.

Om verder in kunnen gaan op het fenomeen testen in productie en hiervan een definitie te kunnen geven is het belangrijk om te achterhalen waarom testen in productie plaatsvindt.

Redenen om in productie te testen

Zoals in de aanleiding al aangegeven zijn er goede argumenten en omstandigheden aan te voeren om in productie te testen. Een aantal redenen kunnen zijn:

  • Time to market. Met name bedrijven, zoals webshops en banken, hebben te maken met een enorme concurrentie. Andere bedrijven vóór blijven is dan een absolute noodzaak om te kunnen overleven.
  • Complexiteit. De systemen worden steeds complexer en diverser. In veel gevallen is het vrijwel onmogelijk om een productielike testomgeving in te richten. Denk bijvoorbeeld aan webapplicaties die op verschillende devices (smartphones/tablets) en met verschillende browsers moeten kunnen werken. Indien de risico’s te beheersen zijn, kunnen dergelijke toepassingen in productie getest worden.
  • Kosten. Het organiseren en inrichten van een testomgeving kan relatief hoge kosten met zich meebrengen. Testen in productie is dan een goed alternatief, mits de risico’s te overzien en te beheersen zijn.
  • Geesten rijp maken voor een nieuw product. Middels een push strategie (A/B situaties; twee varianten van een website worden getest)) wordt gekeken welke variant het beste aanslaat bij het publiek.
  • Klantgedrag (koopgedrag) vaststellen. Om klantgedrag vast te kunnen stellen kan er gewerkt worden met proefopstellingen waarin potentiële klanten kennis kunnen maken met een alternatief/innovatief product. De leveranciers krijgen dan snelle feedback op het product.
  • Niet alles is te testen c.q. vooraf te bedenken. Testers zijn creatieve mensen, die in staat zijn om vele situaties te bedenken. Echter, ook testers is niets menselijks vreemd. Door de combinatie van alle componenten en zeker als er een historie van applicaties is mee te nemen, is op voorhand niet alles te bedenken. Testen in productie kan dan een uitkomst zijn.
  • Niet altijd is de juiste situatie te creëren in een testomgeving. Afhankelijkheden van combinaties van data met daarbij bijvoorbeeld correcties naar het verleden of toekomstige mutaties in combinatie met import van externe bestanden, maakt het lastig om een goede uitgangssituatie te creëren.
  • Situaties waarbij het risicoprofiel niet al te groot is kunnen overwogen worden om in productie te valideren. Er zijn situaties te onderkennen, zoals in de ruimtevaart of de Formule1, waarbij het niet realistisch is om eerst testen uit te voeren. Op basis van intensieve monitoring worden instellingen online aangepast.

Uitgaande van de bovengenoemde beweegredenen zou je testen in productie als volgt kunnen definiëren.

Definitie

Testen in productie is een aanvullende test op de bestaande testsoorten van specifieke situaties in een productieomgeving, door het ontbreken van randvoorwaarden in het ontwikkelproces of het niet kunnen creëren van de juiste uitgangssituatie. Op basis van een goede risico afweging, gelimiteerd tot bepaalde branches c.q. toepassingen.

De definitie van testen in productie is door de auteurs van dit artikel zelf opgesteld. Een passende definitie was niet voorhanden (voor zover bekend). In de definitie komen drie belangrijke aspecten terug, te weten: niet alle randvoorwaarden zijn te creëren in een ontwikkelomgeving om de testen uit te voeren. Er moet een goed inzicht zijn om de risico’s te beheersen en als laatste moet er goed nagedacht worden voor welke domeinen je testen in productie wil toepassen.

Vanuit onze ervaring zien we de volgende toepassingsgebieden voor het testen in productie.

Toepassingsgebieden

Ondanks het feit dat testen in productie steeds meer aan populariteit en aandeel wint in de testactiviteiten, kun je testen in productie niet zomaar overal inzetten. Er zijn situaties denkbaar waar het risico gewoon te groot is.

Voordat we op de situaties zelf ingaan een paar aandachtspunten vooraf:

  • Voer altijd een risico analyse uit met alle relevante stakeholders om de effecten met elkaar vooraf te bepalen. Zo voorkom je ongewenste neven- of tsunami effecten, die wellicht niet meer te beheersen zijn. Belangrijk hierbij is om geen enkel signaal te negeren.
  • Zorg altijd voor een plan B. Dat kan zijn een roll back naar de vorige situatie of het behoud van de huidige omgeving naast de nieuwe omgeving.
  • Zorg altijd voor een fast feedback loop zodat je eventuele issues snel kunt analyseren en oplossen. Mogelijke downtime wordt dan geminimaliseerd. Eventuele (toe) leveranciers dienen stand-by te staan.
  • Bepaal het moment dat je testen in productie gaat toepassen. Uiteraard kun je in het kader van een shift to the left invalshoek zeggen: ‘we testen alleen maar in productie’, maar dat is een minder realistisch punt. Het product zal enige mate van volwassenheid c.q. kwaliteit moeten bevatten alvorens je verantwoord testen breder kunt uitzetten.

In welke situaties is testen in productie goed toe te passen.

  • In de autosport, denk aan de Formule1, wordt uiteraard in de fabriek uitgebreid getest. Gedurende de race wordt continu de performance van auto en coureur gemonitord. Daar waar nodig worden settings en/of instructies aangepast.
  • Een ander interessant fenomeen dat zich voordoet zijn zogenaamde ‘test’ activiteiten in productie waarbij het klantgedrag wordt gevolgd om bijvoorbeeld productkeuzes te maken zoals met A/B-testing. Hierbij krijgen twee even grote klantgroepen elk hetzelfde scherm met een gering verschil te zien op basis waarvan kan worden vastgesteld waar de voorkeur van de klant naar uitgaat.
  • Het leveren van een relatief “Af” product in de vorm van een betatest om zoveel mogelijk feedback op te halen vanuit diverse gebruikersgroepen en invalshoeken. Bekende voorbeelden zijn nieuwe versies van besturingssystemen als Android of IOS. Een ander voorbeeld is het beschikbaar stellen van de Covid-19 app in de regio Twente om feedback uit een representatieve bevolkingsgroep op te halen.
  • In de automotive wereld kun je testen in productie gebruiken voor het inrichten en/of optimaliseren van verkeersstromen, testen van zelfrijdende voertuigen of bijvoorbeeld treinen.
  • Het testen van werkplek configuratie in combinatie met regressietesten voor applicaties in een duale uitvoering. Hierbij behoudt je de oude situatie als back up mechanisme.
  • Een ander toepassingsgebied staat een beetje los van een specifieke functionele situatie maar is gerelateerd aan de beschikbaarheid van de juiste testdata. Er zijn situaties te bedenken dat het opbouwen van de testdata zoveel inspanning en geld kost dat het efficiënter is om de testen met productiedata in productie uit te voeren.

In welke situaties is het niet verstandig om testen in productie toe te passen.

  • Mission Critical Systems. Om dergelijke systemen alleen in productie te testen kan tot desastreuze situaties leiden. Voordat een productietest voor dergelijke situaties kan worden toegepast is het verstandig de traditionele testsoorten succesvol uit te voeren. Of het toepassen van simulatoren om op voorhand zoveel mogelijk risico’s uit te sluiten.
  • Medische toepassingen. Daar wordt vanuit de FDA (Food and Drug Administration) al zware reguleringen op uitgevoerd voordat je toestemming krijgt om bijvoorbeeld veldtesten uit te voeren. Situaties die onomkeerbaar zijn waardoor onbeheersbare situaties gaan optreden. Je kunt hier bijvoorbeeld denken aan de stormvloedkering.
  • Wellicht niet direct kwantitatief te maken maar denk ook bijvoorbeeld aan imagoschade. Als de situatie zich voordoet dat testen in productie wordt toegepast en het levert zoveel negatieve reclame op waardoor bijvoorbeeld een bedrijf failliet gaat, is het beter een meer traditionele aanpak te kiezen.
  • Onvoldoende inzicht in de effecten in de keten. Op het moment dat je mogelijk gedrag niet kunt voorspellen in de keten of een reeks aan ketens wees dan uitermate voorzichtig in het toepassen van testen in productie.

Deel 2

In dit tweede gedeelte van het artikel “Testen in productie” gaan we nader in op de impact van het toepassen van testen in productie op de QA aanpak, potentiële risico’s, beschrijven we de voor- en nadelen en geven we een praktijkvoorbeeld. We sluiten af met een aantal referenties waar meer informatie over het onderwerp is te vinden.

Risico’s

De vraag is: ‘Wat de risico’s zijn die kleven aan het testen in productie?’ Hier ligt ook een link naar de situaties waarbij je testen in productie niet moet toepassen.

Risico’s die wij onder andere zien zijn:

  1. Omgang met de nieuwe AVG privacy regels. Vanuit test heb je normaal gesproken geen toegang tot productiedata. Wat is het risico als niet direct betrokkenen toegang krijgen tot deze data. Je zult hier duidelijke afspraken voor moeten maken en maatregelen voor moeten treffen.
  2. Onvolwassenheid in de test/kwaliteit competentie. Op het moment dat het instrument testen in productie toegepast gaat worden moeten de kwaliteiten in huis zijn om heel goed de impact en gevolgen te kunnen analyseren en dit te kunnen vertalen naar mitigerende maatregelen. Dit stelt hoge eisen aan de professionaliteit van de testers.
  3. Een ander risico is dat niet alles van te voren is te bedenken. Zeker als je migreert van bijvoorbeeld een oude infrastructuur naar een ‘state of the art’ omgeving waarbij moeilijk inzichtelijk is te maken hoe de IST situatie eruit ziet. Je zult goed moeten nadenken welke maatregelen je kunt treffen om het risico zo klein mogelijk te maken.
  4. Geen grondige risicoanalyse uitgevoerd aan zowel opdrachtgevers, als opdrachtnemerskant. Het mogelijke effect kan zijn dat er onomkeerbare situaties gaan ontstaan of vanuit een escalatiemodus extra mitigerende maatregelen op het technische, operationele en communicatieve vlak bedacht moeten worden.
  5. Aantal niet geïdentificeerde stakeholders, waardoor de uitkomsten niet goed zijn te voorspellen, het effect in de keten onduidelijk is, waardoor er moeilijk valt te anticiperen.

Inrichting van de QA aanpak

Wat is de impact op de testaanpak als je inderdaad ‘testen in productie’ wil gaan toepassen. Heb je een totaal andere QA aanpak nodig of ga je hier iets extra’s toevoegen. Wij denken aan het laatste. Testen in productie vervangt absoluut niet de huidige testmethoden. Integendeel zelfs. Het moet eerder gezien worden als complementair op de huidige methoden; een waardevolle aanvulling.

Een aantal accenten moeten sterker worden neergezet met het testen in productie. Deels zijn deze al eerder benoemd.

Los van de ontwikkelmethodiek moet je een zorgvuldige risico analyse uitvoeren met alle stakeholders. Bekijk het van alle kanten en bereken het effect in de keten. Vertaal dit in een testaanpak. Waarin gekeken wordt naar benodigde testomgevingen, testdata, tooling, deelnemende partijen, mitigerende maatregelen, communicatie naar partijen, inrichten rapportage, escalatiekanalen en de keuze van de vorm van testen in productie.

Voordat je testen in productie als stap gaat uitvoeren dienen voorliggende tests succesvol te zijn uitgevoerd. Dit los van de gebruikte ontwikkelmethodiek. Hier zal een duidelijk en feitelijk inzicht voor aanwezig moeten zijn. Zeker als je met toeleveranciers te maken hebt moet je met alle partijen op voorhand afspreken hoe je inzicht krijgt in de kwaliteit van het product van de betreffende leverancier en de rol van de leverancier bij het testen in productie.

Een bijzonder aandachtspunt is de omgang met compliance en verantwoording. Indien dit van toepassing is zul je ook hier op voorhand afspraken over moeten maken met betrokken partijen.

Zoals al aangegeven zijn er diverse vormen van testen in productie te onderscheiden zoals weergegeven in onderstaande tabel.

Feedback in productie Testen in productie Gefaseerde uitrol
Monitoring A/B testing Canary release
Logging Beta testing Gefaseerde uitrol
Klant reportback Testmonitoring Dogfooding
Innovatiecentrale Schaduw draaien

In de bijgevoegde literatuurlijst kun je meer lezen over de aard en opzet van dergelijke testvormen. Naast de definitie van een toegesneden testaanpak is het voeren van een regierol bij het testen in productie van belang op meerdere aandachtsgebieden zoals het uitvoeren van de risico/impact analyse, inrichten van de communicatie en escalatiekanalen en het aansturen van alle betrokken partijen en stakeholders.

De ervaring leert dat het toepassen van testen in productie een sterke governance structuur vergt ingevuld door kwaliteitsregie. Welke rol is er weggelegd voor kwaliteitsregie?

Eerder hebben we al aangegeven dat het inzicht op de effecten in de keten van belang is. De kwaliteitsregisseur kan onder andere daarbij ondersteunen om deze effecten inzichtelijk te maken voor de gehele keten. Zowel aan de opdrachtgever als aan de opdrachtnemers kant. Daarbij continu het kwaliteitsaspect en risico denken voor te spiegelen bij alle betrokken partijen. Denk daarbij aan het uitvoeren van risicoanalyses en het (mede) opstellen van mitigerende maatregelen op het technische, operationele en communicatie vlak.

Praktijkvoorbeeld: De Innovatiecentrale

De Innovatiecentrale is een experimenteerruimte waar nationale, regionale en lokale wegbeheerders intelligente mobiliteitsoplossingen testen. Op die manier wordt de impact op het verkeer en verkeersmanagement direct zichtbaar. Dat gebeurt in een real life omgeving: op een echte weg, op een echt netwerk, in het live verkeer.

Exponentiële groei Smart Mobility

De Innovatiecentrale speelt daarmee in op de exponentiele groei van intelligente transport systemen (ITS) en Smart Mobility: die vraagt om andere implementatie van innovaties. Niet bepaald door R&D agenda’s, maar direct gekoppeld aan én geïntegreerd in de dagelijkse praktijk. Testen en experimenteren is essentieel om de time-to-market van nieuwe toepassingen te verkorten, om daarmee te zorgen voor meer veiligheid, betere doorstroming en minder uitstoot.

Innovatielab en Innovatiedesks

De Innovatiecentrale bestaat uit het Innovatielab en de Innovatiedesks. Het Innovatielab is de kraamkamer van Smart Mobility. Hier worden experimenten uitgedacht en voorbereid. Ook is hier ruimte om te netwerken en te brainstormen, voor serious gaming en het geven van demo’s. Het lab heeft als belangrijkste doel ontmoeting, synergie en kennisdeling tussen marktpartijen, overheden en kennisinstellingen te stimuleren. Op de Innovatiedesks kunnen partijen hun intelligente mobiliteitsoplossingen beproeven en verder ontwikkelen. Daarbij wordt onder andere gebruik gemaakt van de faciliteiten van de verkeerscentrale van Zuid-Nederland van Rijkswaterstaat – niet alleen technisch zoals benodigde datakoppelingen of de aansluiting van het volledige Nederlandse wegennet, maar ook de expertise van wegverkeersleiders en verkeerskundigen.

Case: toepassing van de innovatiecentrale: Het gouden regelen

Op een kruising hoeft er, door intelligente Verkeer Regel Installaties (iVRI’s), minder vaak te worden gestopt voor een verkeerslicht, zijn er minder wachttijden en gaat er minder (reis) tijd verloren. In noodsituaties kunnen hulpdiensten met een druk op de knop ervoor zorgen dat het kruispunt voor een vrije doorgang zorgt.

Achter een tekentafel en een computer kan je dit prima bedenken en berekenen, maar de praktijk is vaak weerbarstiger: verkeer is mensenwerk en daarmee onvoorspelbaar. Om dit risico af te dekken wordt een kruispunt als testlocatie genomen, waarbij het toezicht op de kruising maximaal is. Alle relevante stakeholders, zoal wegverkeersleiders, hulpdiensten, gemeente, provincie, maar ook de technici zijn betrokken en nemen indien nodig een actieve rol. Zij maken samen een risico analyse en bepalen samen de benodigde mitigerende maatregelen.

Voordelen & nadelen testen in productie

Het testen in productie heeft een aantal voordelen en mogelijke nadelen. Deze hebben we in onderstaande tabel verzameld.

Voordelen Nadelen
Extra garantie voor massaal gebruik Onvoldoende inzicht in de impact op de keten
Inzicht op mogelijke impact van gemaakte keuzen Het risico op het optreden van onomkeerbare situaties
Gecontroleerde opbouw Het kunnen optreden van imagoschade mocht het resultaat anders zijn als verwacht
Snelle feedback loop

Conclusies en aanbevelingen

In dit artikel hebben we uitgebreid stil gestaan bij het testen in productie. Wat het is, de randvoorwaarden, mogelijke toepassingsgebieden, eventuele risico’s, die het testen in productie met zich mee kunnen brengen en de impact op de QA aanpak.

De conclusie is dat testen in productie een waardevolle bijdrage kan leveren om producten live te brengen. Echter, bezint eer ge begint. Denk op voorhand goed na over de mogelijke risico’s, hoe ziet de keten eruit en wie spelen allemaal een rol. Hoe daarmee om te gaan en wat er allemaal geregeld moet worden om testen in productie succesvol te maken.

Tot slot: Testen in productie vraagt een goede regie en duidelijke governance structuur.

Wil je meer weten over dit onderwerp dan is onder andere de volgende literatuur beschikbaar:

  • https://circleci.com/resources/testing-in-production/
  • https://www.tricentis.com/enterprise-continuous-testing-book/
  • https://leanpub.com/testingindevops
  • https://leanpub.com/agiletesting-condensed
  • https://leanpub.com/testingindevops
  • https://medium.com/@copyconstruct/testing-in-production-the-safe-way-18ca102d0ef1
  • https://opensource.com/article/19/5/dont-test-production
  • https://www.infoq.com/presentations/testing-production-2018/

Emailadressen auteurs:

  • Jos.van.rooyen@identify.nl
  • Jurgen.van.amerongen@bartosz.nl
  • Martijn.van.der.poel@identify.nl