Fra idé til åpen kildekode
Som en del av vårt oppdrag for Skatteetaten har Testify hatt gleden av å ta del i utviklingen av en kraftig og innovativ testdatagenerator utviklet i prosjektet Rike Syntetiske Testdata (RST).
Nå tilgjengeliggjør Skatteetaten Testdatageneratoren som åpen kildekode, slik at alle kan generere korrekte, sammensatte syntetiske testdata som understøtter både automatiserte og manuelle tester av komplekse virksomhetsprosesser. Dette markerer et viktig steg i arbeidet med å gjøre testdatahåndtering mer effektiv, skalerbar og tilgjengelig – ikke bare i Skatteetaten, men for hele det norske digitaliseringsøkosystemet.
Storskala testautomatisering i Skatteetaten
Testify har gjennom de siste 15 årene bidratt til å utvikle testmetodikk og verktøy som har muliggjort mer effektiv og automatisert testing i Skatteetaten. Arbeidet startet tilbake i 2010, i de første moderniseringsprosjektene for innsamling av grunnlagsdata og innrapportering av inntekt fra arbeidsgivere.
Der ble det implementert et avansert rammeverk for automatiserte ende-til-ende-tester, bygget på noen tydelige prinsipper:
- Syntetisk og dynamisk genererte testdata som alltid er gyldige – ingen behov for opprydding eller tilbakestilling av testmiljøer.
- Automatisk beregning av forventet resultat uten avhengighet til systemets starttilstand.
- Støtte for flere inputkanaler i samme ende-til-ende-prosess.
- Konfigurerbare verifikasjonspunkter som beregner forventede resultater dynamisk.
- Et kraftig rammeverk for initialisering og oppsett som gjør at testene kan kjøre i alle miljøer.
Formålet var å kunne teste mottak og behandling av de mange typer grunnlagsdata som Skatteetaten håndterer; alt fra lønns-, og kontoinformasjon til rapporter om eiendom, boligsparing for ungdom, pensjon og ytelser, barnepass, drosjenæringen, primærnæringene inkludert opplysninger om produksjon av melk, korn og poteter, og mye, mye mer.
Et unikt aspekt ved dette rammeverket var at testene kunne kjøre kontinuerlig, og dermed generere ekstremt store datamengder. Dette muliggjorde ende-til-ende testing av systemene både funksjonelt og ikke-funksjonelt i produksjonslike situasjoner, for eksempel ved å sende inn millioner av kontoopplysninger i produksjonslikt tempo, samtidig som andre datatyper ble behandlet parallelt.
Dette første rammeverket, internt bare kalt Testklienten, har siden blitt videreutviklet og raffinert av et eget testutviklingsteam i Testsenteret i Skatteetaten i over et tiår. I dag dekker det ende-til-ende-testing av nesten alle forretnings- og databehandlingsprosesser i Skatteetaten. Resultatet er et av de mest omfattende og avanserte testmiljøene i norsk offentlig sektor.
Rike Syntetiske Testdata (RST) blir født!
Etter hvert som moderniseringen i Skatteetaten nådde fagsystemene i skatteprosessen, ble det naturlig å løsrive selve testdatagenereringen som en egen, mer fleksibel og kraftigere komponent, som ikke bare kan benyttes til ende-til-ende testing av enkeltprosesser, men til sammenhengende testing «på tvers» av fagområder, og samtidig også til isolert systemtesting! Dette ledet til RST-prosjektet, et prosjekt drevet av Skatteetaten, hvor Testify har bidratt sterkt i utviklingen av Testdatageneratoren. Den har et modulært spesifikasjonsspråk og en rekke egenskaper som gjør den ideell for testing av komplekse og sammensatte forretningsprosesser.
Selve datagenereringen i Testdatageneratoren er ikke noe spesielt fancy. Det er “plain code” bygget opp av gode utviklingsprinsipper for å generere filer på ulike strukturerte format, som f.eks. XML, JSON, CSV og flatfil. Det gøyale med verktøyet er hvordan vi har laget et domenespesifikt språk for spesifikasjon av testdata og integrert en variant av “Kotlin playground” i applikasjonen for å kunne spesifisere testdata med automatisk utfylling for økt brukerhjelp. Tilsvarende funksjonalitet som man har i utviklerverktøy (IDE) når man skriver kode. Hoveddelen av brukergrensesnittet består med andre ord av et editorvindu hvor man kan skrive spesifikasjoner for testdata med automatisk utfylling på det detaljnivået man har behov for.
Den store fordelen med et spesifikasjonsspråk for testdata er at det gir utrolig stor fleksibilitet for brukerne samtidig som det er veldig enkelt for de som forvalter applikasjonen å utvide med nye datatyper uten å måtte forholde seg til brukergrensesnittet. Ulempen er at noen brukere kan synes verktøyet får et litt teknisk og utviklernært uttrykk ettersom det dukker opp et par klammeparenteser her og der. Det sagt, så opplever vi ikke at dette har vært noen brems for adapsjon av verktøyet og at det omfavnes av de som tar det i bruk. I Skatteetaten sin kontekst, hvor datadomenet er såpass stort og omfattende og verktøyet skal støtte flere hundre ulike datatyper er spesifikasjonsspråket helt avgjørende for at produktet skal være utvidbart.
For å opprette en person med skatteplikt og skattemelding, som er tre nokså komplekse datastrukturer kan brukeren helt enkelt spesifisere følgende:
person{
skatteplikt{}
skattemelding{}
}
Det blir da opprettet en person med skatteplikt og skattemelding og dataene er konsistente, f.eks. ved at regnskapskommunen i skatteplikten stemmer overens med kommunenummer i bostedsadressen og skattemeldingen er beregnet ut ifra den skatteplikten personen har. Dersom brukeren har mer spesifikke ønsker til de ulike dataobjektene kan de jobbe seg nedover i objektet og spesifisere de detaljene de ønsker, som for eksempel:
person {
persondata {
alder = 33
personstatus {
midlertidig
}
}
skatteplikt {
skattepliktTilSvalbard {
skattepliktType {
begrenset
}
}
}
skattemelding {}
}
I dette tilfellet er det viktig for brukeren at personen er 33 år med midlertidig opphold på Svalbard og kan følgelig spesifisere nødvendige egenskaper på personen og skatteplikten for at testdataene gjenspeiler nøyaktig det. På denne måten har brukeren stor grad av frihet til å selv velge det abstraksjonsnivået som passer til domenekunnskap og behov for hver enkelt datatype de ønsker å opprette testdata for.
Verktøyet har et integrasjonslag med interne systemer i Skatteetaten, slik at brukeren kan velge å opprette dataene inn et gitt testmiljø for å kjøre systemintegrasjonstester. Alternativt kan brukeren bare generere filene og selv gjøre det de vil med dem i etterkant.
For Skatteetaten har dette verktøyet vært helt sentralt i transformasjonen med å kunne teste sine forretningsprosesser med syntetiske data gjennomgående i alle testnivåer i testpyramiden. Ikke minst når Skatteetaten skal gjøre integrasjonstester mot andre eksterne, hvor verktøyet brukes til å berike det syntetiske Test-Norge med syntetiske skattedata som gjøres søkbare i den åpent tilgjengelige søkeløsningen Tenor Testdatasøk.
Testdatageneratoren som åpen kildekode
Nå tar Skatteetaten et nytt steg med støtte fra Testify: Sammen gjør vi denne kompetansen tilgjengelig for andre gjennom åpen kildekode, hvor Testdatageneratoren legges ut på Skatteetatens GitHub.
Ved å åpne denne løsningen for å opprette “rike syntetiske testdata” håper vi å bidra til:
- Økt kvalitet i offentlig og privat IT-utvikling
- Enklere tilgang til realistiske, sammensatte testdata
- Bedre grunnlag for innovasjon og samarbeid på tvers av virksomheter
Dette er et prosjekt som både Skatteetaten og Testify er utrolig stolte av, og som representerer kjernen i det vi brenner for: Å gjøre testing smartere, mer automatisert og mer tilgjengelig – for alle.
Det som ligger i den åpne versjonen av Testdatageneratoren er en komplett kjørende applikasjon med moduler for spesifikasjonsspråk, testdatagenerering og brukergrensesnitt. Den er strippet for Skatteetaten sin kontekst, slik at det skal være et rent og ryddig startpunkt for å lage et spesifikasjonsspråk og generering av datatyper som passer for organisasjonen som ønsker å ta den i bruk. Applikasjonen(e) finner dere på Skatteetatens GitHub:
Vi håper andre offentlige og private aktører ønsker å bruke dette som et springbrett for å få til bedre syntetiske testdata i sine organisasjoner. Både til interne testformål, men også for å bidra inn i dugnaden med å berike det syntetiske Test-Norge med gode syntetiske testdata fra sitt domene til test av integrasjoner med andre.
Last ned og utforsk applikasjonen fra GitHub og ta kontakt med oss dersom dere trenger bistand til å tilpasse dette til deres domene. Vi har svart belte i dette.



Tilbake til blogg