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:
Unittests: Unittests tester, at de individuelle/isolerede enheder (klasser) i kildekoden virker som de skal.
Test med cronjob (Integration): Start og status endpoints for cronjobs anvendes til at starte jobs og verificere, at den samlede service fungerer.
Andre typer af tests (ikke en del af udviklingen af CRA):
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 CRA anvendte tests gennemgåes i det følgende.
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.
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.
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).
Da CRA ikke har en service snitflade, er der ikke oprettet standard integrationstests. I stedet er det muligt at teste servicens funktionalitet ved at kalde start og status for de tilgængelige cron-jobs, når servicen er deployet lokalt med docker-compose.
Disse kan f.eks. kaldes i en browser på følgende vis:
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:
I docker-compose tilføjes crl.XYZ.com som alias
crl-stub: networks: cra_net: aliases: - crl.XYZ.com |