Effektiv testing med rike anonymiserte testdata 20. september 2016 Helene Aune Skatteetaten Erik Rogstad
21. september 2016 Skatteetatens IT- og Servicepartner Skatteetatens leverandør av IT- og administrative tjenester Utvikler, drifter og forvalter Skatteetatens IT-systemer Systemutvikling Prosjektledelse Infrastruktur Sikkerhet Ca. 900 ansatte fordelt på kontorer i Oslo, Grimstad og Lillehammer
Testsenteret TESTSENTER 21. september 2016 Metode og verktøy Ressurser i prosjekt og linje Ressurser i Testsenteret Testinfrastruktur Testledere Testutvikling (Testklient) Testdata Testansvarlige Testmiljø Testere
Innhold Anonymiserte data Hvorfor? Til hva? Eksempler på bruk Hvordan vi har anonymisert våre data Anonymiseringsnivå Sentrale elementer Erfaringer 4
Begrepsavklaring Anonymiserte testdata Produksjonsdata som er anonymisert for å brukes til test Syntetiske testdata Data som er konstruert uten rot i virkelige data 5
Domene Innskudd, lån og renter Aksjer og fond Skattedata BSU Skattemanntall Barnepass Selvangivelse Skatteoppgjør Skattekort Parter 6
Hva er målet? Målet er å teste med mest mulig produksjonslike data for å avdekke realistiske feil Funksjonelle feil - eksempelvis sære men realistiske funksjonelle feil som man kun finner i testdatasett med god spredning Ikke-funksjonelle feil relatert til ytelse og robusthet som best avdekkes ved produksjonslike data og volum Komplementært til andre former for testing med syntetiske data 7
Alternativ 1: Syntetiske testdata Modell av inputdomenet 8
Alternativ 2: Skarpe produksjonsdata Det billigste og enkleste alternativet? (eller kanskje ikke?) Men NEI Juridisk utfordrende Og uansett jus, så ønsker ikke testere innsyn i sensitive data. De ønsker bare å teste med realistiske data. 9
Alternativ 3: Anonymiserte produksjonsdata Potensielt svært produksjonslike Representerer variasjon og særtilfeller fra produksjon Er anonyme, men bør behandles med noe mer forsiktighet enn helt syntetiske testdata 10
Hva får man med anonymiserte data? Rikt soneuavhengig testdatasett Kan teste de samme aspektene uavhengig av sikkerhetssone Bedre forutsetninger for å lykkes med å flytte primæransvaret for test ned i utviklingsteamene Mer effektiv manuell test testdata med komplette sammenhenger som testere kan kjenne seg igjen i Muliggjør kontinuerlig regresjonstest av komponenter i akseptansetest-tilstand på ferske produksjonsdata. 11
Hvilke data til hvilke type testing? Syntetiske data Velegnet til automatiserte tester Nødvendig der hvor det ikke allerede finnes reelle data Test mot eksterne Anonymiserte data Velegnet til utforskende funksjonell test på alle testnivåer Velegnet til tester som krever volum og variasjon Regresjonstester på siste testnivå før produksjonssetting Bør primært brukes til test internt 12
Modernisert systemportefølje Silo-systemer Modernisert systemarkitektur med felleskomponenter Eksterne grensesnitt Eksterne grensesnitt Eksterne grensesnitt Parter / Manntall Parter / Manntall Parter / Manntall Eksterne grensesnitt Ekstern Kommunikasjon Skatteinfo (Felles Datalager XML-dokumenter) Fagsystem 1 Fagsystem 2 Fagsystem 3 Fagsystem 1 Fagsystem 2 Fagsystem 3 Datalager Datalager Datalager Partsregister 13
Anonymiserer-komponent Eksterne grensesnitt Ekstern Kommunikasjon Skatteinfo (Felles Datalager XML-dokumenter) Anonymiserer Fagsystem 1 Fagsystem 2 Fagsystem 3 Partsregister 14
Brukscenario 1: Kontinuering strøm av anonymiserte produksjonsdata Produksjon Ekstern Kommunikasjon Anonymiserer Test Eksterne grensesnitt Ekstern Kommunikasjon Skatteinfo (Anonymiserte XML-dokumenter) Fagsystem 1 Fagsystem 2 Fagsystem 3 Anonymisert Partsregister 15
Brukscenario 2: Ad hoc-testing med anonymiserte testdata Produksjon Eksternt Kommunikasjon Anonymiserer Test Miljø 1 Ekstern Kommunikasjon Arkiv med anonymiserte filer Miljø 2 Ekstern Kommunikasjon 16
Brukscenario 3: Integrasjonstest mot skarpt miljø Sone med begrenset tilgang Intern testsone Anonymiserer Filmottak Skatteinfo (Anonymiserte XML-dokumenter) Anonymiserte filer Filmottak Fagsystem Skarpe filer Eksternt testmiljø Kvittering Anonymisert Partsregister 17
Hvordan har vi anonymisert data?
Konsistente anonymiserte data Formål: Anonymisere data på en slik måte at de er konsistente på tvers av komponenter og systemer og følgelig kan benyttes til test av integrasjoner og verdikjeder. Ekstern Kommunikasjon Skatteinfo (Anonymiserte XML-dokumenter) Anonymiserer Partsregister 19
Anonymiseringsnivå Overordnet: Anonymiserer all identifiserende informasjon på hver enkelt part, som fnr, dnr, orgnr, navn, adresse, fødselsdato, kontaktinformasjon, etc. Relasjonene i dataene beholdes Personer med hemmelig adresse osv. fjernes fra datagrunnlaget For utenom partsinformasjon må øvrige identifiserende informasjonselementer anonymiseres, som f. eks. kontonummer i Saldo/Rente-oppgaver fra bankene 20
Anonymisering av fnr/orgnr Anonymisering av fødselsnummer (og dnr): Anonymiserte fødselsnumre skal være gyldige fødselsnumre (validere) Anonymiserte fødselsnumre kan være i bruk av reelle parter Ivaretar fødselsår og kjønnsopplysning Anonymisering av organisasjonsnummer: Validerer med tanke på kontrollsiffer Ellers ingen logikk i organisasjonsnumre 21
Anonymisering av andre data Anonymisering av adresser: Anonymiserer alle felter, inkludert kommunenummer og postnummer Forsøker å opprettholde kvalitet og distribusjon av verdier, slik at det i størst mulig grad gjenspeiler produksjon Regler: Forhåndsdefinerte relasjoner Deterministisk Tilfeldig 22
Tips Prøv å finne det punktet her Produksjonslik datakvalitet Grad av anonymisering 23
Kostnad Utvikling av løsning: Fire ressurser i 15 måneder. To interne og to eksterne Drift og vedlikehold: Halv ressurs årlig Videreutvikling Skjer i takt med moderniseringen og bekostes av prosjektene 24
Skatteetaten
Søkbarhet For å effektivt nyttiggjøre seg av anonymiserte testdata trenger man gode søkemuligheter i dataene Vi jobber nå med en løsning rundt dette Tenker også på å lage modeller over inputdomene: Brukes til å søke etter testtilfeller som tilfredsstiller en gitt test suite Brukes til å generere syntetiske testdata for det som ikke er dekket av anonymiserte data 26