Test
I denne aktiviteten skal testere sjekke at personvernkrav og sikkerhetskrav som ble satt i krav- og designfasene faktisk er implementert. De verifiserer også at kravene er riktig implementert.
Målgruppen for denne fasen er primært testere, sekundært personvernombud og sikkerhetsrådgiver, utviklere og prosjektleder.
Programvaren må testes for sårbarheter. Dette gjøres ved dynamisk testing, fuzz testing og penetrasjonstesting. Det er viktig å gjennomgå angrepsflaten for å verifisere at angrepsvektorer som ble avdekket i designfase, og eventuelle nye angrepsvektorer introdusert under koding, er håndtert.
Test om personvernkrav og sikkerhetskrav er implementert
Det bør lages tester for å sikre at personvernkrav og sikkerhetskrav er ivaretatt gjennom design og koding, og at kravene er riktig implementert i programvaren. Sjekklisten som ble utarbeidet i kravfasen bør gjennomgås for å verifisere at alle komponenter for å ivareta kravene er med i programvaren. Verifiseringen inkluderer eventuelle nye komponenter som er introdusert senere i utviklingsløpet i aktivitetene for design og koding. Ved test skal det brukes syntetiske personopplysninger.
Sikkerhetstesting
Dette innebærer en omfattende testing av programvaren for å avdekke sårbarheter og for å være sikker på at koden ivaretar sikkerhet og personvern på tilstrekkelig måte. Det bør utarbeides et regime for automatisk kjøring av testsett, for eksempel hver gang programvaren bygges.
Dynamisk testing
Test funksjonalitet i kjørende kode ved å bruke verktøy eller manuell gjennomgang som analyserer hvordan programvaren oppfører seg ved ulike brukerrettigheter og ved kritiske sikkerhetsfeil. Testingen skal sikre at brukerne kun får tilgang til den informasjonen og funksjonaliteten de har rettigheter til. Det er viktig å verifisere at forsøk på å tilegne seg uautorisert informasjon logges som sikkerhetsfeil. Eksempler på kjente sikkerhetsfeil som bør undersøkes mens programvaren kjøres er Cross-site scripting og SQL injection. Sesjonshåndtering, cookie-bruk og tilgangskontroll bør også testes for å sikre at personopplysninger ikke kan hentes ut via brukere som ikke er logget inn.
Fuzz testing
Denne testaktiviteten gjennomføres ved å fremprovosere feil i programvaren. Dette kan gjøres ved å bruke verktøy som sender tilfeldig og misformet data (feil inputverdier) i alle mulige input-felt til programvaren manuelt, eller ved bruk av intelligente verktøy som analyserer sårbarheter i webapplikasjoner. Dersom programvaren har flere grensesnitt, bør dere etterstrebe å teste hvert enkelt av dem. Det bør brukes verktøy som kan analysere output og applisere sikkerhetskontekst. Webproxies med mulighet for å skanne etter sårbarheter i egen programvare er eksempler på slike verktøy.
Penetrasjonstesting/sårbarhetsanalyse
For å oppdage sårbarheter, bør penetrasjonstest eller sårbarhetsanalyse kjøres før produksjonssetting, og ellers med jevne mellomrom. Slike sikkerhetstester skal være lovlige og autoriserte forsøk på å finne, utnytte og avdekke sårbarheter. Etter at testen er gjennomført skal det implementeres tiltak som gjør programvaren mer robust. Fordi kunnskap kan være personavhengig, bør det rulleres på hvem som gjennomfører testing. Videre er det hensiktsmessig å bruke sikkerhetsrådgivere for å analysere resultatene.
Gjennomgang av trusselmodell og angrepsflate
Ettersom en programvare kan avvike fra funksjonelle og tekniske spesifikasjoner som er satt under krav- og designfasen, må trusselmodellen og angrepsflaten gjennomgås når programvaren er komplett. Denne gjennomgangen skal verifisere at angrepsvektorer som ble avdekket i designfasen er håndtert. Den skal også verifisere at nye angrepsvektorer som kan ha blitt introdusert i koding er identifisert og håndtert, og at trusselmodellen gjennomgås opp mot nyutviklet programvare. Siden krav kan ha endret seg underveis i utviklingsprosessen, må personvernkonsekvenser vurderes på nytt. Et eksempel er om det overføres mer data enn hva programvaren har bruk for, noe som kan medføre at slike data ikke er godt nok sikret eller ulovlig å bruke.