Fake data: anonimiseren en genereren binnen een Mendix add-on
Fake data? Ja, graag! Maar hoe pakken we dit slim aan? Collega Roy deelt zijn zoektocht naar de juiste manier om in al onze projecten fake data te implementeren. Als je je afvraagt waar we überhaupt fake data voor gebruiken, klinkt het misschien wat vreemd in de oren. Met fake data bedoelen we geanonimiseerde of gegenereerde data waarmee we in onze applicaties testen kunnen uitvoeren. Denk daarbij aan gegenereerde persoonsgegevens voor het plaatsen van een bestelling of het genereren van artikelen met prijsdata. Lees mee in het proces van Roy en hoe wij omgaan met anonieme data.
26 maart 2025 | Nieuws | Door: Conclusion Low Code Company
Deel

Applicatie testen met anonieme data
De applicaties die we bouwen testen we uitvoerig. We controleren of de applicatie naar behoren werkt, of het werkt binnen de processen van onze klant en natuurlijk testen we de veiligheid van de applicatie. Voor tests hebben we data nodig die lijkt op de productiedata. Vanuit security overwegingen beperken we het gebruik van productiedata zoveel mogelijk.
Data anonimiseren in Mendix
Toch lopen we regelmatig tegen de uitdaging aan dat er vanuit klanten geen testdata beschikbaar is of dat de data die we hebben niet past binnen de test die nodig is. Daaruit ontstond de vraag naar één standaardoplossing voor het genereren en of anonimiseren van productiedata.
Vereisten anonieme testdata
We willen dat de testdata voldoet aan de AVG. Het mag dus niet te herleiden zijn naar bijvoorbeeld een persoon, bedrijf of rekeningnummer. En we zoeken iets wat zo goed mogelijk de benodigde productiedata nabootst. "Ik ben mij bewust dat ik niet de eerste ben die met dit probleem aan de slag wil en ben gaan kijken hoe dit in Java is opgelost."
Datafaker
Willen we dit eenvoudig toepassen in al onze projecten, dan hebben we een generieke Mendix module nodig. “We moeten er voor zorgen dat we een brug bouwen tussen de Java library en het Mendix model / ontwikkelomgeving. En zo generiek mogelijk dat het geen applicatie specifieke implementatie gegevens nodig heeft in deze module.”

Configuratie in Mendix
Het domein model in Mendix is zo opgezet dat er een configuratie per entiteit en voor elk attribuut binnen die entiteit is. “Als gebruiker kan je in de applicatie vervolgens per attribuut het type selecteren, denk daarbij aan voornaam, achternaam, geboortedatum etc. Waar we met het testen al snel tegenaan liepen was dat er naast willekeurige data, ook data in het model zit die we moeten gebruiken, bijvoorbeeld enumeraties. Hier kunnen we geen willekeurige waarde in stoppen.
Om enumeraties te kunnen anonimiseren/genereren hebben we twee mogelijke oplossingen bedacht:
- Interne enumeratiegeneratie toevoegen in Java
- Een keuzelijst met een voor ingevulde lijst van mogelijke enumeratiewaarden opnemen
"We hebben gekozen voor de keuzelijst. Dit biedt de meeste flexibiliteit, zo kun je bijvoorbeeld ook waarden uitsluiten."
Een andere toevoeging die we hebben gedaan in deze module is het kunnen aangeven van gerelateerde attributen. Zo houden we de data verspreid over meerdere entiteiten consistent tijdens het anonimiseren of genereren. Voor elke nieuwe test kunnen we kiezen of de data geanonimiseerd of gegenereerd moet worden.
Code review van Mendix add-on
Na de initiële ontwikkeling van Roy heeft collega Jeroen de code review voor zijn rekening genomen. “Jeroen heeft een andere achtergrond dan ik, dus we vullen elkaar goed aan. Hij heeft een aantal optimalisaties gedaan in de java code.” Kort daarna bleek de module relevant voor een klant. “Özgür heeft de module toegepast bij de klant. Het was heel waardevol om het in een klantsituatie toe te passen én met een nieuw paar ogen naar de module te kijken, daardoor hebben we verbeteringen toegepast.”
Nog meer anonimiseren en genereren
Op dit moment zijn we bezig om de landcodes toe te voegen. Landcodes worden gebruikt om de taal- en landinstellingen voor datum-, tijd-, valuta- en getalnotatie te definiëren. Bijvoorbeeld EN/NL/DE. Zo kunnen we onze data nauwkeuriger genereren.
Implementatie: Mendix add-on
“Een add-on module is een speciaal type module dat functionaliteit toevoegt aan je app. Het heeft intellectuele eigendomsbescherming (IP) ingeschakeld. Een add-on module is ontwikkeld om op zichzelf staande functionaliteit te bieden die andere gebruikers in hun apps kunnen gebruiken.”
Naast dat we onze IP willen beschermen, willen we er ook voor zorgen dat er alleen aanpassingen in de bron worden gemaakt. Daarom gebruiken we de Mendix add-on functionaliteit. Zo kunnen we op exportniveau bepalen welke microflows en andere elementen bruikbaar zijn, terwijl de inhoud beschermd blijft. Hiermee kunnen we dus zowel de verdere uitrol als het beschermen van ons IP realiseren.
Key learnings testdata genereren met DataFaker
Het testen van de add-on functionaliteit leverde mij ook nog twee interessante inzichten op:
- Begin niet vanuit "MyFirstModule”
- Stel een aparte module met pagina's beschikbaar voor de add-on module
"In de tests merkte ik namelijk dat de modules die zijn aangemaakt vanuit “MyFirstModule” altijd een foutmelding geven en onbruikbaar zijn. Daarnaast zijn foutmeldingen binnen pagina’s niet op te lossen, omdat je deze binnen de add-on module niet kunt aanpassen.”
Op basis van deze ervaring hebben we de DataFaker als add-on gedeeld in de company marketplace en daarnaast een DataFaker pages module, zodat eventuele foutmeldingen in UI elementen door de gebruiker kunnen worden opgelost.
Met de juiste inzet van fake data weer een stap veiliger werken
Makkelijker fake data gebruiken in al onze projecten is dankzij de inzet van Roy, Jeroen en Özgür eenvoudiger én eenduidiger. “AVG technisch hebben we weer een stap vooruitgezet nu we één duidelijk proces hebben. Maar softwareontwikkeling, ook low-code, blijft mensenwerk. We blijven afhankelijk van hoe de developer de configuratie inricht. Dat kan op dit moment nog niet anders, maar wie weet in de toekomst.”
Met de Datafaker module zijn we weer een stap verder in het professionaliseren en verbeteren van onze testmogelijkheden én tillen we onze kwaliteitsbewaking naar een volgend niveau.