Fitnesse i PDMT 05. mai 2008 Finn-Robert Kristensen Systemarkitekt
© Steria | 05/ Fitnesse i PDMTp2 Agenda Kort om Politiets data- og materielltjeneste (PDMT) Test av en saksbehandlingsløsning med Fitnesse Sidestruktur Hva har vi lært?
© Steria | 05/ Fitnesse i PDMTp3 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)
© Steria | 05/ Fitnesse i PDMTp4 Test av en saksbehandlingsløsning med Fitnesse Virksomhetskritisk applikasjon Mange regler Mange forskjellige arbeidsflyter som skal følges Mange roller og systemer involvert
© Steria | 05/ Fitnesse i PDMTp5 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
© Steria | 05/ Fitnesse i PDMTp6 Test av arbeidsflyt (2/2) Til dette bruker vi DoFixture Gjør det enkelt å ha kontroll på state Perfekt for testing av arbeidsflyter!
© Steria | 05/ Fitnesse i PDMTp7 Eksempel på DoFixture
© Steria | 05/ Fitnesse i PDMTp8 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); }
© Steria | 05/ Fitnesse i PDMTp9 Konfigurasjon SuiteFixture Definer en.SuiteSetUp side Genialt til å sette opp spring, hibernate Kjøres en gang Enkelt å styre runtime parametere Fungerer som ”en DoFixture”
© Steria | 05/ Fitnesse i PDMTp10 Eksempel på SuiteSetUp
© Steria | 05/ Fitnesse i PDMTp11 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(); }
© Steria | 05/ Fitnesse i PDMTp12 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
© Steria | 05/ Fitnesse i PDMTp13 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
© Steria | 05/ Fitnesse i PDMTp14 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!
© Steria | 05/ Fitnesse i PDMTp15 Takk for meg Spørsmål? Mail: