Formålet med dette dokument er at beskrive de tests, som er udviklet og afviklet forud for release af XDS cleanup.
Følgende typer af test 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 XDS cleanup service til verifikation af funktion og deployment. Herved verificeres det, at de individuelle enheder kan integreres og arbejde sammen i en kørende service.
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.
Der findes UnitTests af centrale enheder (klasser) i XDS cleanup.
Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af XDS cleanup servicens moduler.
Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.
Unittests er implementeret vha JUnit.
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 cleanup-testreport.
Således er en samlet rapport over testcoverage tilgængelig i
./cleanup-testreport/target/site/jacoco-aggregate
Unittests og tilhørende udregning af testcoverage udføres som en integreret del af byg af komponenten.
Se iøvrig udvikler guide
Integrationstestene for XDS cleanup er implementeret vha Cucumber og JUnit i modulet cleanup-qa, og er beregnet til afvikling mod en kørende udgave af XDS cleanup.
Afvikling af Integrationstests aktiveres via Maven ved følgende kommando i modulet cleanup-qa:
mvn verify -pl cleanup-qa -Pintegration-test
Det kræves at følgende properties angives ved afvikling af integrationstesten
Property | Beskrivelse |
| xdscleanup.service.endpoint | Endpoint til xds cleanup timebased cleanup services |
| xdscleanup.deprecate.service.endpoint | Endpoint til xds cleanup deprecate cleanup services |
| nxrg.service.endpoint | Endpoint til nxrg til iti18, iti57 og iti41 kald |
| openxds.service.endpoint | Endpoint til openxds til iti43 kald |
| openxds.repository.uniqueid | Openxds repository id |
| Antal måneder der skal trækkes fra dags dato ved iti41 kald i createdate, npr dokumentet skal falde for tidsfristen og slettes af timebased cleanup (hænger denne sammen med hvad der står i cleanup servicens deletion.document.cleanup.specifications property |
Testene kan også afvilkes mod test miljøerne ved at sætte argumentet environment.
Køres der ikke en lokal test skal dette angives med cucumber.filter.tags argumentet.
Eksempel:
mvn verify -pl cleanup-qa -Pintegration-test -Denvironment=test1 -Dcucumber.filter.tags="not @runLocal and not @Ignore" |
Forklaring til cucumber.filter.tags variablen:
"not @runLocal": undlader at køre det test, som kun er relevante for lokal aftastning. Dette er typisk teste, som er afhængige af specifikke tidsfrister, som ikke kan sættes tilsvarende i test miljøerne. Et eksempel er "Den hvor Registry Deceased Cleanup jobbet sletter afdød persons dokumenter.", hvor det lokale setup har en noget kortere slettefrist for afdøde personer end test systemerne.
"not @ignore": skulle der være "ignorerede" teste, vil disse ikke blive kørt. Denne opsætning er default, når man kører lokalt.
Der er følgende muligheder for test miljøer:
| Miljø | Beskrivelse |
|---|---|
| local | Testen køres mod et lokalt docker-compose setup (denne vælges automatisk hvis environment argumentet ikke sættes). |
| test1 | Testen køres mod service der er deployet på test1. |
| test2 | Testen køres mod service der er deployet på test2. |
Testrapporter kan for integrationstesten genereres som html og json og kan ses i cleanup-qa/target/cucumber-reports/cucumber.html (og .json)
Alle slette jobbenes status endpoint kaldes fra integrationstesten.
Mange af scenarierne kan køres både lokalt og på test serverne. Men nogle af dem kan ikke, fordi det ikke er muligt at oprette data, der vil falde for f.eks. slette frister. Disse er noteret med "@runLocal"
Selvom der ikke kan laves detaljerede test på alle slettejobbene på test serverne, skal endpointene alligevel aktiveres, så alle slettejob, der kun kan testes lokalt har en simpel test, der alene starter slettejobbet på endpointet start og tjekket at det får success retur.
Integrationsten har følgende overordnede test, der hver især indeholder relevante test scenarier: