Tests

Om de technische juistheid, consistentie en reproduceerbaarheid van het MNP te borgen, is een set geautomatiseerde verificatietests ontwikkeld. Hierin worden verschillende aspecten getest. Ontwikkelaars draaien de tests elke keer dat zij aanpassingen doen aan het model.

Naast tests die de juistheid van de code verifieren, gebruikt het MNP ook interne tests die verifieren of de invoerdata voldoet aan de eisen die hieraan worden gesteld (zie io_pathways en input_verification_functions).

Testdataset

Voor de tests wordt gebruik gemaakt van een vaste testdataset. Deze dataset bestaat uit een fictief landschap met meerdere deelgebieden die verschillen in ecosysteemtype en omgevingscondities, gecombineerd met een selectie van ecologisch contrasterende soorten. Deze soorten verschillen onder andere in habitatvoorkeur, dispersieafstand en minimale oppervlakte van sleutelpopulaties. Doordat de uitkomsten voor de testdata vooraf zijn vastgesteld en opgeslagen als referentierasters en -tabellen, kan de reproduceerbare werking van alle modelcomponenten systematisch worden geverifieerd. Voor meer details over de test dataset zie Pouwels et al. (2016) en Pouwels et al. (2017).

Regressietest

Om te testen of de uitkomsten van het model (ongewenst) veranderen door aanpassingen in de code voeren we een end-to-end regressietest uit op de testdataset. Deze test draait het gehele MNP-model voor de testdataset en controleert of de uitkomsten hetzelfde zijn als de vooraf bepaalde verwachte uitkomsten. Uitbreidingen van het model of kleine bug-fixes zouden de uitkomsten niet moeten veranderen. Gewenste veranderingen in de uitkomsten, bijvoorbeeld vanwege nieuwe inzichten waardoor delen van het model veranderen, moeten leiden tot een nieuwe hoofdversie van het model.

Unittests

Voor de individuele onderdelen van het MNP maken we ook gebruik van unittests, tests die kijken of de onderdelen afzonderlijk doen wat er van ze wordt verwacht. We proberen deze tests zo goed mogelijk alle onderdelen te laten dekken. Er zijn unittests voor alle hoofdonderdelen van MNP:

aggregate_land_type_map

De toegepaste functies voor de aggregatie van het landtype-raster van 2.5 m naar 25 m cellen zijn geverifieerd met unittests. Met behulp van de hierboven beschreven vaste, gecontroleerde testdataset wordt gecontroleerd dat het landtype-raster correct wordt ingelezen, cellen in de juiste blokken worden geaggregeerd, landtypefracties correct worden berekend en “no-data”-waarden consistent worden afgehandeld. Integratietests controleren de volledige processing pipeline, inclusief parallelle verwerking en correcte samenvoeging van tussenresultaten.

environmental_factor

De verwerking en combinatie van omgevingsvariabelen tot een geïntegreerde environmental suitability index per soort is technisch geverifieerd op correctheid en reproduceerbaarheid. Daarbij wordt gecontroleerd of rasters, soort-specifieke suitability index tabellen en ruimtelijke dekkingsmaskers correct worden ingelezen, toegepast en gecombineerd volgens de gespecificeerde formules. De resulterende omgevingsvariabele wordt cel-voor-cel vergeleken met vooraf vastgelegde referentie-uitkomsten, waarmee wordt vastgesteld dat responsfuncties, combinatieregels, maskering en numerieke verwerking correct zijn geïmplementeerd.

habitat_suitability

Functionele unittests verifiëren de correcte berekening van het habitatgeschiktheidsraster (HSI) op basis van landtype-specifieke geschiktheidsindices, drempelwaarden en beslisregels. Daarnaast wordt getest of de environmental suitability index correct wordt gecombineerd met de habitatgeschiktheid en of cellen zonder geschikt habitat consistent als ongeschikt worden geclassificeerd. De tests omvatten expliciet situaties waarin: (1) geen enkel landtype geschikt is voor een soort; (2) wel matching landtypen aanwezig zijn met geschiktheidswaarden boven de drempelwaarde; (3) een hoge drempelwaarde wordt gehanteerd waardoor alle HSI-waarden onder de drempel vallen; en (4) geschikt habitat voorkomt in combinatie met ongunstige omgevingscondities. Hiermee wordt geborgd dat grenssituaties correct worden afgehandeld en dat de berekeningen numeriek stabiel en robuust zijn over het volledige invoerdomein.

clustering

Deterministische regressietests vergelijken de rasteruitvoer van de populatieclustering voor individuele soorten met vooraf vastgelegde referentierasters. De clustering zelf is gebaseerd op het HSI-raster en soort-specifieke eigenschappen (zoals dispersieafstand en minimale populatiegrootte). De resulterende rasterlagen bevatten unieke cluster-ID’s voor afzonderlijke populaties, en pixel-voor-pixel vergelijking met de referentie verifieert dat de clusteringalgoritmen numeriek correct, ruimtelijk consistent en reproduceerbaar zijn.

species_evaluation

Unittests en integratietests voor de soortevaluatie verifiëren de correcte berekening van het aantal populaties, totale en effectieve arealen, en de juiste toekenning van populaties aan sleutelpopulaties. Hiermee wordt vastgesteld dat de kernberekeningen voor de biologische indicatoren correct worden uitgevoerd en voldoen aan de gespecificeerde rekenregels.