150 likes | 304 Views
Fitnesse i PDMT. 05. mai 2008 Finn-Robert Kristensen Systemarkitekt. Agenda. Kort om Politiets data- og materielltjeneste (PDMT) Test av en saksbehandlingsløsning med Fitnesse Sidestruktur Hva har vi lært?. Kort om PDMT. Utvikler nye tjenester og systemer for Politiet
E N D
Fitnesse i PDMT 05. mai 2008 Finn-Robert Kristensen Systemarkitekt
Agenda • Kort om Politiets data- og materielltjeneste (PDMT) • Test av en saksbehandlingsløsning med Fitnesse • Sidestruktur • Hva har vi lært? Fitnesse i PDMT
Kort om PDMT • Utvikler nye tjenester og systemer for Politiet • Et av Norges største prosjekter SIS II under arbeid • Ny plattform og ny arkitektur (SOA) Fitnesse i PDMT
Test av en saksbehandlingsløsning med Fitnesse • Virksomhetskritisk applikasjon • Mange regler • Mange forskjellige arbeidsflyter som skal følges • Mange roller og systemer involvert Fitnesse i PDMT
Test av arbeidsflyt (1/2) • Utgangspunkt i en user-story (suite) • Tester skrives som scenarioer • Arbeidsflyter kan ha forskjellige utfall • Består av mange manuelle steg Fitnesse i PDMT
Test av arbeidsflyt (2/2) • Til dette bruker vi DoFixture • Gjør det enkelt å ha kontroll på state • Perfekt for testing av arbeidsflyter! Fitnesse i PDMT
Eksempel på DoFixture Fitnesse i PDMT
Kode for DoFixture • import fitlibrary.DoFixture; • public class MottaMeldingFixture extends DoFixture { • private final MeldingService meldingService = new MeldingService(); • private final SakService sakService = new SakService(); • private long sakId; • public void mottaMelding(String pathToXml) { • sakId = meldingService.opprett(pathToXml); • } • public Sak getSak() { • return sakService.hentSak(sakId); • } • public Arbeidsflyt getArbeidsflyt() { • return sakService.hentArbeidsflytForSak(sakId); • } • } Fitnesse i PDMT
Konfigurasjon • SuiteFixture • Definer en .SuiteSetUp side • Genialt til å sette opp spring, hibernate • Kjøres en gang • Enkelt å styre runtime parametere • Fungerer som ”en DoFixture” Fitnesse i PDMT
Eksempel på SuiteSetUp Fitnesse i PDMT
Kode for SuiteFixture • import fit.Fixture; • import fitlibrary.suite.SuiteFixture; • public class SisSuiteSetupFixture extends SuiteFixture { • public void datasourceUrl(String url) { • System.setProperty("datasource.url", url); • } • public Fixture mottaMelding() { • return new MottaMeldingFixture(); • } • } Fitnesse i PDMT
Sidestruktur (1/2) • Hvert prosjekt har en hovedside • Utvikler spesifikke settings • Utvikler har kopi av server (wiki import) • Delt opp i to konfigurasjoner • Stabil konfigurasjon • Utviklingskonfigurasjon Fitnesse i PDMT
Sidestruktur (2/2) • Under stabil konfigurasjon: • Alle tester • Inneholder alle suiter og tester • Inndelt i suiter på ”epic” nivå • Ferdige tester • Symbolske lenker til ”Alle tester” • Tester som er ok og venter på å bli godkjent • Bruker keywords • Godkjente tester Fitnesse i PDMT
Hva har vi lært? • Test gjennom tjeneste-laget • Gjenbruk testdata med bruk av includes • Lag egne testdata sider • Mock eksterne tjenester/systemer • Kjør testene regelmessig! Fitnesse i PDMT
Takk for meg • Spørsmål? • Mail: frk@steria.no Fitnesse i PDMT