Ga naar de inhoud

Testdata zonder een kopie van productie

  • door

Een kopie van productie voelt volwassen: echte randen, echte combinaties, echte namen. Zij is voor een leeromgeving en voor de meeste pipelines de verkeerde volwassenheid. U sleept persoonsgegevens een omgeving in die breder gedeeld is dan productie, en u maakt tests afhankelijk van rijen die morgen anders zijn. Dit stuk beschrijft hoe u synthetische data maakt die de randen wel raakt, in het verlengde van Software Testen en van de opruimregel in API Testen.

Laptop met synthetische API-testdata op een bureau tijdens een module in Eindhoven
Synthetische data is saai en herhaalbaar. Dat is precies de eigenschap die een productiekopie u niet geeft.

Bepaal eerst welke grens u nodig hebt, niet welke tabel u kunt dumpen. Een minimumbedrag, een verlopen token, een rol zonder rechten, een order die al betaald is: dat zijn gevallen. U maakt ze in de test of in een fixture die bij de test hoort. De test ruimt op, of de database start leeg. Gedeelde gebruikers met de naam test1 zijn de oorzaak van suites die om de beurt slagen. Zij lijken efficiënt tot twee jobs dezelfde rij wijzigen.

Anonimiseren van een productiedump is geen middenweg die u licht moet nemen. Namen vervangen laat identificatoren, relaties en zeldzame combinaties intact. Wie de dump kan lezen, herkent soms alsnog een persoon. Voor een cursus op Strijp-S en voor een oefenrepository is het antwoord eenvoudiger: geen dump. Cases schrijven wij zo dat de grens in de specificatie zit, niet in een toevallige klant. Mist u een randgeval dat alleen in productie voorkomt, beschrijf dat geval en bouw het na met verzonnen sleutels.

Bewaar geheimen apart van de fixture. Een wachtwoord in de repository is geen testdata, het is een lek. Tokens voor een testomgeving horen in de geheime opslag van de runner, met rechten die productie niet openen. Controleer dat een configuratiefout de verkeerde host niet raakt. Een test die per ongeluk tegen productie boekt, is geen leerzaam incident. Het is de reden dat wij die host in de checklist als eerste vakje zetten.

De maat van goede testdata is of een nieuwe collega de test morgen op een schone machine draait en hetzelfde resultaat ziet. Lukt dat alleen wanneer iemand eerst een spreadsheet importeert, dan is de data een procedure en geen onderdeel van de test. Procedures worden overgeslagen. Fixtures niet, zolang zij in versiebeheer staan en geen klant bevatten die nooit heeft ingestemd met uw pipeline. In de opleiding op Strijp-S is een dump daarom geen hulpmiddel dat wij “even anonimiseren”. Hij komt de zaal niet in. Een beschrijving van de rand is genoeg om de fixture te bouwen.