Page History
...
Anchor | ||||
---|---|---|---|---|
|
Testvejledning
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
1 Introduktion
1.1 Formål
1.2 Læsevejledning
1.3 Dokumenthistorik
1.4 Definitioner og referencer
2 Overblik over tests
2.1 Unittest
2.2 Integrationstest (til verifikation af funktionalitet)
2.3 Performancetests
2.4 Endurance-tests
3 Afviklede tests
3.1 Unittest
3.2 Integrationstest til verifikation af funktionalitet
3.2.1 Forberedelse
3.2.2 Setup
3.2.3 Testdata
3.2.4 Testdesign
Anchor | ||||
---|---|---|---|---|
|
3.2.5 Gennemførelse af integrationstests
4 Generering af code coverage-rapporter
4.1 Code coverage for unittests
4.1.1 Code coverage for unittests
4.1.2 Code coverage for unittests og integrationstests
...
Anchor | ||||
---|---|---|---|---|
|
...
Følgende tests er afviklet som en del af komponentudviklingen og i forbindelse med release. Der henvises til \[Testrapport\] for fastholdelse af resultaterne fra gennemførte tests ifm. release.
Anchor | ||||
---|---|---|---|---|
|
Unittests ligger i:
- *\src\test\java*
...
under de forskellige maven-artefakter, der indgår i Svareksponeringsservice XDS-adaptere. Resultatet af kørte tests opsummeres ved byg, beskrevet i \[Udviklerguide\].
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
- Dokumentdelingsservices (og dennes afhængigheder til øvrige services, se herunder).
- Svareksponeringsservice XDS-adaptere
\\
I stamdata skal testbruger være defineret som testperson med autorisationsnr.
Wiki Markup
Testbrugeren skal være whitelistet til at anvende dokumentdelingsservicen, se afsnit 3.2.3.
Der skal være etableret forbindelse til backend-systemet, hvilket potentielt indebærer oprettelse af laboratoriesvar i Laboratoriedatabanken.
Dokumentdelingsservicen skal være konfigureret til at anvende Svareksponeringsservice XDS-adaptere, som beskrevet i \[Konfiguration\].
Anchor | ||||
---|---|---|---|---|
|
I Figur 1 er vist et setup til integrationstests baseret på en stub for Svareksponerneringsservicen.
Bemærk, at test-klientens tests fungerer uafhængigt af, hvordan de forskellige services er deployeret, hvorfor en vanlig opsætning af Dokumentdelingsservicen i NSP test1-miljø el. lign. kan anvendes.
Anchor | ||||
---|---|---|---|---|
|
Under forudsætning af, at der findes testdata for testpatienter som beskrevet i afsnit 3.2.3, kan der alternativt køres integrationstests mod Svareksponeringsservice XDS Adaptere deployeret ved brug af Svareksponeringsservice hos Laboratoriedatabanken. Dette setup er vist i Figur 2.
Anchor | ||||
---|---|---|---|---|
|
...
Testklienten benytter et test-medarbejdercertifikat (MOCES) hentet fra et maven-artefakt etableret i regi af NSI, hvor organisationen bag er whitelistet til at benytte Dokumentdelingsservicen.
I testklienten er med property-fil konfigureret brug af følgende test-bruger, der er oprettet som testperson med autorisationsnummer i testmiljøets stamdata, f.eks. på NSP-miljø test1:
Læge Karl Hoffmann Svendsen, aut.reg.nr. NS362.
I testklienten er hardcoded anvendelse af følgende testpatienter:
Cpr-nummer for testpatient | Beskrivelse |
---|---|
2512484916 | Cpr-nummer for testpatient med data i backend-systemet |
0101010101 | Cpr-nummer for testpatient uden data i backend-systemet |
...
Denne kan kopieres og tilpasses til aktuelt miljø. Efterfølgende Maven-kommandoer gør brug af tilpassede property-fil gennem argumentet:
Code Block |
---|
-Dtestclient-property-file=<sti til tilpasset testclient.properties> |
Er argumentet ikke anført benytter Maven-scripts den oprindelige property-fil.
Integrationstests gennemføres ved at udføre maven-kommando fra integrationtest-directory:
Code Block |
---|
cd integrationtest mvn verify –Pexternal-test |
...
-Dtestclient-property-file=<sti til tilpasset testclient.properties> |
Eksempel:
Code Block |
---|
cd integrationtest
mvn verify -Pexternal-test -Dtestclient-property-file=./src/test/resources/testclient.properties |
Integrationstestene understøttes kun ved brug af Svareksponeringsservice stubben "labreportservicestub".
Bemærk, at visse integrationstests kræver konfigurationsændringer og derfor er sat til ignored. Disse kan, efter konfigurationsændring som beskrevet i deres javadoc, køres selvstændigt ved at udkommentere ignore og tilføje argument –Dit.test=<testklasse-navn> til ovenstående maven-kommando.
...
Code coverage-rapport omfattende alene unittests genereres ved at gennemføre følgende trin:
- I kommandoprompt i SXA hovedfolder (folderen med parent pom) udføres:
Code Block |
---|
mvn clean site cobertura:cobertura |
- Genereret code coverage-rapport kan nu læses i folderen target/site/cobertura
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
- Cobertura etableres, ved enten:
- Download fra fx sourceforge (https://sourceforge.net/projects/cobertura/) og udpakning
- Kildekode hentes fra https://github.com/cobertura/cobertura/releases og bygges
- Ant installeres
- Download fra http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.4-bin.tar.gz
I Ant's lib folder bør følgende jars være tilgængelige
Jar
Fremskaffelse
asm-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-analysis-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-commons-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-tree-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
asm-util-5.0.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
cobertura-2.1.1.jar
Indeholdende i Cobertura-2.1.1-bin-tar
commons-lang3-3.3.2.jar
Indeholdende i Cobertura-2.1.1-bin-tar
oro-2.0.8.jar
Indeholdende i Cobertura-2.1.1-bin-tar
slf4j-api-1.7.5.jar
Indeholdende i Cobertura-2.1.1-bin-tar
slf4j-log4j12-1.6.4.jar
Bør være i lokal m2 folder
log4j-1.2.16.jar
Bør være i lokal m2 folder
- Installation af Cobertura modul på WildFly:
Følgende Cobertura afhængigheder kopieres fra cobertura-2.1.1-bin.tar.gz til <wildfly folder>/modules/net/sourceforge/cobertura/main
Jar
Destination
<arkiv>/cobertura-2.1.1.jar
<modul-main>/
<arkiv>/lib/asm-tree-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-commons-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-util-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/asm-analysis-5.0.1.jar
<modul-main>/lib/
<arkiv>/lib/oro-2.0.8.jar
<modul-main>/lib/
En module.xml fil skabes i samme main mappe med følgende indhold:
Code Block <?xml version="1.0" encoding="UTF-8"?>
...
<module xmlns="urn:jboss:module:1.1" name="net.sourceforge.cobertura">
...
<resources> <resource-root path="."/>
...
<resource-root path="cobertura-2.1.1.jar"/>
...
<resource-root path="lib/asm-tree-5.0.1.jar"/>
...
<resource-root path="lib/asm-commons-5.0.1.jar"/>
...
<resource-root path="lib/asm-util-5.0.1.jar"/>
...
<resource-root path="lib/asm-analysis-5.0.1.jar"/>
...
<resource-root path="lib/oro-2.0.8.jar"/>
...
</resources>
...
<dependencies> <module name="asm.asm" />
...
<module name="javax.servlet.api" />
...
<module name="org.slf4j"
...
/> </dependencies>
...
</module>
Default udskrives coveragefilen (cobertura.ser) i <wildfly folder>/bin mappen. Ønskes filen udskrevet til en anden mappe skabes filen cobertura.properties i main mappen med indeholdet:
Code Block net.sourceforge.cobertura.datafile=<sti>/cobertura.ser
For at få Cobertura til at skrive coverage af integrationstests, er der to muligheder:
Metode
Installation og brug
coberturaFlush.war servicen
- coberturaFlush.war er at finde i Cobertura-2.1.1-bin-tar
Før kopiering til <WildFly>/standalone/deployments skal følgende linje tilføjes til coberturaFlush.war/META-INF/MANIFEST.MF:
Code Block Dependencies: net.sourceforge.cobertura
- Efter ændring deployeres coberturaFlush.war og servicen udstiller
- ”<host>/coberturaFlush/
- flushCobertura”. Kald til denne service ved f.eks. Curl får Cobertura til at skrive coverage filen. (Se trin 3.3).
Genstart af WildFly - Cobertura skriver automatisk coverage fil ved genstart af WildFly
- Denne mulighed kræver følgende ændring i <wildfly folder>/bin/standalone.conf med tilføjelse af:
Code Block JAVA_OPTS="$JAVA_OPTS -Djboss.shutdown.forceHalt=false"
Bemærk at når WildFly startes med instrumenteret kode, da startes "optagelse" af code coverage. Ved kald til coberturaFlush servicen skabes et billede af hvordan coverage ser ud nu. Dette billede skrives til <wildfly>/bin/cobertura.ser, hvor filen bliver additivt opdateret, hvis filen findes i forvejen, eller skabes, hvis den ikke findes. "Optagelse" af code coverage bliver først reset ved genstart af WildFly og fjernelse af <wildfly>/bin/cobertura.ser.
- Genstart af WildFly
Anchor | ||||
---|---|---|---|---|
|
...
- Kontroller, at wildfly bruger-account kan skrive cobertura.ser filen i output folderen (Standard <wildfly>/bin/cobertura.ser eller bestemmes i cobertura.properties)
- Kontroller, at stien til cobertura.ser er korrekt i filen cobertura/src/main/coberturaScripts/cobertura.properties under SXA-projektets hovedfolder.
Coberturas instrumentering af koden sker ved udførsel af følgende i kommandoprompt i SXA-projektets hovedfolder (folderen med parent pom):
Code Block mvn clean install -Dcobertura-build \
...
-Pdeploy-to-appserver \
...
-Denvironment-property-file=<sti til tilpasset environment.properties>
Bemærk, at argumentet –Pdeploy-to-appserver aktiverer en maven-profil, der kopierer ear/war-filer til WildFly deployment folder vha. properties. Som alternativ til dette argument kan ear/war-filer deployeres manuelt.
- Gen-deployer SXA-projektets services på WildFly
I samme folder udføres integrationstestene ved:
Code Block mvn verify –Pexternal-test __
...
-Denvironment-property-file=<sti til tilpasset environment.properties> \
...
-Dtestclient-property-file=<sti til tilpasset testclient.properties>
- Afslutning af coberturas optagelse gennemføres ved enten:
- Shutdown af WildFly, eller
- At åbne siden http://<host:port>/coberturaFlush/flushCobertura (fx via curl eller i browser. Bemærk at dette forudsætter at filen coberturaFlush.war blev kopieret og deployeret)
Flet code coverage-rapporter ved i kommandoprompt i SXA hovedfolder at udføre:
Code Block cd cobertura/target/coberturaReporting-coberturaReporting
...
ant –f cobertura.xml create-report
- Genereret code coverage-rapport kan nu læses i folderen cobertura/target/coberturaReporting-coberturaReporting/report
...