nxrg_hent
Der findes UnitTests af centrale enheder (klasser) i NXRG.
Placeringen af disse følger standarden foreskrevet af Maven og er placeret i src/test/java i hvert af NXRG servicens moduler.
Unittests er navngivet med navnet på den klasse, som de tester, efterfulgt af Test.
Således ligger unittesten for klassen:
./nxrg-app/src/main/java/dk/nsp/nxrg/ws/Iti42WS.java
implementeret i:
./nxrg-app/src/test/java/dk/nsp/nxrg/ws/Iti42WSTest.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 i de enkelte Maven moduler i NXRG og aggregeres til en samlet rapport i modulet nxrg-testreport.
Således er en samlet rapport over testcoverage tilgængelig i
./nxrg-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 NXRG/SDS Patientindex - Guide til Udviklere).
Integrationstestene for NXRG er implementeret vha Cucumber og JUnit i modulet nxrg-qa, og er beregnet til afvikling mod en kørende udgave af NXRG.
Da man har brug for database adgang for at kontrollere felt migrerings integrationstesten, kan denne kun køres lokalt, hvorfor den er exluded fra de ørige profiler end "local".
Afvikling af Integrationstests aktiveres via Maven ved følgende kommando i modulet nxrg-qa:
mvn verify -Pintegration-test -Dvariabel=value
Det kræves at følgende properties angives ved afvikling af integrationstesten. De 2 felt migration relaterede properties er kun krævet når man kører test profilen "local".
Property | Beskrivelse |
iti18.service.endpoint | Endpoint for NXRG ITI-18 service |
iti42.service.endpoint | Endpoint for NXRG ITI-42 service |
iti57.service.endpoint | Endpoint for NXRG ITI-57 service |
iti61.service.endpoint | Endpoint for NXRG ITI-61 service |
notification.service.endpoint | Endpoint for NXRG notifikations service |
notification.service.status.endpoint | Endpoint for NXRG notifikations service status side |
field.migration.endpoint | Endpoint for at starte Felt migrerings servicen, der migrerer data fra XML baseret RIM format til søgbar felt (anvendes kun når man kører "local" test profilen) |
nxrg.data.url, nxrg.data.user og nxrg.data.pass | Adgang til databasen, til kontrol af Felt migrerings data (anvendes kun når man kører "local" test profilen) |
For nemheds skyld er der angivet følgende profiler (kan angives med -P), med variabeldefinitioner for et givent miljø
local | Det dockerbaserede udviklingsmiljø for NXRG |
test1 | NXRG på NSP Test1 miljø |
test2 | NXRG på NSP Test2 miljø |
Testrapporter kan for integrationstesten genereres som html og json og kan ses i /target/cucumber-reports/cucumber.html og /target/cucumber-reports/cucumber.json
Integrationstesten sender een notifiation til NAS. Denne kan findes via DRG. På Test1 kan det gøres med getMessages vha. pull point: http://test1.ekstern-test.nspop.dk:8080/nas2/pullpoint/service/080d09f8-48af-405c-b55f-f821a773c9c1
I NXRG/SDS Patientindex - Brugerhistorier findes en liste over, hvilke user stories, der er relevante for NXRG.
Disse brugerhistorier går igen i integrationstestene, da hver brugerhistorie svarer til en integrationstestssuite (feature) i NXRG.
Således findes testscenarier for brugerhistorien 'Registrer Dokumentsæt med ReferenceIdList' i featurefilen:
./nxrg-qa/src/test/resources/dk/nsp/nxrg/test/verification/RegistrerDokumentsaetMedReferenceIdList.feature
Integrationstesten i NasNotificationJob.feature indgår ikke i user stories, da den er drift relateret.
XDS Toolkit er en samling test tools, der fokuserer på XDS. Denne startes på vha docker-compose filen (tjek om den er udkommenteret, hvis den ikke starter)
Det understøtter tests for en række IHE XDS aktører f.eks Document Registry, Document Repository og flere.
I forhold til NXRG er det relevant at kigge på, hvilke tests, der findes, der fokuserer på Document Registry.
Vælg "alternate" som environment. Test11897 test 1 og 2 fejler ellers.
I menuen i XDS Toolkit kan man vælge "Conformance Tests". Herved fåes et overblik over de forskellige IHE XDS aktøerer. I sektionen vedr. Document Registry er testene grupperet. I forhold til NXRG MVP er det relevant at koncentrere sig om de tests, der ligger i de sektionerne:
For lokal test: værktøjet startes op docker compose setup under ./compose/development og kan herefter tilgåres via: http://localhost:3308/xdstools2/
For udvikling testserver test anvend: https://iheos-toolkit2.nspnxrg.medcom.dk/xdstools2/
Det er ikke alle tests inden for de tre kategorier, som vi forventer at kunne gennemføre i NXRG MVP (vi udbyder f.eks. kun en delmængde af de søgetyper, der findes som en del af ITI-18). Kategorierne og testcases gennemgås nedenfor og relevans krydses af.
Type | Antal deltest som fejler | Relevans/ note |
---|---|---|
0 (sprint 8) | ||
0 (sprint 9) | ||
0 (sprint 8) | ||
0 (sprint 10) | ||
0 (sprint 10) | Ikke relevant efter ihe framework ikke opgraderet | |
NR-139: iti57 kald, fejler pga manglende repositoryUniqueId | 1 | Afhænger af, hvordan test1/prod er konfigureret i open text |
10 | ||
NR-123: openhealth opdatering | 31 | (færre fejl når request validering fra) |
NR-114: GetSubmissionSetAndContents | 16 | |
0 (sprint 11) | ||
NR-115: GetFolderAndContents | 8 | |
NR-116: GetFolders | 3 | |
NR-117: GetSubmissionSets | 2 | |
NR-118: GetAssociations | 1 | |
NR-121: GetAll | 3 |
Rød=Fejl som skal retttes, gul=accepteret "fejl", grøn=er rettet, lysere rød=stilling ikke taget
Document Registry - Required Tests | Relevant i forhold til NXRG | Antal deltest | Teststatus ok og accepteret (med/uden) | Sprint 13 (2021/12/17) | Sprint 12 | Sprint 11 (test som fejler) | Sprint 10 (test som fejler) | Sprint 9 (test som fejler) | Sprint 8 (test som fejler) | Sprint 7 (test som fejler) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Validering som drift (slået fra: iti42 req, iti18 req) | Open Text sat som prod | NXRG sat som prod | NXRG uden validering | Med validering | Uden validering | Med validering | Uden validering | |||||||||||
11897 - FindDocuments Stored Query | x | 29 |
| |||||||||||||||
11898 - SQ.b FindSubmissionSets Stored Query | ||||||||||||||||||
11899 - SQ.b FindFolders Stored Query | ||||||||||||||||||
11901 - SQ.b GetDocuments Stored Query | x | 6 | ||||||||||||||||
11902 - SQ.b GetFolders Stored Query | ||||||||||||||||||
11903 - SQ.b GetAssociations Stored Query | ||||||||||||||||||
11904 - SQ.b GetDocumentsAndAssociations Stored Query | ||||||||||||||||||
11905 - SQ.b GetSubmissionSets Stored Query | ||||||||||||||||||
11906 - SQ.b GetSubmissionSetAndContents Stored Query | ||||||||||||||||||
11907 - SQ.b GetFolderAndContents Stored Query | ||||||||||||||||||
11908 - SQ.b GetFoldersForDocument Stored Query | ||||||||||||||||||
11909 - SQ.b GetRelatedDocuments Stored Query | ||||||||||||||||||
11990 - Register single DocumentEntry | x | 2 |
|
|
|
|
|
|
|
|
|
| ||||||
11991 - Register two DocumentEntries | x | 2 |
|
|
|
|
|
|
|
|
|
| ||||||
11992 - Document Replace | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
11993 - Document Replace and Addendum | x | 4 |
|
|
|
|
|
|
|
|
|
| ||||||
11994 - Document Replace and Transformation | x | 4 |
|
|
|
|
|
|
|
|
|
| ||||||
11995 - Document Replace with Transformation (XFRM_RPLC) | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
11996 - Reject Submission with Invalid Patient ID | Testen er ikke relevant, da vi ikke anvender Patient Identity feed featuren | |||||||||||||||||
11997 - Patient ID on SubmissionSet does not match DocumentEntry | x | 2 |
|
|
|
|
|
|
|
|
| |||||||
11998 - R.b Reject Submission, Patient ID on Replacement Document does not match Original | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
11998a - Attribute missing rejection | x | 9 |
|
|
|
|
|
(forventer failure får success) |
|
(forventer failure får success) |
|
|
| |||||
11999 - R.b Accept Create Folder | x | 2 |
|
|
|
|
|
|
|
|
|
| ||||||
12000 - R.b Accept Create Folder with Initial Document | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
12000.1a - R.b Accept Create Folder with Initial Document and Test GetDocuments Stored Query | x | 2 |
|
|
|
|
|
|
| |||||||||
12001 - R.b Add new document to existing folder | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
12002 - R.b Reject Add Document to Folder - Patient ID does not match | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
12004 - R.b Document Resubmission | x | 2 |
|
|
|
|
|
|
|
| ||||||||
12084 - R.b Submission Stored - All or Nothing | x | 2 |
|
|
|
|
|
|
|
|
|
|
| |||||
12323 - R.b Folder lastUpdateTime | x | 8 |
|
|
|
|
|
|
|
|
|
| ||||||
12326 - R.b Add Existing document to existing folder | x | 3 |
|
|
|
|
|
|
|
|
|
| ||||||
12327 - R.b Accept Document Replace, Document in Folder | x | 4 |
|
|
|
|
|
|
|
|
|
| ||||||
12368 - SQ.b XDSResultNotSinglePatient Error | x | 6 |
|
|
|
|
|
|
|
|
|
| ||||||
12370 - R.b Accept association documentation classification | x | 4 |
|
|
|
|
|
|
|
|
|
|
| |||||
12379 - Extra Metadata | ? | 1 |
|
|
|
|
|
|
|
|
|
| ||||||
15803 - GetAll Stored Query | ||||||||||||||||||
15806 - Reject resubmission | x | 4 |
|
|
|
|
|
|
|
|
|
|
Document Registry - Metadata Update Option Tests | Relevant i forhold til NXRG | Antal deltest | Test status ok og accepteret (med/uden) | Sprint 13 | Sprint 12 | Sprint 11 (test som fejler) | Sprint 10 (test som fejler) | Sprint 9 (test som fejler) | Sprint 8 (test som fejler) | Sprint 7 (Test som fejler) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Validering som drift (slået fra: iti42 req, iti18 req) | Open Text sat som prod | NXRG sat som prod | NXRG uden validering | Med validering | Uden validering | Med validering | Uden validering | |||||||||||
test skal køres igen manuelt, hvor version bliver sat på for at kunne regne med resultat | ||||||||||||||||||
15800 - DocumentEntry Update | x | 3 |
|
|
|
|
|
|
|
|
| |||||||
15800b - No Original DocumentEntry | x | 1 | som nxrg |
|
|
|
|
|
| |||||||||
15800c - Wrong transaction used | x | 1 |
|
|
| |||||||||||||
15800d - DocumentEntry - Submit Incomplete Update | x | 2 |
| som nxrg |
|
|
|
|
|
|
|
|
| |||||
15800e - DocumentEntry - Submit Update to older version | x | 2 | som nxrg |
|
|
|
|
|
| |||||||||
15801 - DocumentEntry attribute Update | x | 3*22 | som nxrg |
|
|
|
|
|
|
|
| |||||||
15802 - Update DocumentEntry Status on most recent version | x | 5 |
|
|
|
|
|
|
| |||||||||
15802b - Update DocumentEntry Status of older version | x | 4 | som nxrg |
|
|
|
|
|
|
|
| |||||||
20000 - Folder - Simple Update | ||||||||||||||||||
20000b - Folder - Reject Original Submission | ||||||||||||||||||
20000c - Folder - Submit Wrong Version | ||||||||||||||||||
20000d - Folder - Simple Update Using Association Propagation | ||||||||||||||||||
20000e - Folder - Simple Update Without Association Propagation | ||||||||||||||||||
20000f - Folder - Submit Incomplete Update | ||||||||||||||||||
20001 - Submit APND Association | ||||||||||||||||||
20002b - Check Syntax for Update Metadata Operations | ||||||||||||||||||
20007 - DocumentEntry - Reject Multiple Updates For Same LogicalId | x | 2 | som nxrg |
|
|
|
| |||||||||||
20008 - Submit "Versioned" Association | ||||||||||||||||||
20100a - PatientIDReconciliationError: Submit DE-DE Relationship Association | ||||||||||||||||||
20100b - PatientIDReconciliationError: Submit FD-DE Has-Member Association | ||||||||||||||||||
21000 - No Update Metadata Operation Object (ITI-42) | x | 1 |
|
|
|
|
|
| ||||||||||
21001 - SubmissionSet and UpdateAvailabilityStatus | x | 2 | ||||||||||||||||
21002 - Simple DocumentEntry Patient Identifer Change | Testen er ikke relevant, da det ikke tillades at ændre cpr nummer i forbindelse med opdatering af metadata | |||||||||||||||||
21003 - Simple Folder Patient Identifier Change | ||||||||||||||||||
21004 - Submit Association Against Deprecated Objects |
Document Registry - On Demand Option Tests | Relevant i forhold til NXRG | Antal deltest | Test status ok og accepteret (med/uden) | Sprint 13 | Sprint 12 | Sprint 11 (test som fejler) | Sprint 10 (test som fejler) | Sprint 9 (test som fejler) | Sprint 8 (test som fejler) | Sprint 7 (Test som fejler) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Validering som drift (slået fra: iti42 req, iti18 req) | Open Text sat som prod | NXRG sat som prod | NXRG uden validering | Med validering | Uden validering | Med validering | Uden validering | |||||||||||
Test: 15805 - Test 15805 - Registry oriented On-Demand DocumentEntry tests | x | 10 |
|
|
|
|
|
|
|
|
|
|
|
Der laves performance test af regsistry og repository som et hele - dvs det er brugeroplevelsen som sådan, der vurderes.
Testen grupperes logisk i en test suite. Hver trin bør udføres i angivne orden. Og databasen til registry og repository kan med fordel kopieres efter trin 2, sådan at de følgende testtrin kan genkøres, skulle behovet opstå.
Test suite:
Der køres på en liste af cpr numre. Trin 1 og 2 opretter data og trin 3-7 arbejder herefter på disse data. Replace document og update metadata arbejder på konkrete dokumenter. Disse findes ved først at lave en ITI-18 søgning (som udelades af selve throughput beregningen).
Der findes ikke en officiel liste af krav til performance. Det vil derfor være hensigtsmæssigt at undersøge, hvordan performance er for det nuværende registry (og repository). Men vil herefter kunne vurdere, at man ialtfald ikke er dårligere stillet med det nye.
Add 3: Der måles en periode på 15 minutter og denne ganges op på time og uge basis.
Testen skal køres på en liste af cpr numre. Listen indeholder 100.000 forskellige numre. Udover disse cpr numre skal testen kunne afvikles selvstændigt og ikke være afhængig af andet test data.
Testen skal køre mod et registry og repository med en “passende” mængde baggrundsdata. Dette er et par millioner dokumenter af typerne stable og on-demand. Disse skabes i testens trin 1 og 2.
Testens trin 3-6 forudsætter er der findes baggrundsdata at køre på. Trin 3 og 4 skal erstatte et eksisterende "approved" dokument, og trin 5 samt 6 skal fremsøge eksisterende dokumenter, og trin 7 skal deprecate eksisterende dokumenter.
Dette baggrundsdata skables i testens trin 1 og 2. Vurderes det, at disse 2 trin ikke har skabt nok baggrundsdata (et par millioner dokumenter) kan trin 1 og 2 gentages indtil, der er nok dokumenter. Da trin 7 deprecate i princippet fjerner sit eget data grundlag for at finde dokumenter at slette markere, skal der efter en deprecate oprettes et tilsvarende dokument.
Der findes følgende test planer til NXRG.
Opgave | Test plan | Modul/bibliotek | Beskrivelse | |
---|---|---|---|---|
1 | registrer stable dokument | nxrg_opret.template.jmx | aftaler | Registerer et stable dokument med ITI-41 kald |
2 | Registrer on-demand dokument med referencer | nxrg_opret_iti61.template.jmx | ihe | Registrer et on-demand dokument med referencer med ITI-61 |
3 | Replace stable dokument | nxrg_erstat.template.jmx | aftaler | Fremsøger et stable dokument med ITI-18 kald Erstatter dokumentet med ITI-41 kald |
4 | Replace on-demand dokument med referencer | nxrg_replace_iti61.template.jmx | ihe | Fremsøger et on-demand dokument med ITI-18 kald Erstatter dokumentet med ITI-61 |
5 | Registry stored query (“find documents”) og ITI-43: retrieve document set | nxrg_hent.template.jmx | aftaler | Fremsøger et stable dokument med ITI-18 kald Henter dokumentet med ITI-43 |
6 | Registry stored query (“find documents by reference”) | nxrg_hent_iti18_by_reference.template.jmx | ihe | Fremsøger et on-demand dokument med ITI-18 kald |
7 | Update metadata (deprecate dokument) | nxrg_deprecate_iti57.template.jmx | ihe | Fremsøger et on-demand dokument med ITI-18 kald Deprecate dokumentet med ITI-57 kald Opret et tilsvarende dokument med ITI-61 kald |
Man kan i de forskellige test plan angive om der skal køres med eller uden dgws. Dette skal gøres nede på de enkelte samplers. Dette har betydning for, hvilken "path" der anvendes efter et givet endpoint.
Denne path kan også variere om kaldet er mod NXRG eller det eksisterende OpenText. Denne path justeres i kildekoden til test frameworket.
De test, hvor der udføres et "hjælpe" kald, f.eks. når der laves en søgning inden erstatning af et dokument, da udelukkes "hjælpe" kaldet fra selve performance målingen ved at angive "ignore" i samplerens navn.
Dette er en registrering af et “stable” dokument.
Overvejelser omkring opsætningen
Der er følgende muligheder for opsætning af testen:
Til testen anvendes følgende opsætning:
Dette er en registrering af et “on-demand” dokument.
Overvejelser omkring opsætningen
Der er følgende muligheder for opsætning af testen:
Til testen anvendes følgende opsætning:
Dette er som for ITI-41 register og ITI-61 register ovenfor. Forskellen er, at et eksisterende dokument skal erstattes.
Overvejelser omkring opsætning:
Til testen anvendes følgende opsætning:
Dette er en fremsøgning af dokumenter og efterfølgende hent.
Overvejelser omkring opsætningen
Der er følgende muligheder for opsætning af testen:
Fremsøgning:
Hent:
Til testen anvendes følgende opsætning:
Dette er en fremsøgning af dokumenter ud fra dokuments reference
Overvejelser omkring opsætningen
Der er følgende muligheder for opsætning af testen:
Til testen anvendes følgende opsætning:
Dette er en opdatering af til et eksisterende dokuments metadata - mere konkret dokument status bliver deprecated.
Overvejelser omkring opsætningen
Der er følgende muligheder for opsætning af testen:
Til testen anvendes følgende opsætning:
Testen hentes fra https://svn.nspop.dk/svn/components/performance/trunk i den revision, der er angivet nedenfor per release af NXRG.
Databasen klargøres; en tom database for både registry og repository
Der skal være en kørende version af NXRG, som er konfigureret med et tilhørende repository. Ligeledes skal dokumentdelings servicen være sat op foran NXRG.
host.properties skal være sat korrekt op jf. arosiis performance test framework. Repository unique id angives i REPOSITORY_UNIQUE_ID for iti-61 kaldene. Dvs for testplanerne nxrg_opret_iti61.template.jmx, nxrg_replace_iti61.template.jmx og nxrg_deprecate_iti57.template.jmx
I sourcekodens samplers findes metoden getPath(). Denne sti ned til det enkelte endpoint varierer efter, hvilken version af servicene som rammes og om der køres med eller uden DGWS. Det kan derfor være nødvendig at rette test sourcerne inden testen køres.
Eksempel for iti-18:
Når databasen er på plads, DDS, NXRG og repository kørende og testen konfigureret, kan følgende køres.
(distributionen 15min.template.jmx kører 15 minutter)
run_test.sh -h hosts.properties -p 9012 aftaler nxrg_opret 15min
run_test.sh -h hosts.properties -p 9012 ihe nxrg_opret_iti61 15min
run_test.sh -h hosts.properties -p 9012 aftaler nxrg_erstat 15min
run_test.sh -h hosts.properties -p 9012 ihe nxrg_replace_iti61 15min
run_test.sh -h hosts.properties -p 9012 aftaler nxrg_hent.template.jmx 15min
run_test.sh -h hosts.properties -p 9012 ihe nxrg_hent_iti18_by_reference 15min
run_test.sh -h hosts.properties -p 9012 ihe nxrg_deprecate_iti57 15min
NXRG Release | Performance test revision |
---|---|
*.*.* | (TBD) eller nyere |
'* ' betyder hvilken som helst