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.

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 designfasen og eventuelle nye angrepsvektorer introdusert under koding er håndtert. 

Målgruppen for denne fasen er primært testere, sekundært personvernombud og sikkerhetsrådgiver, utviklere og prosjektleder.

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 dere rullere på de som gjennomfører testing. Videre er det hensiktsmessig å bruke sikkerhetsrådgivere for å analysereresultatene.

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. For eksempel om det overføres mer data enn hva programvaren har bruk for, hvilket kan medføre at slike data ikke er godt nok sikret eller ulovlig å bruke.

Last ned


Eksempel på en sjekkliste for testfasen (pfd)