De definitie van testdata volgens de International Software Testing Qualifications Board (ISTQB) is: Gegevens die aanwezig zijn (bijvoorbeeld in een database) voordat een test wordt uitgevoerd en die een component of systeem onder test beïnvloeden of daardoor worden beïnvloed. Testdata omvat alle gegevens die in een informatiesysteem nodig zijn om dit systeem succesvol te kunnen testen en is als gevolg een van de steunpilaren van een succesvol testtraject.
Waar het testen van systemen steeds verder wordt geprofessionaliseerd en geformaliseerd blijft het onderwerp testdata echter vaak onderbelicht, met onvoorziene inspanning en vertraging in het testtraject tot gevolg.
Testmethodieken als ISTQB en TMAP (Test Management Approach) geven veel houvast voor het bepalen van de testaanpak en het specificeren van testgevallen, maar weinig aanwijzingen over hoe om te gaan met de voor het testen benodigde gegevens. Dit leidt in de praktijk vaak tot eenzelfde verdeling van aandacht binnen een testtraject. Testplannen and -strategieën hebben over het algemeen uitgebreide omschrijvingen van de benodigde mensen, omgevingen en tools per uit te voeren testsoort, maar de secties over testdata zijn vaak voor elke testsoort identiek of er is zelfs maar één sectie over testdata voor het hele traject. Goede testdata zijn echter een voorwaarde voor een effectieve test.
Aandacht voor testdata
Wanneer tijdens de planningsfase te weinig aandacht aan testdata is besteedt, blijkt tijdens het voorbereiden en uitvoeren van de verschillende tests dat de behoefte aan data en de wijze van beheer per testsoort sterk kan verschillen en de algemene beschrijving in een enkele paragraaf in het testplan niet voldoende is. In een systeemtest kan de dataset bijvoorbeeld worden benaderd per systeem of deelfunctionaliteit, terwijl een integratietest vraagt om data-integriteit over meerdere systemen. Het ontbreken van een goede planning en aanpak in testplan of -strategie leidt tot inconsistenties en fouten in de data waarvan de correctie grote gevolgen hebben voor inspanning en doorlooptijd.
Om een brug te kunnen slaan tussen de theorie en de praktijk van testsoorten en testdata, is door Accenture een model ontwikkeld dat helpt om grip te krijgen op de benodigde testdata per testsoort en zo de voorbereiding en uitvoering van een testtraject beter te beheersen. Het model bestaat uit een beschrijving van testdata langs twee assen: datasoorten en data-levensfases.
Datasoorten
In ieder informatiesysteem en daarmee in ieder testtraject kan al de benodigde data worden onderverdeeld in drie soorten: systeemconfiguratiedata, masterdata en transactionele data.
Systeemconfiguratiedata bestuurt de werking van het systeem. Beslissingen en logica binnen het systeem tot het al dan niet actief zijn van hele modules worden bepaald door de configuratie. Om deze data te onderhouden, is over het algemeen een goede technische kennis van het systeem vereist en dit wordt dan ook meestal gedaan door ontwikkelaars of beheerders, niet door gebruikers. Voorbeelden van configuratiedata zijn het rekeningschema van een boekhoudsysteem of de beslissingsregels in een rules engine.
Masterdata is de referentie voor alle andere gegevens in het systeem en geeft hier betekenis aan. Deze data heeft vaak een uniforme betekenis voor de hele organisatie, heeft een lage wijzigingsfrequentie en een lange geldigheidsduur. Voorbeelden van masterdata zijn: klantgegevens, leveranciergegevens of productgegevens
Ten slotte is er transactionele data. Dit zijn gegevens die worden gemaakt of getransformeerd tijdens het gebruik van een systeem. Deze data heeft een hoge wijzigings- en aanmaakfrequentie, vaak een korte geldigheid en komt voor in hoge volumes. Deze data wordt vaak gebruikt in managementrapportages omdat het een reflectie is van wat er in het systeem (en dus de organisatie) is gebeurd. Een voorbeeld van transactionele data is: orderdata, factuurdata, betalingsgegevens of boekhoudgegevens.
Levensfases
Ongeacht de datasoort, dan wel testsoort, doorloopt alle testdata tijdens het voorbereiden en uitvoeren van een test impliciet of expliciet drie belangrijke fases. Deze drie levensfases omvatten het identificeren, genereren en beheren van de gegevens.
De eerste fase in de levenscyclus van data betreft het identificeren. Oftewel, het bepalen van de belangrijkste eigenschappen van de data. Voorbeelden van eigenschappen zijn: consistentie tussen systemen, benodigd volume, wel of niet geanonimiseerd.
Wanneer de testdata geïdentificeerd is, kan deze worden gegenereerd. Dit houdt in dat de benodigde data wordt gemaakt of gekopieerd uit een bron. Voor het genereren van data zijn er vele mogelijkheden. Het kan handmatig worden gemaakt op basis van testcondities, gekopieerd uit een productie- of testsysteem, gegenereerd door een tool of een combinatie hiervan.
Als de vragen rond identificatie en generatie beantwoord zijn, rest de laatste fase van beheer. Het is belangrijk om vast te stellen hoe gegevens beheerd zullen worden tijdens de voorbereiding en de uitvoering van tests. Hoe wordt data bijvoorbeeld tijdens de testvoorbereiding opgeslagen: in een testmanagementtool, spreadsheet of speciale testdatarepository? Hoe worden de gegevens ingevoerd: handmatig of geautomatiseerd? Hoe wordt de testomgeving ververst en hoe wordt de data onderhouden bij wijziging van een testgeval?
Testdata beheersmodel
Door de beschreven datasoorten en beheersfases tegen elkaar uit te zetten, ontstaat een model waarmee de behoefte aan testdata en de wijze van beheer voor iedere testsoort kan worden onderzocht en vastgelegd (zie schema).
Door toepassing van dit model kan bij het plannen van een testtraject al inzichtelijk worden gemaakt welke specifieke databehoeften er zijn binnen het traject. Hierdoor kunnen alle activiteiten rondom testdata, in zowel de voorbereiding als de uitvoering van het testtraject, in meer detail worden gepland en ontstaan minder verrassingen tijdens het project.
Paul van den Broek en Maarten Lor, respectievelijk consultant en projectmanager bij Accenture Test Services.
Testdatatabel ingevuld
In de tabel is het model ingevuld voor typisch gebruik in de testsoorten Systeemtest, Integratietest, Acceptatietetst en Non-functionele test. Uit de ingevulde matrix is nu duidelijk af te leiden welke kennis en soort gegevens vereist is voor elke stap in het testtraject. Dit heeft tot gevolg dat behoeften aan bepaalde medewerkers, kennis en tools al in een vroeg stadium kunnen worden geïdentificeerd en een optimale planning van taken en capaciteit kan worden gemaakt.