1. Introduktion
1.1. Formål
Formålet med dette dokument er at beskrive de tests, som er udviklet og afviklet forud for release af SFSK.
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 SFSK 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 SFSK):
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 SFSK anvendte tests gennemgåes i det følgende.
1.2. 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.
2. Afviklede komponenttest
I de følgende afsnit beskrives de tests der afviklet som en del af udviklingen af SFSK.
Der henvises i øvrigt til SFSK - Guide til Udviklere for udførselsvejledning.
3. UnitTests
Der findes UnitTests af centrale enheder (klasser) i SFSK.
Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af SFSK servicens moduler.
Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.
Således ligger unittesten for klassen:
./sfsk-xds/src/main/java/dk/nsp/sfsk/ws/Iti18WS.java
implementeret i:
./sfsk-xds/src/test/java/dk/nsp/sfsk/ws/Iti18WSTest.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 SFSK og aggregeres til en samlet rapport i modulet sfsk-testreport.
Således er en samlet rapport over testcoverage tilgængelig i
./sfsk-testreport/target/site/jacoco-aggregate
Unittests og tilhørende udregning af testcoverage udføres som en integreret del af byg af komponenten.
4. Integrationstest til verifikation af funktionalitet og deployment
Integrationstestene for SFSK er implementeret vha Cucumber og JUnit i modulet sfsk-qa, og er beregnet til afvikling mod en kørende udgave af SFSK.
Afvikling af Integrationstests aktiveres via Maven ved følgende kommando i modulet sfsk-qa:
mvn verify -Pintegration-test -Dvariabel=value
Det kræves at følgende properties angives ved afvikling af integrationstesten
Property | Beskrivelse | Eksempel (fra udviklingsmiljøet) |
iti18.service.endpoint | Endpoint for SFSK ITI-18 service | http://localhost:8060/sfsk/iti18 |
iti43.service.endpoint | Endpoint for SFSK ITI-43 service | http://localhost:8060/sfsk/iti43 |
hent.stamkort.document.id | DokumentId på stamkort, der skal hentes i feature 'Hent Stamkort' | 1.2.208.176.43210.8.10.12^e2a35f7d-3cb7-46ad-a825-9242db429a16 |
For nemheds skyld er der angivet følgende profiler (kan angives med -P), med variabeldefinitioner for et givent miljø
local | Det dockerbaserede udviklingsmiljø for SFSK |
test1 | SFSK på NSP Test1 miljøStatens Serum Institut |
test2 | SFSK på NSP Test2 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
4.1. Sammenhæng mellem integrationstests og user stories
I SFSK - Brugerhistorier findes en liste over, hvilke user stories, der er relevante for SFSK.
Disse brugerhistorier går igen i integrationstestene, da hver brugerhistorie svarer til en integrationstestssuite (feature) i SFSK.
Således findes testscenarier for brugerhistorien 'Fremsøg stamkort med værdispring' i featurefilen:
/sfsk-qa/src/test/resources/dk/nsp/sfsk/test/FremsoegStamkortMedVaerdispring.feature