Motivationsfaktorer - Test inom Agila utvecklingsprojekt
Magnus Jonsson & Therese Hansson Flerårig erfarenhet från ett globalt utvecklingsprojekt där vi införde Agile & Scrum metodik i hela organisationen Våra HiQ-roller -> Scrum Masters, Test Ledare, genomför verksamhetsanalyser & förändringar inom testområdet, arbetar med Test i agila och traditionella utvecklingsmiljöer, håller kurser om Scrum och agil utveckling.
Dagens Agenda Belysa begreppen Agile, Scrum, Test Driven Utveckling, XP och Continuous integration Beskriva ett internationellt utvecklingsprojekt som gick från traditionell vattenfallsmetodik till agil systemutveckling ur ett testperspektiv... Prata om motivationsfaktorerna som erhålls när man arbetar med test inom agila utvecklingsprojekt och vad detta kan leda till
Vad innebär begreppet Agile Agile metodik kännetecknas av ett antal värderingar, attityder och principer. Dessa finns representerade i ett antal utvecklingsprocesser Exempel på processer är extreme Programming och Scrum. Agile betyder lättrörlig och grundtanken är att ge utvecklarna möjlighet till snabb utveckling där förändingar kan hanteras med en flexibel process. Människan och kommunikation människor emellan sätts i centrum. Agile manifesto: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
Agile 12 Principer Kundnöjdhet Välkomnar förändringar Regelbunden leverans av programvara Verksamhetskunniga & utvecklare arbetar tillsammans Motiverade individer Kommunikation öga mot öga Funktionalitet = framsteg Jämn arbetsbelastning Tekniskt perfektion & bra design förstärker anpassningsförmågan Enkelhet Självorganiserande team Utvärdering och anpassning
Vad innebär begreppet Scrum
Vad innebär begreppet Scrum Agil projektstyrningsmodell Fokus på vad som skall göras istället för hur det skall göras Ken Schwaber & Jeff Sutherland tog 1996 fram en formell beskrivning av scrum I scrum används särskilda roller, praxisar och element för att förbättra flexibilitet Arbetar i ca 30 dagars iterationer Fokus på det självorganiserade teamet Dagliga möten Scrum & XP en bra kombination
Mer om Scrum Omtalas som en Hyper-produktiv teknik Scrum ökar produktiviteten Enkla men fungerande regler Små team Dagliga stå upp möten Hanterbara mål Inga störande moment (avbrott) Två viktiga hörnstenar Självbestämmande (Team empowerment) Anpassningsbarhet (adaptability)
Det stora skiftet Scrum en FLIP Utvecklings teamen är i fokus - management är där för utvecklingsteamen Utvecklings teamen har full fokus på Att bygga kvalitetsmjukvara Hur man bygger kvalitetsmjukvara Management fokuserar på Business Vad som skall utvecklas Att röja hinder för utvecklingsteamen
Roller i Scrum Alla i samma båt vi måste segla tillsammans Product Owner Scrum Master Team
Effektiva Scrum Team har.. Högt fokus på att komma framåt Inga onödiga möten Hög kommunikation inom teamet Bra och fungerande processer inom teamet (kanske på organisationsnivå) Scrum Mastern som kommunikationskanal utåt En konstruktiv miljö En kreativ miljö Bra synlighet internt och externt Roligt!!!
Effektiva Scrum Team Teamet i ett rum Kommunikation förenklas Alla i teamet kan se taskboarden Målmedvetenhet ökar Kunskapsspridning alla kan ta del av diskussioner som förs mellan teammedlemmar Koordinering av uppgifter underlättas Samhörighet ökar
Blanda in kund tidigt
Blanda in kund tidigt Referensgrupp kravställande Domänexpertis Få feedback på implementerad funktionalitet i tidigt skede Kundens delaktighet skapar förståelse och acceptans Låt kunden få tillgång till wikin
Vad innebär begreppet Scrum
Vad innebär begreppet Extreme Programming XP är en systemutvecklingsmetodik Grundad av Kent Beck Ett antal värderingar och praxisar beskriver kärnan i XP Praxisar skall tillämpas beroende på situation XP bäst lämpat för team bestående av 2-10 personer
Vad är Continuous integration? Integrerar koden ofta med all annan kod Bygger schemalagt (natt) och automatiskt vid incheckning av ny körbar och testad kod Kräver automatiska regressionstester vilket ger snabb feedback Genom röda tester kan man se kodförändringar i andra moduler snabbt Potentiella verktyg: Cruise control triggar Ant script bygger Fitnesse, Cpp eller J Unit
Vad är vinsterna med Continuous integration? Lagom integration för varje mål man slipper en all in eller big bang approach Kan kontrollera att man själv inte förstör bygget innan man checkar in sin kod. Kan se om andra moduler gjort någon förändring av ett beroende som man själv använder. Hjälper en att alltid ha körbara byggen.
Test Driven Utveckling Test : styr utveckling Acceptans tester som specificerar en funktion inte validerar som design Specificerar och implementerar unit tester innan man kodar Viktigt med Code reviews
Projekt i verkligheten Siemens Medical Solution Elektroniska patientjournaler för sjukvårdsystem Distribuerad utveckling Indien, Tyskland, USA och Sverige Endast mjukvaruutveckling 35 Scrum team samtidigt (ca 8-10 pers/team) Integration med många andra system Siktade på FDA - medical device höga krav på kvalitet och person säkerhet
De stora övergången Siemens Medical Solution Varför Scrum? Hela projektet styrdes om till arbeta agilt Beslut av högsta ledningen inom Siemens Med - klassiska argument så som: Bättre flexibilitet Ökad produktivitet Ökad kvalitet Högre grad av kommunikation Snabb återkoppling - Utvecklar vi det kunderna vill ha Nöjdare kunder Kortare tid till marknad levererbar kod efter varje leverans
Interna och externa testkrav Siemens Medical Solution Vad fanns det då för krav på kvalitet och test? FDA Standarder - intern utbildning (HIPPA ) Siemens interna krav: Normala höga krav på kvalitativ (ett måste inom sjukvården). Hazards allt som kunde förknippas med personfara i systemet (ml vs cl, timmar vs minuter e.t.c)
Exempel av testning under en release Siemens Medical Solution Exempel: 1 Release = 8 Sprintar 1 st infrastruktur sprint (vid nya delar eller nyskapade team) 5 st utvecklings sprintar automatiska och manuella tester 2 st bugfix samt stabiliserings sprintar automatiska och manuella tester (men med högt fokus på alla manuella tester) Kundinstallation
crum & XP tillämpning på Siemens Medical Solution Parprogrammering Kollektivt ägande Kodstandard Kontinuerlig integration Små releaser Enkel Design Testning On-site kund
TDD tillämpning på Siemens Medical Solution 1. Granskning av user stories/krav 2. Skapande av automatiska tester för att täcka user stories i sprint (kan starta i sprinten före själva implementationen skall starta) 3. Person med testkompetens parprogrammerar med en utvecklare som skriver testkod på unit- och integrationsnivå 4. När kod är färdigskriven för en user story körs de automatiska testerna på de nivåer som är möjliga 5. De automatiska testerna fallerar, kod eller tester refaktoreras och automattester exekveras igen 6. När testerna exekveras med förväntat utfall kan man anse sig färdig med user storyn och implementationen 7. Sprint Demo genomförs genom demonstration av funktioner och tester
Tester på olika nivåer på Siemens Medical Solution Enhetstester Automatiska, exekverades i dagligt bygge, skapades av utvecklare Integrationstester (låg nivå) Automatiska, exekverades i dagligt bygge, skapades av utvecklare Funktionstester Automatiska, exekverades i dagligt bygge, skapades av annan person än utvecklaren, kund ofta involverad Acceptanstester Automatiska eller manuella, skapades av annan person än utvecklaren och gemensamt med kunden Alla automatiska tester exekverades varje natt, i nattligt bygge Ett representativt urval av tester valdes ut som smoke suite, för att kunna erhålla snabbt resultat vid incheckning av kod. Kördes i dagligt bygge så fort kod checkades in
Testverktyg som användes på Siemens Medical Solution JUnit för tester på lägsta nivån Fitnesse för tester på integrations-, funktions- och acceptansnivå
Testverktyg som användes på Siemens Medical Solution Fitnesse är ett open source verktyg Tester i Fitnesse skapas i en Wiki Fitnesse är ett test- och kommunikationsverktyg Använde Fitnesse tester för att klarifiera krav tillsammans med kunder och produktanalyster Med hjälp av Fitnesse gjordes kraven testbara i ett tidigt skede Fitnesse ett enkelt verktyg att använda Med Fitnesse testade vi på flera olika nivåer Alla scrum team skapade sina tester i Fitnesse och dessa exekverades när någon checkade in kod fångade många integrationsbuggar
Exempel på Done Definition Siemens Medical Solution 1. Implementerat (alla implementationsuppgifter klara) 2. Koden kommenterad, incheckad och körd emot senaste versionen 3. Granskad (eller parprogrammerad) och möter kodstandard 4. Byggs utan fel 5. Enhetstester/integrationstester implementerade och exekveras med positivt utfall 1. Funktions- och acceptanstester implementerade och exekveras med positivt utfall
Varför så bra för kvaliteten? Kraven gjordes testbara & tydliga tidigt Använde acceptanstester som förtydligande av kravspecifikationer Implementerade kod för att tillfredställa godkänna acceptanstester Kunderna delaktiga -> Snabb feedback om fel utveckling skett Alla automatiserade tester
Fråga Hur tror ni att arbete med test i agila utvecklingsprojekt kan vara motivationshöjande?
Motivationsfaktorer vid agilt testarbete Person som arbetar med test i förarsätet driver utveckling framåt Testresurs får tidigt inblick i funktionalitet som skall utvecklas Tydliga testmål under sprintarna -> högre målmedvetenhet och fokus skapas Inga givna roller alla i scrum teamet måste ta ansvar för att produkten testas Stora delar av testningen automatiserad manuellt arbete kan minimeras Goda chanser för testare att komma närmare koden
Motivationsfaktorer vid agilt testarbete Teamansvar framför individansvar alla teamets medlemmar är ansvariga för att uppnå sprintmål även med test.. Murar mellan utveckling och test rivs - test en given del av utvecklingen Involvering av kund leder till leverans av system med bättre kvalitet Varierande arbetsuppgifter i sprintarna - stimulerande Teamrum & tätare samarbete mellan utveckling och test gruppsammanhållning bättre Kunskapsspridning ökar sårbarhet minskar
Frågor