Indhold

Introduktion

Formål

Formålet med dette dokument er at beskrive de tests, som er udviklet og afviklet forud for release af CRA.

Følgende typer af test bruges indgår i udviklingsarbejdet:

Andre typer af tests (ikke en del af udviklingen af CRA):

De i CRA 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 CRA.

Der henvises i øvrigt til CRA - Guide til udviklere for udførselsvejledning.

UnitTests

Der findes UnitTests af centrale enheder (klasser) i CRA.

Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af CRA servicens app-modul.

Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.

Således ligger unittesten for klassen:

.cra-app/src/main/java/dk/nsi/nsp/cra/model/CertificateRevocationListUrl.java

implementeret i:

.cra-app/src/test/java/dk/nsi/nsp/cra/model/CertificateRevocationListUrlTest.java

Unittests er stilmæssigt opbygget på følgende måde:

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 og aggregeres til en samlet rapport i modulet cra-testreport.

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

./cra-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 CRA - Guide til udviklere).

Integrationstest

Der er i sommeren 2023 oprettet integrations test for CRA, i første omgang til FetchIntermediateCraJob.

Integrationstestene er implementeret vha Cucumber og JUnit i modulet cra-integrationstest, og er beregnet til afvikling mod en kørende udgave af CRA.

Afvikling af Integrationstests aktiveres via Maven ved følgende kommando:

mvn verify -Pintegration-test

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



Property

Beskrivelse

fetchintermediatecert.start.endpoint

Endpoint for FetchIntermediateCraJob

fetchintermediatecert.status.endpoint

FetchIntermediateCraJob status

Test med Cronjobs

CRA har tidligere ikke haft en integrationstest. Og de nuværende test kan ikke kontrollere resultatetet som sådan, andet end kald gik godt.  I stedet kan servicens samlede funktionalitet verificeres ved at tjekke docker loggen for cron-jobs, når servicen er deployet lokalt med docker-compose. Og log filer kan testes for fejl.

Der henvises i øvrigt til CRA - Guide til udviklere for udførselsvejledning.

CRL Stub

Når  CRA servicen skal hente crl filer, så kalder sender den et http request. Det er dog ikke altid at disse services der  udstiller CRL filerne er tilgængelige.
For at undgå afhængigheder  til andre services, så er det nu muligt at placere CRL filer i modulet cra-crl-stub.

For at CRA servicen sender sit request til stubben, så skal følgende gøres: