1. Automatisch testen van datawarehouses
betrouwbaarheid en kwaliteit
Gepubliceerd: 18 juli 2012 | Door:Marianne Kompagne
In praktijk zien we dat er veel aandacht is voor het testen van bedrijfsapplicaties. Deze
inspanning gaat echter weer verloren doordat bedrijven hun datawarehouse niet of
nauwelijks testen. Men wil vaak wel, maar binnen datawarehouse-projecten zijn testers
met een specialisatie voor datawarehouses en business intelligence moeilijk te vinden. En
projecten moeten wel een opleverdatum halen. Daardoor is de test-rol binnen een project
vaak niet ingevuld. Met als gevolg dat alleen de ontwikkelaars hun eigen werk testen
tijdens de ontwikkelfases (unittest).
In positieve gevallen worden voor moeilijke requirements op ad hoc basis extra testen uitgevoerd. De gevonden
defects worden niet of nauwelijks centraal geregistreerd en worden niet nagejaagd. Er is geen aandacht voor
risicoanalyse. Door deze werkwijze vindt er ook geen overdracht plaats van uit te voeren testen naar de
beheerfase. Voor in de beheerfase benodigde controles dient het beheerteam het wiel weer opnieuw uit te
vinden. Al met al komt hier een datawarehouse uit waarvan men niet met 100 procent zekerheid kan zeggen wat
de betrouwbaarheid van de opgeslagen informatie is. Er is immers geen inzicht en tijd om bevinden te
onderzoeken. Tevens is de gedane testarbeid niet effectief en efficiënt ingezet.
Uit onze eigen ervaring kunnen we concluderen dat 50 procent van de datawarehouses is getest bij de eerste
GO-LIVE (systeemtest). Datawarehouses zijn dynamisch; er vinden continu releases en changes plaats. Deze
dienen ook getest te worden. Hooguit 20 procent van de datawarehouses is structureel getest na iedere release
of change (100% regressietest) en hooguit 5 procent van de datawarehouses heeft een regressietest na iedere
2. load. Uit ervaring weten we ook dat op sommige datawarehouse-projecten waar wel getest wordt, een
verhouding van het aantal testers ten opzichte van het aantal ontwikkelaars 1:1 is. Dan duurt de doorlooptijd van
het testen vaak ook nog langer dan de ontwikkeling van een onderdeel.
Wanneer we op zoek gaan naar een oplossing en de zoekterm ‘testen + data warehouse’ gebruiken vinden we
als resultaat een heleboel blogs, artikelen die benadrukken dat het belangrijk is, maar geen van allen biedt een
kant en klare testoplossing. Niemand heeft het specifiek gemaakt.
Automatisering
De doorlooptijd van een systeemtest neemt van het hele testproces de meeste tijd in beslag. Met een
testapplicatie wordt het mogelijk gemaakt om een reeks testen automatische uit te voeren. Zo kan bijvoorbeeld
een stap als het testen van de datastructuren, waaronder de data-objectstructuur, de domeinen en foreign key
relaties, automatisch worden uitgevoerd. Ook het testen van functionaliteit van de ETL-processen kan met het
bouwen van een testapplicatie worden geautomatiseerd.
De visie is om het testproces zo effectief mogelijk te maken door preventie van defects en optimalisatie van de
testuitvoering. In veel gevallen wordt daarvoor een testconsultant aangesteld. De werkzaamheden van de
testconsultant zijn er op gericht om defects te voorkomen. Hiervoor stelt de testconsultant met meegeleverde
templates master- en detail testplannen op. In de testplannen is duidelijk aan te geven wat en hoe er getest gaat
worden en met welk risicoprofiel. Hierbij is het belangrijk om de testconsultant in de definitie- of ontwerpfase al te
betrekken door middel van reviewsessies. Door reviews al in de definitie/ontwerpfase uit te voeren daalt het
aantal defects omdat al in een vroeg stadium de testbaarheid is geverifieerd. Onduidelijkheden en niet ´SMART´
geformuleerde requirements zijn in dit stadium nog te corrigeren en nemen minder tijd in beslag. Dit levert een
daling van 30 tot 50 procent van het aantal defects tijdens de systeemtest op. Buiten dat wordt er ook tijd
bespaard doordat kennisoverdracht naar test- en beheerfase al heeft plaats gevonden. De toegevoegde waarde
van een datawarehouse-testconsultant komt verder volledig tot zijn recht in het opstellen van scripts in de
testomgeving. Hij heeft inzicht in welke attributen en tabellen relevant zijn voor een test. De ingevulde attributen
en tabellen worden in templates gebruikt om testscripts te genereren.
Geautomatiseerde testen met een testomgeving
Om het testproces te optimaliseren dient een testomgeving te worden gemaakt waarin de opgestelde testen
geautomatiseerd opgesteld en uitgevoerd kunnen worden. Deze testomgeving bestaat uit:
- Testomgeving Initialisatie
Deze testomgeving is flexibel in te richten voor de gewenste datawarehouse architectuur.
3. - Testscript Generator
Een applicatie van waaruit testscripts gegenereerd kunnen worden op basis van metadata uit functionele
ontwerpen, use cases of user stories (metadata-driven testscript generator).
- Test Engine
Een applicatie waarin de testscripts worden gedraaid en het resultaat met het uitgevoerde testscript wordt
opgeslagen (inclusief logging & email notificatie). De applicatie bestaat uit een set van tabellen en SQL packages
die los van het data warehouse geïnstalleerd zijn (zero footprint).
- Test Reporting
Dashboard waarin het resultaat van een testrun wordt gepresenteerd.
Door het vastleggen van testinformatie ontstaat een betrouwbaar beeld van de kwaliteit van de processen en
data binnen een datawarehouse. De kracht van het opslaan van testen met hun resultaten ligt in de
mogelijkheden om het testproces zelf te optimaliseren. Verder kunnen door het automatiseren veel meer
controles gedaan worden. Een datawarehouse kan nu echt voor 100 procent getest worden en dit is bij iedere
functionaliteit- en dataoplevering te herhalen (regressietest). De tijdsbesparing maakt het ook mogelijk om veel
meer tijd te besteden aan het onderzoeken van de echt belangrijke bevindingen. Meestal gaat het dan om
bevindingen die ontstaan zijn doordat informatie uit verschillende bronsystemen er in geïntegreerd toestand toch
anders uitziet dan de business bij het opstellen van de requirements voor ogen had.
De omschreven testomgeving ondersteunt het vastleggen op hoog niveau (metadata) van uit te voeren testen.
Het voordeel hiervan is dat men eenvoudig testcases kan vastleggen. Dit vastleggen van testcases is
geautomatiseerd door het gebruik van templates. De testengine voert de zo gegenereerde testscripts uit en legt
de testresultaten met het uitgevoerde testscripts vast. Er kan dus altijd, door bijvoorbeeld een auditorganisatie,
gecontroleerd worden welke testen zijn opgesteld en uitgevoerd. Zo is 80 procent van de testen die op een
datawarehouse zijn uitgevoerd,zijn zo uit te voeren. Voor testcases van ingewikkelde businessregels dient men
eenmalig een testcase-template te maken. Dit is omdat het vastleggen van businessregels sterk afhankelijk is
van de wijze waarop requirements en ontwerpen of user stories zijn vastgelegd in de klantomgeving. Voordeel is
dat je de testomgeving hierdoor zeer flexibel en op veel ontwikkelmethodieken in kan zetten.
Wat levert dit geautomatiseerd testen op?
Een belangrijk voordeel van geautomatiseerd testen is het aanzienlijk verkorten van de doorlooptijd van testen.
Verder is het hele proces van uitgevoerde testen en testresultaten met hun doorlooptijden volledig transparant.
Op basis hiervan kunnen dashboards worden gemaakt die het testproces nog inzichtelijker maken, met de
4. mogelijkheid het proces nog verder te verbeteren.
Het gebruik van een testomgeving verkort de doorlooptijd van het testproces ook door het al in een vroeg
stadium van het ontwikkelproces van een datawarehouse in te zetten. Het is als regressietest te gebruiken na
iedere aanlevering aan het datawarehouse en het kan zo continue inzicht in de datakwaliteit gegeven. Het
toepassen van een geautomatiseerde testomgeving verkleint op deze manier het risico van management en/of
operationele besluitvorming gebaseerd op verkeerde data. Inzicht in deze risico’s is belangrijk voor bijvoorbeeld
Solvency II of Basel II projecten.
De doorlooptijd van het testproces wordt ook positief beïnvloed doordat er veel minder handwerk door testers
gedaan hoeft te worden. Ervaring leert dat de doorlooptijd tenminste 50 procent sneller is ten opzichte van niet-
geautomatiseerd testen. In plaats van een verhouding van testers: ontwikkelaars van 1:1 kan men volstaan met
een verhouding van 1:3. Dit is zeer wenselijk gezien de besparingen en omdat in de praktijk blijkt dat testers met
specifieke datawarehouse-kennis schaars zijn.
Een volledig ingerichte en geautomatiseerde testomgeving is gedurende de gehele looptijd van een
datawarehouse te gebruiken. Ook tijdens de beheerfase. In een Agile projectaanpak is automatisch testen
eigenlijk onmisbaar.
Kadenza ontwikkelde op basis van haar onderzoek naar het testproces van datawarehouses, een testmethodiek
en testapplicatie, TestLoods genaamd. Door TestLoods toe te passen kan snel een gewenst
testvolwassenheidsniveau gehaald worden. Met het bijbehorende 4 stappenplan is een Test Maturity Methode
niveau 3 en 4 zijn zeker voor alle datawarehouse projecten haalbaar. De resultaten van TestLoods zijn
veelbelovend. De doorlooptijd van het testproces is sterk verminderen (tot 70%) en daardoor is tevens een
anzienlijke kosten reductie behaald. Het data warehouse en de informatie zijn voor 100% getest waardoor de
betrouwbaarheid van het datawarehouse en de informatie is nagenoeg 100% is geworden