De invoering van de General Data Protection Regulation (GDPR) ofwel de Algemene Verordening Gegevensbescherming (AVG) kan voor veel organisaties een enorme impact hebben, helemaal nu de ‘proefperiode’ er bijna op zit. Het niet naleven van de AVG kan boetes die in de miljoenen kunnen lopen tot gevolg hebben, of een tijdelijk verbod om persoonsgegevens te verwerken. Bedrijven die privacygevoelige productiegegevens gebruiken om software te testen moeten zich er bewust van zijn dat testen met persoonsgegevens per 25 mei 2018 in vrijwel alle gevallen uit den boze is. Veel organisaties voeren momenteel wijzigingen in hun testdatastrategie door, voor anderen is deze aanpassing aanstaande: het is twee voor twaalf.
Daarnaast klinkt in veel organisaties de wens om ontwikkelingen in de markt nauwkeurig te volgen door het steeds frequenter opleveren van software. Nu we dankzij de AVG toch nadenken over een wijzigende testdatastrategie, is het goed om te beseffen dat de manier waarop u met testdata omgaat veel zegt over hoe goed uw testen zullen presteren in een ‘continuous delivery pipeline’.
Niet geoorloofd
Binnen de AVG moet iedere organisatie die persoonsgegevens verwerkt vooraf formuleren welk doel deze verwerking heeft. Dat doel kan bijvoorbeeld zijn: aan een wettelijke verplichting voldoen of om pakketjes op het juiste adres bezorgd krijgen. Maar persoonsgegevens om te testen? Dat mag niet zomaar meer.
Consensus is dat software ontwikkelen en testen geen doelen zijn die verenigbaar zijn met het doel waarvoor persoonsgegevens worden verzameld. Daarnaast zijn organisaties verplicht om aan te tonen dat zij de verwerking van persoonsgegevens zoveel mogelijk beperken, ook op ontwikkel- en testomgevingen. Het is goed om te weten dat er alternatieven voor testen met persoonsgegevens voorhanden zijn. Maar ook dat elk alternatief zijn voor- en nadelen heeft.
Geanonimiseerde productiegegevens
In de praktijk zien we dat organisaties die gewend zijn om te testen met productiegegevens aan hun AVG verplichting voldoen door deze productiegegevens voor testdoeleinden te anonimiseren.
Binnen deze aanpak wordt een kopie van productiegegevens gemaakt. In deze kopie worden privacy-gevoelige gegevens gehusselend, gemaskeerd of vervangen door fictieve gegevens. Hierdoor gaat de herleidbaarheid met natuurlijke personen verloren. Als de herleidbaarheid zodanig gewijzigd wordt dat hij niet meer hersteld kan worden, spreken we niet langer over persoonsgegevens. Omgevingen die voorzien zijn van geanonimiseerde productiedata vallen daarmee buiten de scope van de AVG. Door deze aanpak te hanteren hoeven organisaties de bestaande testaanpak niet grondig te wijzigen. Anonimiseren lijkt van een afstandje dan ook de kortste slag om bijtijds klaar te zijn voor de AVG.
Parallel aan de door de AVG ingegeven wijzigingen in de testdatastrategie loopt binnen veel organisaties het initiatief om de digitale dienstverlening optimaal aan te laten sluiten bij de steeds veranderende behoefte van de markt. Binnen deze aanpak is het frequent releasen van kleine softwarewijzigingen cruciaal.
Graag wil ik 5 argumenten aanvoeren waarom organisaties die groeien richting ‘continuous delivery bij het zoeken naar een manier om AVG-compliant te zijn af zouden moeten zien van het gebruik van geanonimiseerde productiedata.
1. Zuivere testen in de continuous delivery pipeline. Binnen een werkwijze waarin frequent software wordt opgeleverd omarmen teams de snelle feedback van hun testautomatiseringsoplossing. Ze gebruiken deze feedback als een thermometer voor de kwaliteit van de gewijzigde software. Een ‘groene build’ is een belangrijke indicatie dat de gemaakte wijzigingen productierijp zijn. Maar een team ontwikkelt alleen vertrouwen in zo’n groene build als aan twee belangrijke randvoorwaarden voldaan is:
- de feedback komt razendsnel
- de testautomatisering is zo rubuust dat de resultaten betrouwbaar zijn: een falende test wijst ii alle gevallen op een softwarefout, niet op een fout in de test
Deze situatie is alleen te bereiken als automatische checks in de deployment pipeline geoptimaliseerd zijn op performance en robuustheid. In bijna alle gevallen betekent dit dat er veel kleine checks zijn die ieder uitspraak doen over de correcte werking van een klein stukje code of functionaliteit. Om deze checks snel en robuust genoeg te maken is het noodzakelijk om voor iedere check specifieke testdata te ontwerpen.
Natuurlijk is het technisch gezien prima mogelijk om testen te ontwikkelen op basis van productiedata, maar deze aanpak is in de context van continuous delivery suboptimaal. Als een snelle en robuuste feedback van testautomatisering belangrijk voor u is, is het geen goed idee om productiedata te gebruiken. Ook niet als die productiedata geanonimiseerd is.
2. Frequent releasen zorgt voor onbruikbare testdata. Teams die frequent wijzigingen doorvoeren aan hun software in productie, wijzigen in de regel ook regelmatig de structuur van het datamodel: tabelletje erbij, kolommetje eraf. Dit zijn vrijheden die een team moet hebben om de zo belangrijk geachte wendbaarheid te bieden. De afhankelijkheid van actuele productiedata om software te ontwikkelen en testen maakt dat er constant behoefte is aan een verse kopie van productiedata. Immers: de productiekopie van gisteren is niet meer compatibel met de software die vandaag op de testomgevingen staat.
3. Data anonimiseren is duur en werkt vertragend. De behoefte aan het continu maken van back-ups van productie, het anonimiseren van deze back-up en eventueel nog maken van subsets is een bewerkelijk en tijdrovend proces dat zich moeilijk laat schalen. Neem daarbij dat we steeds meer data gaan verzamelen en sets steeds groter worden. De doorlooptijd die dit vraagt staat in de weg van voortgang op ontwikkel- en testwerkzaamheden. De kosten van het constant maken, bewerken en opslaan van data stapelen zich op. Eventuele licentiekosten van de anonimiseringssoftware zijn dan nog buiten beschouwing gebleven, maar een handig ontwikkelteam kan prima zijn eigen data anonimiseren.
4. ‘Privacy by design’-principes verhogen testbaarheid en privacy. De Autoriteit Persoonsgegevens noemt op zijn website het belang van een zorgvuldige en verantwoorde omgang met persoonsgegevens tijdens de ontwikkeling van softwareproducten en diensten. Naast privacy verhogende maatregelen geldt het principe van dataminimalisatie: alleen de persoonsgegevens die noodzakelijk zijn voor de verwerking mogen worden opgeslagen.
Bij de ontwikkeling van een applicatie rekening houden met de mogelijkheid om testdata voor het systeem eenvoudig te kunnen genereren en muteren maakt een systeem beter (automatisch) testbaar en dat is een goede eigenschap van software in een cd-omgeving.
Daarnaast is het binnen deze aanpak niet nodig om persoonsgegevens van productiesystemen te halen om een systeem te kunnen testen. Want ook in het proces van het maken van een back-up en het anonimiseren van de data kunnen datalekken zitten. Bij het gebruik van synthetische data is de kans op het lekken van persoonsgegevens uitgesloten. Maar goed, dat argument geldt natuurlijk ook als continuous delivery geen doelstelling is.
5. Verstop je niet achter de illusie dat alles testbaar is. Een veelgehoord argument voor het gebruik van (geanonimiseerde) productiegegevens bij het ontwikkelen- en testen van software is dat de productiedataset situaties kent die onvoorspelbaar applicatiegedrag op kunnen leveren. Deze situaties laten zich lastig voorspellen.
Als deze situatie zich voordoet, is het verstandig om je niet te verstoppen achter de schijnzekerheid die een serie testen biedt. Geen enkele testaanpak kan namelijk uitsluiten dat er een systeem in productie onverwacht gedrag gaat vertonen. Het is verstandiger om een analyse te maken van de situaties die onvoorspelbaar zijn en voor die situaties testen toe te voegen op basis van synthetische data.
Door frequent kleine releases te doen en het gedrag van het systeem in productie goed te observeren, kan een team leren waar de testaanpak geoptimaliseerd kan worden. Met goede productiemonitoring, de mogelijkheid om problemen snel te fixen of wijzigingen terug te draaien en de wil om steeds een beetje beter te worden kan een team steeds wijzigingen in productie blijven nemen, ook al is de context nog zo complex.
Mijn collega Maarten Piepers vertelt in zijn blog ‘fast feedback betekent testen in productie‘ over het leren van de feedback van productiesystemen om zowel het product als de ontwikkel- en testaanpak te verbeteren.
Succes van de deployment pipeline
Nu testdata dankzij de naderende AVG voor veel ontwikkelorganisaties een hot-topic is, zou het zonde zijn om niet even stil te staan bij het effect van testdata op het succes van de implementatie van continuous delivery. Bedrijven die geanonimiseerde productiegegevens gebruiken in een deployment pipeline moeten zich beseffen dat deze strategie waarschijnlijk op enig moment voor problemen gaat zorgen.
Dat maakt niet dat het anonimiseren van productiegegevens in alle gevallen een slechte oplossing is, maar wel dat het gebruik van deze gegevens in een deployment pipeline wat vragen op zou moeten roepen. Ik heb er vast vijf genoemd, maar kijk er naar uit om met u mee te denken over hoe uw organisatie met softwarekwaliteit in de context van continuous delivery kan omgaan.
Robert Lourens, lead agile consultant bij Bartosz