Skip to main content

Een van de belangrijkste misvattingen in het huidige testlandschap is dat testen in productie slechts drie vaardigheden vereist: procesexpertise, kennis van geautomatiseerde testtools en capaciteiten op het gebied van incidentbeheer. Deze zijn belangrijk, maar wat opvallend ontbreekt—niet alleen in deze lijst, maar ook in de gedachten van personeelsmanagers—is iets waarvan je zou denken dat het het meest fundamentele zou zijn:

Het vermogen om een praktische test voor productieomgevingen te ontwerpen.

Het zou komisch zijn als het niet zo verontrustend was dat bijna geen enkele organisatie expertise op het gebied van belangrijke QA-vaardigheden prioriteit geeft bij het implementeren van strategieën voor testen in productie.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
By submitting you agree to receive occasional emails and acknowledge our Privacy Policy. You can unsubscribe at anytime.

Of een test nu handmatig of via automatisering wordt uitgevoerd in een live productiesysteem, je moet eerst weten hoe je er een ontwerpt die bruikbare inzichten oplevert zonder de gebruikerservaring te verstoren, toch?

Het zou komisch zijn als het niet zo verontrustend was dat bijna geen enkele organisatie expertise op het gebied van testontwerp prioriteit geeft bij het implementeren van strategieën voor testen in productie. Of een test nu handmatig in een gecontroleerde omgeving of geautomatiseerd in een live productiesysteem wordt uitgevoerd, je moet eerst weten hoe je er een ontwerpt die bruikbare inzichten oplevert zonder de gebruikerservaring te verstoren, toch?

Er is één duidelijk probleem met het uitsluiten van expertise op het gebied van testontwerp uit je aanpak voor testen in productie:

Is het niet essentieel om te weten dat de persoon die tests in je productieomgeving implementeert, begrijpt wat een betekenisvolle test inhoudt?

Want door slecht ontworpen tests in productie te automatiseren, krijg je sneller onbetrouwbare gegevens en creëer je onnodige risico's? En "agile" zijn tijdens het incompetent testen in productie lijkt mij geen echte verbetering, behalve misschien voor de scrummaster.

Het belang en de discipline van testontwerp, vooral voor scenario's waarin in productie wordt getest, zijn al veel te lang aan heropleving toe. Beschouw dit als mijn bijdrage aan die inspanning.

Wat is essentieel voor effectief testen in productie?

De eerste stap naar het beheersen van testen in productie is het maken van enkele essentiële onderscheidingen die de meeste QA-professionals intuïtief ongetwijfeld al bekend zijn, maar die zelden systematisch worden gepresenteerd in contexten waarin in productie wordt getest.

Laten we deze fundamentele concepten verkennen die je aanpak voor testen in productie zullen transformeren.

Expliciete versus impliciete functionaliteit in productieomgevingen

Laten we beginnen met het cruciale onderscheid tussen expliciete en impliciete functionaliteit bij het testen in productie.

Het eerste is wat de meesten van ons beschouwen als "functionaliteit". Het verwijst naar functies en mogelijkheden die formeel zijn gespecificeerd door Product en waarvan de formele specificatie de implementatie ervan binnen Engineering aanstuurt. Bij het testen in productie vormen deze expliciete functies doorgaans de focus van monitoring- en observeerbaarheidstools.

