Formålet med dette dokument er at beskrive de tests, som er udviklet og afviklet forud for release af DROS.
Følgende typer af test bruges indgår i udviklingsarbejdet:
Unittests: Unittests tester, at de individuelle/isolerede enheder (klasser) i kildekoden virker som de skal.
Integrationstest: Integrationstests afvikles op i mod en kørende DROS service til verifikation af funktion og deployment. Herved verificeres det, at de individuelle enheder kan integreres og arbejde sammen i en kørende service.
Andre typer af tests (ikke en del af udviklingen af DROS):
Performancetest: Verificerer, at servicen performer med hensyn til svartider og er stabil under et specifikt load.
Endurancetests, der verificerer at servicen fungerer under længerevarende belastning og ikke har f.eks. memory leaks, som kan udføres i stagning/produktionslignende miljø.
De i DROS anvendte tests gennemgåes i det følgende.
Dokumentet henvender sig til udviklere og testere.
Læseren forventes at have kendskab til Java software udvikling, herunder unittesting ved anvendelse af JUnit og Maven.
I de følgende afsnit beskrives de tests der afviklet som en del af udviklingen af DROS.
Der henvises i øvrigt til DROS - Guide til udviklere for udførselsvejledning.
Der findes UnitTests af centrale enheder (klasser) i DROS.
Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af DROS servicens moduler.
Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.
Således ligger unittesten for klassen:
./dros-xds/src/main/java/dk/nsp/dros/ws/Iti41WS.java
implementeret i:
./dros-xds/src/test/java/dk/nsp/dros/ws/Iti41WSTest.java
Unittests er stilmæssigt opbygget på følgende måde:
Unittests er implementeret vha JUnit og kan eksekveres af Mavens standard testplugin SureFire.
Til udregning af testcoverage anvendes Jacoco Maven Plugin (se JaCoCo Maven plug-in).
Testcoverage udregnes i de enkelte Maven moduler i DROS og aggregeres til en samlet rapport i modulet dros-testreport.
Således er en samlet rapport over testcoverage tilgængelig i
./dros-testreport/target/site/jacoco-aggregate
Unittests og tilhørende udregning af testcoverage udføres som en integreret del af byg af komponenten (se i øvrigt DROS - Guide til udviklere).
Integrationstestene for DROS er implementeret vha Cucumber og JUnit i modulet dros-qa, og er beregnet til afvikling mod en kørende udgave af DROS.
Afvikling af Integrationstests aktiveres via Maven ved følgende kommando i modulet dros-qa:
mvn verify -Pintegration-test -Dvariabel=value
Det kræves at følgende properties angives ved afvikling af integrationstesten
Property | Beskrivelse |
iti41.service.endpoint | Endpoint for DROS ITI-41 service |
iti42.service.endpoint | Endpoint for DROS ITI-42 service |
iti42.nodgws.service.endpoint | Endpoint for DROS ITI-42 service (uden DGWS) |
iti57.service.endpoint | Endpoint for DROS ITI-57 service |
iti61.service.endpoint | Endpoint for DROS ITI-61 service |
For nemheds skyld kan man nøjes med at specificere miljøet med argumentet environment
Der er følgende muligheder for test miljøer:
local | Det dockerbaserede udviklingsmiljø for DROS |
test1 | DROS på NSP Test1 miljø |
test2 | DROS på NSP Test2 miljø |
Således kan man afvikle integrationstestene mod test1 med følgende kommando:
/dros/trunk/dros-qa$ mvn verify -Pintegration-test -Denvironment=test1 |
local vælges som default hvis der ikke specificeres miljø.
Testrapporter kan for integrationstesten genereres som html og json og kan ses i /target/cucumber-reports/cucumber.html og /target/cucumber-reports/cucumber.json
I DROS - Brugerhistorier findes en liste over, hvilke user stories, der er relevante for DROS.
Disse brugerhistorier går igen i integrationstestene, da hver brugerhistorie svarer til en integrationstestssuite (feature) i DROS.
Således findes testscenarier for brugerhistorien 'Opret Stable Dokument' i featurefilen:
./dros-qa/src/test/resources/dk/nsp/dros/test/OpretStableDokument.feature