You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Indholdsfortegnelse:

Introduktion

Her beskrives de tests, som er udviklet og afviklet forud for release af Nationalt eCPR. 

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 Nationalt eCPR ved at opstarte hele servicen (Se afsnit 4). Integrationstestene bruges til verifikation af funktion og deployment. Herved verificeres det, at de individuelle enheder kan integreres og arbejde sammen i en kørende service.

  • Performancetest: Verificerer, at servicen performer med hensyn til svartider og er stabil under et specifikt load.

Nedenfor gennemgåes de tests, der er anvendt til test af Nationalt eCPR.

Jeg er ikke helt sikker på at jeg forstår denne sætning. Og er eCPR-servicen en del af Nationalt eCPR? Taler vi om at der laves en deployment af den kommende version på et testmiljø, og at det er dette der foretages test på ift. verifikation af funktion og deployment?

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 NAS 2 komponenterne.

Der henvises i øvrigt til eCPR - Guide til udviklere for udførselsvejledning og eCPR - Testrapport til sammenligning for resultat.

UnitTests og integrationstest mellem moduler

Systemet er testet med Unittest frameworket, men der er anvendt en blanding af både unit og integrationstest mellem moduler til test af systemet. Testene er i høj grad kategoriseret efter funktion, og dermed har flere relevante units været med i samme test. Det medvirker til at størstedelen af systemet er testet, men at klasserne ikke er testet efter standard unit testing principper. 

Placeringen af unit-/integrationstest følger standarden foreskrevet af Maven og er placeret i src/test/java i ecpr2-service modulet.

Unittest

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

Således ligger unittesten for klassen:

./erstatnings-cpr-numre/ecpr2-service/src/main/java/dk/sds/ecpr2/webservice/mapper/FromXMLMapper.java

implementeret i:

./erstatnings-cpr-numre/ecpr2-service/src/test/java/dk/sds/ecpr2/webservice/mapper/FromXMLMapperTest.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

Unittests er implementeret vha JUnit og kan eksekveres af Mavens standard testplugin SureFire.

Integrationstestene mellem moduler

Integrationstestene mellem moduler er navngivet efter den funktion de udfører, efterfulgt af 'Test'. Testen for funktionen "CreatePerson" er dermed navngivet "CreatePersonTest". Placeringen af disse test ligger i mappen for den klasse der har første berøring med kaldet. Eksempelvis starter funktionaliteten af CreatePerson i ECPR2WebServiceImpl-klassen. Denne er placeret under 

./erstatnings-cpr-numre/ecpr2-service/src/main/java/dk/sds/ecpr2/webservice/ECPR2WebServiceImpl.java

og testen af createPerson er dermed implementeret i

./erstatnings-cpr-numre/ecpr2-service/src/test/java/dk/sds/ecpr2/webservice/CreatePersonTest.java

For at integrationstestene kan køre bruges en in-memory h2 database. I mappen compose/database/test ligger de sql-filer, der indeholder testdata, der lægges i h2-db ved opstart. 

Outputtet af testene kan ses i 

./erstatnings-cpr-numre/ecpr2-service/target/surfire-reports

hvor resultatet både er gemt som .txt og .xml filer

Til udregning af testcoverage anvendes Jacoco Maven Plugin (se JaCoCo Maven plug-in). Resultatet findes som jacoco.exec under target folderen

Unittests udføres som en integreret del af byg af komponenten (se i øvrigt eCPR - Guide til udviklere).

Integrationstest til verifikation af funktionalitet og deployment

Integrationstestene for eCPR er implementeret vha. JUnit i modulet ecpr2-test, og er beregnet til afvikling mod en kørende udgave af Nationalt eCPR.
Her testes det generelle flow gennem systemet, hvor samtlige moduler er integreret. Integrationstestene kræver et kørende dockermiljø, hvorved eCPR først skal bygges og køres, og herefter eksekveres testene:

mvn clean install -D maven.test.skip=true -e
docker-compose -f compose/$foldernavn$/docker-compose.yml up

Hererfter kan integrationstestene afvikles: 

mvn clean install -P=integrationstest

Integrationstestene er navngivet efter hvilke kald de udfører. Et eksempel er updateAndSearch() der først opretter en patient, opdaterer samme patient, og herefter fremsøger denne patient. Integrationstestene er udarbejdet med henblik på at teste mest anvendte brugerhistorier, hvorved der både er testet oprettelse, opdatering, fremsøgning, opslag, sletning af person og reservér Id'er (Se eCPR - Brugerhistorier).

Ud over brugerhistorierne er Servlet endpoints også integrationstestet

Der kan testes op mod andre miljøer end lokalt miljø ved at rette i HOST og PORT variablerne i ecpr2-test/src/test/java/dk/sds/ecpr2/AbstractITCase.java.

Performancetests

Performance krav

TO BE Kommer når Performancetest er specificeret.


Ændringslog

1.02023-11-16Indhold publiceretSDS


  • No labels