Daarom lijkt het testen van expliciete functionaliteit in productie misschien eenvoudig, maar zelfs bij goed gedefinieerde functies is dat niet het geval, zoals we later zullen zien. In ieder geval maakt het specificiteitsniveau van expliciete functionaliteit het gemakkelijker om er een raamwerk van productietests omheen te bouwen (of de illusie van zo'n raamwerk).

Impliciete functionaliteit in een productieomgeving is iets heel anders.

Deze bestaat uit gedragingen en reacties op gebruikers- of omgevingsinvoer die niet formeel zijn gedefinieerd of voorzien. Het niet adequaat ontwerpen van tests voor deze impliciete functionaliteit in productie is veruit de bron van de meeste kritieke bugs die worden ontdekt nadat het product is uitgerold (de andere bron is ontoereikend testen in omgevingen met afwijkende hardware/software/apparaten).

Met andere woorden:

Het testen van impliciete functionaliteit in productie vereist aanzienlijke vindingrijkheid en verbeeldingskracht. Het is het werkelijk creatieve onderdeel van productieteststrategieën.

Het testen van impliciete functionaliteit in productieomgevingen vereist een zekere mate van duivelse slimheid om er goed in te worden, en helaas kan dat niet worden aangeleerd via standaard QA-processen.

Geen enkele agile methodologie of geautomatiseerd testframework leert je hoe je impliciete functionaliteit in productie effectief test, maar goed testontwerp kan dit wel stimuleren.

Dus hoe definieer je een testontwerpstrategie voor impliciete functionaliteit in je productieomgeving? Gelukkig kan het. Maar voordat we rechtstreeks op die vraag ingaan, verkennen we eerst nog enkele verdere relevante onderscheidingen die cruciaal zijn voor effectief testen in productie.

Positief versus negatief testen

Belangrijkste punt: Bij het testen in productie vereisen zowel positief als negatief testen speciale overwegingen die verder gaan dan traditionele QA-benaderingen.

De meeste mensen die in QA werken begrijpen het basisverschil tussen deze twee testtypen:

  • Positief testen in productie: Valideren dat functies werken zoals ontworpen in liveomgevingen
  • Negatief testen in productie: Strategisch testen hoe je systeem reageert op onverwachte invoer zonder echte gebruikers te verstoren

Waarom testen in productie anders is

Hoewel deze onderscheidingen conceptueel duidelijk zijn, brengt testen in productie unieke uitdagingen met zich mee:

  • Grotere belangen: Randgevallen hebben gevolgen voor echte klanten en bedrijfsactiviteiten
  • Complexiteit uit de echte wereld: Gebruikersgedrag volgt zelden voorspelbare patronen
  • Bedrijfscontinuïteit: Testen mag de normale bedrijfsvoering niet verstoren

Verder kijken dan de specificatie

Specificaties bieden zelden alles wat nodig is om effectief te testen in productie:

Als je te afhankelijk bent van de specificatie—of die nu afkomstig is van Product of Engineering—beperkt dat je manier van denken. Dit is vooral problematisch bij het testen in productie, waar gebruikspatronen uit de echte wereld vaak afwijken van specificaties.

Dit illustreert wat ik "de empirische drogreden" noem: wachten tot iets je expliciet vertelt wat je moet doen voordat je het kunt begrijpen.

Een succesvol testontwerp voor productieomgevingen vereist:

  1. Een juiste parametrisering van functionaliteit
  2. Logisch nadenken over wat mogelijk is
  3. Aandacht voor interacties tussen zowel gebruikers als hun omgeving

Voorbeeld uit de echte wereld: onverwacht gedrag

In het Krijt van de softwarewereld (oftewel de jaren 80) testte ik software voor documentconversie en ontdekte ik verrassende mogelijkheden:

Afbeelding weergeven

Klassiek voorbeeld: In WordPerfect kon je midden in een alinea een opdracht voor regelafstand invoegen die alleen van invloed was op de daaropvolgende regels, waardoor alinea's ontstonden met twee verschillende waarden voor de regelafstand.

Moderne equivalenten bij het testen in productie:

  • Onverwachte combinaties van gebruikersrechten in cloudapplicaties
  • Onvoorziene reeksen API-aanvragen in microservicearchitecturen
  • Racecondities in omgevingen met hoge gelijktijdigheid

Laten we nu de drie belangrijkste parameters verkennen die je aanpak voor productietests zullen aanscherpen:

1. Testen van de reikwijdte van functies

Definitie: Vaststellen hoe gebruikers functies kunnen inzetten in contexten of op manieren die tijdens het ontwerp nooit zijn bedacht.

Waarom dit belangrijk is voor het testen

Niet alle beperkingen worden tijdens de ontwikkeling voorzien. In productieomgevingen kan dit gebrek ernstige gevolgen hebben.

Verder kijken dan eenvoudige validatie

Houd bij het testen in productie rekening met deze grenzen:

Onthoud: Een functie valideren in productie betekent niet alleen bevestigen dat deze werkt zoals ontworpen, maar ook controleren dat de functie niet op onbedoelde manieren kan worden gebruikt die de stabiliteit of beveiliging van het systeem kunnen beïnvloeden.

Get regular tech leadership wisdom for delivering better software and systems.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form

2. Testen van workflowonderbrekingen in live systemen

Waarschuwing: Deze aanpak gaat ervan uit dat je al gedefinieerde workflows in productie test. Zo niet, pak dan eerst die basis aan!

Verder kijken dan het "standaardpad"

Verken bij het testen in productie deze kritieke workflowonderbrekingen:

Onderbroken workflows: Proces gestart maar nooit voltooid
Geannuleerde bewerkingen: Gebruiker annuleert het proces halverwege expliciet
Opnieuw gestarte processen: Gebruiker probeert dezelfde actie meerdere keren uit te voeren
Teruggaan: Gebruiker keert terug naar eerdere stappen met andere invoer

Implementatietips voor testen in productie

Gebruik technieken zoals functievlaggen om de blootstelling aan deze tests in productieomgevingen veilig te regelen.

Toepassingen uit de echte wereld


Tip van een expert: Deze scenario's worden zelden in specificaties vastgelegd, maar vertegenwoordigen wel echt gebruikersgedrag in productie.

3. Sequentieel karakter bij productietests

De uitdaging: In productiesystemen met meerdere gelijktijdige processen kan de volgorde van bewerkingen leiden tot onverwachte fouten die moeilijk te reproduceren zijn in testomgevingen.

Twee kritieke patronen in sequentieel gedrag

Voorafgaande bijdragende omstandigheden

Afbeelding weergeven

  • Definitie: Gebeurtenissen die moeten plaatsvinden voordat een proces faalt
  • Kenmerken: Komen mogelijk pas aan het licht na specifieke reeksen die zich onder natuurlijke omstandigheden pas na dagen voordoen
  • Voorbeeld in productie: Gebruikersrechten gewijzigd → cache verloopt → specifieke API aangeroepen

Daaropvolgende bijdragende omstandigheden

  • Definitie: Fouten die pas tijdens latere interacties aan het licht komen
  • Manifestatie: De fout blijft verborgen totdat een latere bewerking plaatsvindt
  • Voorbeeld in productie: Gegevens raken stilzwijgend beschadigd totdat een rapport wordt gegenereerd

Waarom is dit zo uitdagend?

Het bepalen van de reikwijdte van sequentiviteitstests in productie vereist:

  1. Intieme kennis van systeeminteracties
  2. Modellering van statusovergangen voor complexe processen
  3. Inzicht in zowel bedoelde als onbedoelde statuscombinaties

"Net als die dubbele regelafstandwaarden in één alinea kunnen deze onverwachte statussen grote problemen veroorzaken in productieomgevingen."

Essentiële hulpmiddelen voor sequentiviteitstests in productie

Kortom: Problemen met sequentieel gedrag vormen een van de rijkste bronnen van ernstige bugs in moderne productiesystemen. Geef dit aspect prioriteit in je teststrategie.

De kern

Functievlaggen veranderen testen in productie van een risicovolle praktijk in een gecontroleerd, datagestuurd proces. Doordat ze implementatie loskoppelen van vrijgave en directe mogelijkheden voor terugdraaien bieden, creëren ze een vangnet waarmee teams software onder reële omstandigheden kunnen valideren zonder de gebruikerservaring of systeemstabiliteit in gevaar te brengen.

Platformen voor functiebeheer bij productietests

Platformen voor functiebeheer hebben testen in productie veranderd van een risicovolle onderneming in een gecontroleerd, systematisch proces. Toch slagen veel organisaties er niet in deze hulpmiddelen effectief te benutten binnen hun strategie voor testontwerp.

De evolutie van risicobeheer in productie

Traditionele benaderingen van testen in productie gingen uit van binaire beslissingen: een functie was óf voor iedereen actief óf voor niemand. Platformen voor functiebeheer veranderen dit paradigma fundamenteel:

  • Gedetailleerde controle: Test functies met specifieke gebruikerssegmenten in plaats van implementaties die alles-of-niets zijn
  • Direct herstel: Schakel problematische functies uit zonder code-implementaties of terugdraaiacties
  • Geleidelijke blootstelling: Vergroot de blootstelling aan gebruikers geleidelijk op basis van realtime prestatiegegevens

Verder dan eenvoudige functievlaggen

Hoewel eenvoudige functievlaggen al jaren bestaan, bieden moderne platformen voor functiebeheer cruciale mogelijkheden die productietests transformeren:

Wanneer ze goed in je strategie voor testontwerp worden geïntegreerd, maken platformen voor functiebeheer het volgende mogelijk:

  1. Gerichte risicobeheersing - Beperk de blootstelling aan nieuwe functies tot specifieke gebruikerssegmenten
  2. Validatie door echte gebruikers - Test met echte gebruikers in plaats van synthetische testgegevens
  3. Direct herstel - Pak problemen aan zonder noodimplementaties of terugdraaiacties

Integratie met hulpmiddelen voor observeerbaarheid

De ware kracht van platformen voor functiebeheer komt naar voren wanneer ze worden geïntegreerd met systemen voor observeerbaarheid en monitoring:

Traditionele aanpak:

  • Problemen detecteren na volledige implementatie
  • Handmatige verificatie van testresultaten
  • Analyse achteraf na incidenten

Integratie van featurebeheer:

  • Featureactivering correleren met systeemstatistieken
  • Geautomatiseerde prestatiemonitoring per functievlag
  • Realtime inzicht in de impact van functies

Impact in de praktijk: productietests transformeren

Organisaties die platforms voor featurebeheer implementeren, rapporteren aanzienlijke voordelen:

  • Verminderde ernst van incidenten: "We kunnen functies al ruim vóór een marketinglancering in productie testen. En als een functie op de dag van de lancering problemen veroorzaakt, kunnen we deze gewoon uitschakelen met een noodschakelaar—zonder terugdraaiingen." — Chris Guidry, VP of Engineering, O'Reilly Media.
  • Versnelde releasecycli: Teams bij IBM, TrueCar en andere toonaangevende bedrijven maken gebruik van featurebeheer voor tests in productie en profiteren van wat zij omschrijven als "veilige, onceremoniële releases".
  • Uitgebreidere testdekking: Functievlaggen brengen randgevallen aan het licht die onmogelijk in gecontroleerde omgevingen kunnen worden gesimuleerd.

Praktische implementatie in testontwerp

Om platforms voor featurebeheer effectief op te nemen in je strategie voor testontwerp:

  1. Ontwerp verificatiepunten die aansluiten op overgangen van functievlaggen
  2. Maak terugvalscenario's voor elk onderdeel met een functievlag
  3. Stel prestatiedrempels vast die automatische uitschakeling van functies activeren
  4. Definieer segmentspecifieke testgevallen om gedrag in verschillende gebruikerspopulaties te valideren
  5. Documenteer afhankelijkheden tussen functievlaggen om ketenstoringen te voorkomen

Platforms voor featurebeheer vervangen doordacht testontwerp niet—ze versterken het. De kwaliteit van je productietests blijft fundamenteel afhangen van de mate waarin je je tests goed hebt ontworpen.

Veelvoorkomende valkuilen die je moet vermijden

Zelfs met robuust featurebeheer blijven er verschillende uitdagingen bestaan:

  • Vlaggenachterstand - Verlaten of vergeten functievlaggen die technische schuld veroorzaken
  • Onvoldoende monitoring - Er niet in slagen de status van functievlaggen te correleren met de systeemprestaties
  • Overmoed - Productietests voortijdig verminderen
  • Onderlinge afhankelijkheden tussen functievlaggen - Complexe relaties creëren die moeilijk op te lossen zijn

De kern

Platforms voor featurebeheer bieden krachtige mogelijkheden voor tests in productie, maar ze moeten zorgvuldig worden geïntegreerd in je algemene strategie voor testontwerp. De organisaties die de meeste waarde behalen, implementeren deze tools niet alleen—ze heroverwegen fundamenteel hoe testontwerp werkt in een omgeving met functievlaggen.

Wanneer featurebeheer correct wordt geïmplementeerd als onderdeel van een uitgebreide aanpak voor testontwerp, verandert het productietests van een noodzakelijk kwaad in een concurrentievoordeel.

Hulpmiddelen voor tests in productie: implementatie-uitdagingen

Hoewel functievlaggen en beheerplatforms de basis vormen voor tests in productie, brengt het bredere ecosysteem van hulpmiddelen zijn eigen implementatie-uitdagingen met zich mee. Het selecteren en configureren van de juiste hulpmiddelen vereist een zorgvuldige afweging van de capaciteiten van het team, de systeemarchitectuur en de behoeften van de organisatie.

Hulpmiddelen voor monitoring en observeerbaarheid

Effectieve tests in productie zijn afhankelijk van volledig inzicht in het systeemgedrag:

  • Monitoring van applicatieprestaties (APM)
    Voordelen: Biedt gedetailleerd inzicht in de prestaties van de volledige applicatiestack.
    Uitdagingen: Vereist vaak aanzienlijke instrumentatie en kan te veel gegevens genereren, waardoor kleinere teams worden overspoeld.
  • Systemen voor logbeheer
    Voordelen: Essentieel voor foutopsporing en forensische analyse tijdens productietests.
    Uitdagingen: Kunnen overweldigende hoeveelheden gegevens genereren zonder de juiste strategieën voor filtering en indexering.
  • Gedistribueerde tracering
    Voordelen: Biedt inzicht van begin tot eind in microservicearchitecturen.
    Uitdagingen: De complexiteit van de implementatie neemt dramatisch toe in heterogene omgevingen met meerdere technologiestacks.

Systemen voor waarschuwingsbeheer

Een goede configuratie van waarschuwingen is cruciaal bij het testen van nieuwe functies in productie:

  • Platformen voor waarschuwingaggregatie
    Voordelen: Meldingen van meerdere bewakingssystemen consolideren.
    Uitdagingen: Uitstekend voor incidentbeheer, maar kunnen storend zijn als ze niet zorgvuldig worden geconfigureerd om meldingsmoeheid te voorkomen.
  • Systemen voor incidentrespons
    Voordelen: Communicatie tijdens productie-incidenten stroomlijnen.
    Uitdagingen: Vereisen goed gedefinieerde draaiboeken en integratiepunten om effectief te zijn; kunnen extra overhead creëren voor eenvoudige implementaties.

Aandachtspunten voor de implementatie

Bij het implementeren van tools voor testen in productie moeten teams het volgende beoordelen:

  1. Schaalbaarheidsvereisten - Kan de tool uw verkeersvolumes en datagroei verwerken?
  2. Integratiemogelijkheden - Hoe eenvoudig kan de tool verbinding maken met uw bestaande toolketen?
  3. Resourceverbruik - Welke overhead introduceert de tool zelf?
  4. Expertise van het team - Beschikt u over de vaardigheden die nodig zijn om de waarde van de tool optimaal te benutten?
  5. Signaal-ruisverhouding - Kunt u betekenisvolle inzichten verkrijgen zonder te verdrinken in gegevens?

Veelvoorkomende valkuilen bij de implementatie

  • Wildgroei aan tools - Het opstapelen van te veel overlappende oplossingen
  • Onvolledige instrumentatie - Het missen van kritieke bewakingspunten
  • Meldingsmoeheid - Het genereren van buitensporig veel meldingen die teams uiteindelijk negeren
  • Onvoldoende context - Er niet in slagen statistieken te correleren met de impact op gebruikers
  • Datasilo's - Geïsoleerde bewakingssystemen creëren die geen informatie delen

De juiste balans vinden

De meest succesvolle implementaties van testen in productie vinden een balans tussen:

  • Uitgebreide bewaking versus beheersbare complexiteit
  • Gedetailleerde inzichten versus een overvloed aan informatie
  • Geautomatiseerde reacties versus menselijke beslismomenten

Begin bij het implementeren van testtools in productieomgevingen klein met gerichte doelstellingen en breid de dekking vervolgens geleidelijk uit naarmate uw team expertise ontwikkelt in zowel de tools als het interpreteren van de daaruit voortvloeiende gegevens.

Belasting, complexiteit, vertraging

Houd bij het ontwerpen van uw tests rekening met de macrofactoren belasting, complexiteit en vertraging. Deze kunnen van invloed zijn op de uitvoering of voltooiing van een verzoek, proces, of gebeurtenis. 

De relevantie van systeembelasting zou duidelijk moeten zijn. Verzoeken of transacties die worden verwerkt tijdens perioden van hoge belastingstress van het systeem kunnen mislukken (in elke fase van het transactieproces).

Dit zou standaard onderdeel moeten zijn van uw testplanning. Zoals we allemaal weten, kan belasting ook worden gegenereerd als gevolg van het verzoek zelf—bijvoorbeeld een gegevensquery die de verwerking en verzending van enorme hoeveelheden gegevens activeert.

Complexiteit verwijst hier voornamelijk naar de complexiteit van verzoeken die aan een systeem worden voorgelegd. Deze complexiteit kan bestaan uit het aantal opgegeven voorwaarden (en de uitsluitingen en uitzonderingen daarop), het aantal databases (virtueel of anderszins) dat bij de verzoeken betrokken is, of de verwerkingstopologie van het systeem zelf.

In de context van deze bespreking gebruik ik vertraging om het optreden van tijdsintervallen in het verzoekproces aan te duiden, wat niet de gebruikelijke betekenis ervan is. Ik doel hier op gebruikersvertraging, niet op de responstijd van het systeem zelf. 

Met andere woorden: hoe gedraagt de functie of mogelijkheid zich als de gebruiker bij een specifieke stap in het proces komt en daar vervolgens blijft wachten zonder iets te doen? Verloopt de systeemaanvraag na verloop van tijd (waarschijnlijk zou dat moeten)? Moet het systeem de gebruiker een melding tonen? Moet het in die toestand blijven tot het einde der tijden? 

De antwoorden op deze vragen kunnen in de specificatie staan, maar het product dat wordt getest gedraagt zich mogelijk niet op die manier, en daarom testen we überhaupt.

Gebruikersrollen

Natuurlijk kunnen eindgebruikers op verschillende manieren met softwaresystemen communiceren. Dezelfde gebruiker kan afhankelijk van zijn handelingen verschillende rollen binnen het systeem aannemen. 

Processen en diensten kunnen echter ook verschillende rollen en bijbehorende rechten hebben. Zorg er in beide gevallen voor dat uw testontwerp en planning, of het nu om functies of mogelijkheden gaat, alle mogelijke roltoestanden in overweging neemt en test.

Wat nu?

Op zoek naar meer tips voor testontwerp? En wil je je SaaS-groei en leiderschapsvaardigheden versterken?

Schrijf je in voor onze nieuwsbrief voor de nieuwste inzichten van CTO's en toekomstige technologieleiders.

We helpen je slimmer op te schalen en sterker leiding te geven met handleidingen, hulpmiddelen en strategieën van toonaangevende experts!