Introduktion

Formål

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:

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.

UnitTests

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

Integrationstest til verifikation af funktionalitet og deployment

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

Properties

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

Property

Beskrivelse

xdscleanup.service.endpointEndpoint til xds cleanup timebased cleanup services
xdscleanup.deprecate.service.endpointEndpoint til xds cleanup deprecate cleanup services
nxrg.service.endpointEndpoint til nxrg til iti18, iti57 og iti41 kald
openxds.service.endpointEndpoint til openxds til iti43 kald
openxds.repository.uniqueidOpenxds repository id

nxrg.document.months.to.keep

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


Afvikling

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
localTesten køres mod et lokalt docker-compose setup (denne vælges automatisk hvis environment argumentet ikke sættes).
test1Testen køres mod service der er deployet på test1.
test2Testen 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)

Test scenarier

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:

  1. Health service test
  2. Registry Timebased Cleanup service test
  3. Repository Cleanup service test
  4. Deprecated Cleanup service test
  5. Deceased Cleanup service test
  6. Dangling Submissionset Cleanup service test