Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

Således er en samlet rapport over testcoverage tilgængelig i

./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 JUnit i moduletqa, og er beregnet til afvikling mod en kørende udgave af DROS.

Integrationstestene kan udvikles i to modes: Een mod en ekstern DROS og een mod en lokal deployet (på Undertow) DROS.


Strategien med lokalt deployet DROS afvikles som en del af build fasen for DROS komponenterne.


Afvikling af Integrationstests mod eksternt kørende DROS aktiveres via Maven ved følgende kommando i modulet integration-test:

mvn test -Dvariabel=value

Det kræves at følgende properties angives ved afvikling af integrationstesten


Property

Beskrivelse

notificationbroker.endpointEndpoint for NAS 2 NotificationBroker
pullpointfactory.endpointEndpoint for NAS 2 PullPointFactory
pullpoint.endpointEndpoint for NAS 2 PullPoint
subscriptionmanager.endpointEndpoint for NAS 2 SubscriptionManager
idlist.endpointEndpoint for NAS 2 Idlist


For nemheds skyld er der angivet følgende profiler (kan angives med -P), med variabeldefinitioner for et givent miljø


developmentDet dockerbaserede udviklingsmiljø for NAS 2
test1DROS på NSP Test1 miljø
test2DROS på NSP Test2 miljø


Testrapporter kan genereres i HTML med kommandoer: mvn surefire-report:report; mvn site -DgenerateReports=false

Sammenhæng mellem integrationstests og user stories

DROS - Guide til anvenderefindes en liste over, hvilke user stories, der er relevante for DROS.

Navngivningen af integrationstestene er sket udfra navngivningen i design og arkitekturbeskrivelsen.

F.eks. findes tests for DROS-ITI41-RegistrerNytDokument i klassen:

./dros-qa/src/test/java/dk/sds/nsp/dros/DrosIti41RegistrerNytDokumentIT.java.