Kontinuerlig kvalitetskontroll
Hvordan komme helt i mål
© Steria About the speaker Johannes Brodwall Chief Scientist, Steria Arrangerer Oslo XP meetup Arrangerer Smidig 2008 Blog:
© Steria Hva er poenget med kontinuerlig integrasjon?
© Steria Invester i dag for å unngå defekter Invester mindre for å sette i produksjon Lever når som helst
© Steria Hva er kontinuerlig integrasjon?
© Steria
Enhetstester Funksjonelle tester Systemet kjøres i et testrammeverk
© Steria Resultatet:
© Steria Hver innsjekking blir testet
© Steria
Spørsmål:
© Steria Vil dette finne alle defektene i systemet?
© Steria Nei!
© Steria Kun de som blir kjørt i testrammerverket Kun de vi tenkte på Og så er det ytelsestesting…
© Steria Så: Hva må bør vi gjøre?
© Steria (Hint: CI handler om å investere nå i stedet for senere)
© Steria Invester mer nå!
© Steria Min løsning: Automatisert systemtest
© Steria (Egentlig: Automatisert regresjonstest på integrasjon- og systemtestnivå)
© Steria Vi ønsker:
© Steria Realistisk konfigurasjon Realistisk belastning Realistisk variasjon
© Steria
Hvordan automatisere systemtest 1.Automatisk bygg (og enhetstest) 2.Rens opp gammel data 3.Last ned siste versjon 4.Hent produksjonsdata 5.Spill av produksjonsdata 6.Sjekk resultatet 7.Send resultat via
© Steria ”Støtte du på problemer?”
© Steria Nei
© Steria Nei, egentlig ikke Bare noen utfordinger!
© Steria Hva var vrient? 1.Installasjon 2.Integrasjon 3.Simulering 4.Verifisering
© Steria Installasjon
© Steria Automatiser installasjon 1.Scriptet, reproduserbar install 2.Forenkling (Erstattet WebSphere med Jetty) (Så sammen komponenter) 3.Reduser integrasjonsbehovet 4.Identiske noder
© Steria (Sidevirkninger) Forenkler installasjonsrutinene Forenkler designet Forenkler overvåking
© Steria Integrasjon
© Steria Integrasjon Hva med avhengigheter?
© Steria Forenkle integrasjon 1.Ikke integrer, gjør det sjæl 2.Simulerer det andre systemet 1. Simulerte svar 2. Ta vare på data(data centric) 3.Integrer med testversjon
© Steria Simulering
© Steria Simulering Utsett systemet for realistisk last
© Steria Simulering Svært systemavhengig
© Steria Simuler produksjon I vårt tilfelle: Filer Crawler (Dyrkorn & Watne) Lastgenerator (D&W) Ta opp og spill av HTTP requester
© Steria Verifisering
© Steria Verifisering Gikk det bra?
© Steria Verifisere resultatet Sammenlign med produksjon Se på logger Se på dataintegritet
© Steria Avstemming 1.Lagre testresultatet i database 2.Lagre produksjonsresultat i basen 3.Full outer join på naturlige nøkler 4.Finn manglende eller avvikende 5.Filtrer ut kjente avvik
© Steria
Dato
© Steria Antall filer
© Steria Okay
© Steria Mangler
© Steria Ekstra
© Steria ExtraAvviker
© Steria Extra Kjente unntak
© Steria Konsistenssjekk SQL uttrykk som plukker ut rare data
© Steria Logging Pass på loggingen Feillogger må være tomme når det ikke er feil
© Steria (Fint for drift)
© Steria Resultat:
© Steria Hver bygg blir systemtestet
© Steria
Vil dette avdekke alle feil?
© Steria Neida
© Steria Forenklet integrasjon Kjører ikke lenge nok Er det driftbart?
© Steria Hva nå? Automatisert preproduksjon
© Steria Hva nå? Automatisert preproduksjon
© Steria Preproduksjon Kjører ”neste” versjon Kjører i tandem med prod En uke: Forfremmes til prod Overvåkes 9:00-16:00
© Steria
Først når du tenker som en drifter, kan du mestre systemet
© Steria Resultat:
© Steria Hver leveranse herdes
© Steria
Vil dette avdekke alle feil?
© Steria Svaret er fortsatt nei
© Steria Er kravene riktig? Gleder løsningen brukerne? Endrer brukeren oppførsel? Feide vi noe under teppet?
© Steria Målet: Lever etter hver iterasjon
© Steria
Den triste sannhet: Pilotproduksjon etter hver iterasjon
© Steria Pilot production
© Steria Hvorfor levere etter hver iterasjon?
© Steria Utnytt muligheter Finn flere feil Prøv den enkleste løsningen først Finn nye krav raskere
© Steria Levér verdi til brukerne!
© Steria Resultat:
© Steria Finn feil billigst mulig
© Steria Alltid klar til leveranse
© Steria Invester mer nå, mindre senere
© Steria Målet: Lever etter hver iterasjon
© Steria (Og da kan du kaste bugtrackeren)
© Steria Takk for oppmerksomheten!