Indledning
Dette dokument beskriver en testvejledning for sikrede indlæseren. Det forudsættes at projektet er bygget og installeret, og med denne vejledning kan man således afvikle "integrations"- og performancetests og derved kontrollere robustheden.
Sikrede indlæseren benytter i vid udstrækning docker til test, for at kunne teste så vidt muligt med de rigtige afhængigheder.
Det overordnede setup er beskrevet i NSP Continuous Integration & Delivery, og det er herved muligt at starte en specifik Sikrede indlæser med lokalt kørende database samt stamdatakopiregisterservice (SKRS); således at hele flowet kan afprøves lokalt (TBD?).
Unittest
Der anvendes unittests i Sikrede indlæseren ved brug af JUnit.
En af unit testene "SikredeRouteBuilderTest" tester hele ruten, med undtagelse af den indledende ftp del. Den er lidt speciel i det, der benyttes Mockito Spy's for at kunne teste Camel ruterne og deres fremdrift. Her benyttes en in memory database.
Unittests kan køres ved at eksekvere
Codecoverage
Efter afvikling af unit-tests genereres en testrapport med Maven-plugin’et JaCoCo. Rapporten kan ses ved at åbne følgende fil i en browser sikrede-testreport/target/site/jacoco-aggregate/index.html.
Rapporten dækker selve Sikrede indlæseren. Codecoverage skal minimum være 80% jf NSP husregler. Der henvises til JaCoCo testrapporten for yderligere information vedr. coverage.
Pr. 22. april 2022 er coverage 87%:

Integrationstest
Sikrede indlæseren har ikke en integrationstest i traditionel forstand.
Unit testen "SikredeRouteBuilderTest" udfører en slags integrationstest, da den indlæser en fil og tjekker det resultat, der kommer ud af det.
Derudover kan man udføre en manuel test af det komplete flow fra ft folder til indlæsning i database ud fra følgende opskrift:
Klargøring:
- Start Sikrede indlæser op i docker compose:
docker-compose -f compose/development/docker-compose.yml up --build
- Er der problemer for indlæseren at håndtere filerne i test_sftp folderen kan det skyldes rettigheder. Anvend:
sudo chmod 777 compose/development/test_sftp/praksys
Test med fejlfri indhold:
- Lav relevant test fil:
- F.eks. kopi af ./dk.nsp.sdm.sikrede-service/src/test/resources/data/sikrede-input.txt
- Filen skal være navngivet på formen: SSR1061023.*.txt. Eksempel SSR1061023.00001.txt
- Kopier omdøbt test fil til ./compose/development/test_sftp/praksys.
- Når filen er væk fra ftp folderen tjek følgende:
- Der findes en fil i backup postfixet med UUID. Eksempelvis ./compose/development/backup/SSR1061023.00001-69cc6d28-8bf7-4309-b959-a2d70bc230d7.txt
- Der findes det antal entries i SIKR_sikrede tabellen, som der var data linier i filen (slå data op på UUID, der matcher tildelt backup fil postfix)
select count(*) from SIKR_sikrede where DataSetUUID = "69cc6d28-8bf7-4309-b959-a2d70bc230d7"; - Tjek status i SIKR_dataset er "COMPLETED"
select * from SIKR_dataset where UUID = "69cc6d28-8bf7-4309-b959-a2d70bc230d7" ; - Tjek ingen data i SIKR_datasetlog
select * from SIKR_datasetlog where DataSetUUID = "69cc6d28-8bf7-4309-b959-a2d70bc230d7" ;
Test med fejl på data linie:
- Lav relevant test fil:
- F.eks. kopi af ./dk.nsp.sdm.sikrede-service/src/test/resources/data/sikrede-input-invalidData-SSikGrpKode.txt
- Filen skal være navngivet på formen: SSR1061023.*.txt. Eksempel SSR1061023.00002.txt
- Kopier omdøbt test fil til ./compose/development/test_sftp/praksys.
- Når filen er væk fra ftp folderen tjek følgende:
- Der findes en fil i backup postfixet med UUID. Eksempelvis ./compose/development/backup/SSR1061023.00002-c323c051-9c48-4582-95e4-35ab7454811a.txt
- Der findes det antal entries i SIKR_sikrede tabellen, som der var data linier i filen minus den med fejl (slå data op på UUID, der matcher tildelt backup fil postfix)
select count(*) from SIKR_sikrede where DataSetUUID = "c323c051-9c48-4582-95e4-35ab7454811a"; - Tjek status i SIKR_dataset er "COMPLETED"
select * from SIKR_dataset where UUID = "c323c051-9c48-4582-95e4-35ab7454811a" ; - Tjek data i SIKR_datasetlog med korrekt LogMessage og DataSetLocation. I eksemplets tilfælde "Ugyldigt nummer: B i feltet: SSikrGrpKode. Værdien skal være numerisk" i linie 1
select * from SIKR_datasetlog where DataSetUUID = "c323c051-9c48-4582-95e4-35ab7454811a" ;
Test med fejl i fil struktur :
- Lav relevant test fil:
- F.eks. kopi af ./dk.nsp.sdm.sikrede-service/src/test/resources/data/sikrede-input-invalidEnd-antalNotMatching.txt
- Filen skal være navngivet på formen: SSR1061023.*.txt. Eksempel SSR1061023.00003.txt
- Kopier omdøbt test fil til ./compose/development/test_sftp/praksys.
- Når filen er væk fra ftp folderen tjek følgende:
- Der findes en fil i backup postfixet med UUID. Eksempelvis ./compose/development/backup/SSR1061023.00003-839f2f93-3bbc-4cdd-b4ef-0b3b8e0673b8.txt
- Der findes findes ingen entries i SIKR_sikrede tabellen, som der var data linier i filen (slå data op på UUID, der matcher tildelt backup fil postfix)
select count(*) from SIKR_sikrede where DataSetUUID = "839f2f93-3bbc-4cdd-b4ef-0b3b8e0673b8"; - Tjek status i SIKR_dataset er "FAILED_WITH_ERROR"
select * from SIKR_dataset where UUID = "839f2f93-3bbc-4cdd-b4ef-0b3b8e0673b8" ; - Tjek ingen data i SIKR_datasetlog
select * from SIKR_datasetlog where DataSetUUID = "839f2f93-3bbc-4cdd-b4ef-0b3b8e0673b8" ; - Tjek fejl i applikationsloggen. I eksemplets tilfælde: "dk.nsp.sdm.common.route.components.ProcessingException: Fejl i input-filen: Antal linier linier: 10, matcher ikke antal poster i footer: 13"
Performancetest
Sikrede indlæseren indeholder ikke en automatiseret testsuite beregnet til performancetest. Det anbefales dog at der udføres en manuel performancetest i forbindelse med udvikling, med Sikrede filer af omtrent samme størrelse og kompleksitet som de rigtige indlæsningsfiler.
En sådan performancetest er ment til at afdække eventuelle flaskehalse, som kan blive optimeret før release, samt også give en idé til hvor lang tid Sikrede indlæseren vil skulle bruge for at indlæse de typiske filer der modtages.