Introduktion

Formål

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.

Læsevejledning

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.

Afviklede komponenttest

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.

UnitTests

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:

  • Hver testcase er implementeret som en metode i den relevante testklasse
  • Testcasen er navngivet, så det tydeligt fremgår, hvad formålet med testen er
  • Kommentarer i testcasen inddeler tydeligt i præcondition (Given), udførsel (When), tjek (Then) som beskrevet f.eks. Martin Fowler: Given-When-Then

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).

Integrationstest til verifikation af funktionalitet og deployment

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.endpointEndpoint for DROS ITI-41 service
iti42.service.endpointEndpoint for DROS ITI-42 service
iti42.nodgws.service.endpointEndpoint for DROS ITI-42 service (uden DGWS)
iti57.service.endpointEndpoint for DROS ITI-57 service
iti61.service.endpointEndpoint 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:

localDet dockerbaserede udviklingsmiljø for DROS
test1DROS på NSP Test1 miljø
test2DROS 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

Sammenhæng mellem integrationstests og user stories

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


  • No labels