Achtergrond van de vraag
Testomgevingen zijn ontstaan naarmate IT-producten complexer werden. Het creëren van een aparte omgeving stelt testers in staat om nieuwe functionaliteiten veilig te verifiëren, zonder de echte gebruikers en gegevens te beïnvloeden.
Probleem
Wanneer tests plaatsvinden in de productieomgeving, is er een risico van gegevensverlies, verstoring van bedrijfsprocessen of veiligheidsincidenten. Soms verschillen test- en productieomgevingen, wat "onopgemerkte" fouten kan veroorzaken — wijzigingen werken in tests, maar falen in productie (of omgekeerd).
Oplossing
Er worden aparte omgevingen voor tests georganiseerd (test, staging, pre-prod), die zo veel mogelijk overeenkomen met productie. Voor handtesting is het belangrijk dat de API, gegevens, configuratie en zelfs "hardware" nauwkeurig overeenkomen. Bijzondere aandacht wordt besteed aan de isolatie van gebruikersgegevens, configuratie van logging, monitoring en controlegegevens.
Belangrijke kenmerken:
Mag je een productieomgeving gebruiken voor testen als de testen onschadelijk zijn?
Nee, er blijft altijd een risico bestaan dat de werking voor gebruikers verstoord wordt of dat testgegevens "zichtbaar" worden. Zelfs "onschadelijke" testen kunnen invloed hebben op statistieken of belasting veroorzaken.
Wat is het verschil tussen test-, staging- en pre-prod-omgevingen?
Test — omgeving voor hoofdhand- en geautomatiseerde tests, kan verschillen qua gegevens. Staging/pre-prod — lijkt maximaal op productie, reproduceert infrastructuur en gegevens voor de finale test.
Welke gegevens zijn het meest wenselijk om te gebruiken in een testomgeving: echte, geanonimiseerde of synthetische?
De beste optie zijn geanonimiseerde gegevens, die dicht bij de echte gegevens zijn qua structuur. Echte gegevens schenden de veiligheid, uitsluitend synthetische gegevens weerspiegelen niet het echte gedrag.
Het testen van een bugfix gebeurt op productie, na de release wordt de bug alleen in de testomgeving gefixt, met als gevolg een nieuwe fout in productie: klanten klagen massaal.
Voordelen:
Nadelen:
Het team controleert handmatig een functie op een aparte staging, testgegevens worden regelmatig bijgewerkt, en tests zijn zo dicht mogelijk bij de realiteit.
Voordelen:
Veiligheid van productie
Nadelen: