A.5 Diskussion
C.6.2 Metod
Metoden som har anv¨ants f¨or denna studie av riskhantering ¨ar inte helt konkret. Det finns s˚a m˚anga olika s¨att att hantera risker och att leta fram en som ¨ar b¨attre ¨an en annan ¨ar sv˚art. D¨arf¨or blir det sv˚art om inte om¨ojligt att f˚a fram ett b¨asta s¨att, det g˚ar d¨aremot att f˚a fram ett bra s¨att.
Metoden som anv¨andes f¨or att se om TRM skulle vara en bra l¨osning i detta projekt tycker jag har varit ganska legitim. Att ta reda p˚a kraven som kr¨avs f¨or att implementera TRM och sedan j¨amf¨ora med de erfarenheter och ˚asikter vi har haft s˚a f˚ar man ett tydligt svar. Det skulle givetvis varit b¨attre att faktiskt implementera TRM i projektet eftersom d˚a skulle det g˚a att avg¨ora sj¨alv om det fungerade eller inte.
K¨allorna jag har anv¨ant verkar alla legitima. K¨allorna som Higuera har medverkat i har citerats m˚anga g˚anger, vilket tyder p˚a att det inte bara ¨ar jag som tycker dessa ¨ar bra. Att jag anv¨ant tv˚a k¨allor fr˚an olika ˚ar som ¨ar skrivna av samma person ¨ar d¨aremot lite mindre bra. Det hade varit mer intressat om jag kunde f˚a flera k¨allor som visade p˚a samma sak. TRM verkar dock vara en metod som forskarna p˚a SEI har kommit p˚a sj¨alva s˚a att hitta yterliggare k¨allor f¨or den metoden blir sv˚art.
C.7
Slutsatser
Att f¨orbereda sig p˚a oplanerade risker kan vara sv˚art, inte n¨odv¨andigtvis f¨or att det ¨ar s˚a sv˚art att identifiera riskerna och hitta en m¨ojlig l¨osning n¨ar den v¨al intr¨affar. Problemet ¨ar att det blir hitta balansen mellan av hur mycket tid och energi du spenderar och hur mycket riskanalysen ger. Spenderar du v¨aldigt mycket tid p˚a att g¨ora en riskanalys och kontinuerligt kollar s˚a att den fortfarande st¨ammer kommer du spendera tid du skulle kunna ha anv¨ant till n˚agot annat. Denna tid kanske du skulle spara in om du st¨oter p˚a en h¨andelse som inte fanns med i din analys. Svaret p˚a fr˚agan blir d¨armed n˚agot vagt. Det finns inte ett b¨asta s¨att att hantera risker, s˚a att f˚a ett riktigt bra svar p˚a vilken metod skulle var b¨ast ¨ar om¨ojligt. Det som g˚ar s¨aga ¨ar att en bra riskhantering ¨ar betydligt jobbigare att ta fram ¨an den vi har haft i detta projekt. Det ¨ar mycket mer tidskr¨avande men i ett projekt som skulle f¨orlora v¨aldigt mycket p˚a medlemmar som f¨orsvinner eller andra st¨orre h¨andelser s˚a skulle det sannolikt vara v¨aldigt givande.
Hade jag genomf¨ort ett liknande projekt i framtiden s˚a hade jag velat ha en mer v¨alutvecklad riskanalys, fler fall med tydligare handlingar ifall risken intr¨affar. Skulle en risk intr¨affa skulle jag g˚a igenom riskanalysen ytterligare en g˚ang och se om n˚agra nya risker uppst˚att eller om det var n˚agon risk som p˚a v¨ag att intr¨affa. Jag hade dessutom sett till fr˚an b¨orjan att det fanns m¨oten varje vecka s˚a gruppen hade en bra kommunikation.
D. Hannes - Enhetstestning
D.1
Inledning
Under v˚aren 2015 genomf¨ordes projektet Detektor f¨or dricksvattenkvalitet vid Link¨opings univer- sitet. I detta projekt var jag testledare och det var i det sammanhanget jag blev nyfiken p˚a hur bra v˚ar testmetodik egentligen var.
D.1.1
Syfte
Syftet med den h¨ar utredningen ¨ar att unders¨oka hur v¨al v˚ar egen testmetodik fungerade i projektet Detektor f¨or dricksvattenkvalitet och hur vi hade kunnat f¨orb¨attra den.
D.1.2
Ordlista
Term Betydelse
Modul En modul ¨ar en st¨orre del av hela systemet, som syftar till att utf¨ora en eller flera deluppgifter.
Stub En bit kod som simulerar en st¨orre del av systemet i syfte att testa en mindre utan att beh¨ova k¨ora systemet i sin helhet.
Driver En bit kod som stimulerar en specifik del av systemet att utf¨ora sina upp- gifter i syfte att testa en mindre del av systemet utan att beh¨ova k¨ora systemet i sin helhet.
PRU Integrerad realtidsprocessor i BeagleBone Black. Statement En rad kod som utf¨or en operation.
BeagleBone Black Enkortsdator.
D.1.3
Fr˚agest¨allning
• Hur anv¨ander man enhetstestning p˚a ett effektivt s¨att i samband med en agil utvecklings- metodik?
– Finns det en risk att man missar f¨or m˚anga kritiska testfall?
– B¨or man komplettera enhetstestning med ytterligare testmetodiker som regressionstest och utf¨orliga systemtest? Eller ¨ar detta f¨or dyrt i ett relativt litet projekt?
• Hur v¨al fungerade den testmetodik vi valde?
– Hade v˚ar testning kunnat utf¨oras p˚a ett b¨attre s¨att?
D.1.4
Avgr¨ansningar
Jag har begr¨ansat utredningen till att unders¨oka metoderna enhetstestning, modultestning, integ- rationstestning, regressionstestning och systemtestning. Jag har ocks˚a begr¨ansat utredningen till att bara handla om test av funktionalitet. Kvalitetsv¨arden s˚a som prestanda och anv¨andbarhet kommer inte tas i beaktning.
D.2
Bakgrund
Att anv¨anda agila utvecklingsmetoder s˚a som Scrum eller Kanban har blivit popul¨art. Samtidigt har s˚a kallad enhetstestning blivit vanligare, d¨ar man i huvudsak testar varje liten del individuellt med hj¨alp av stubs och drivers och sedan utg˚ar fr˚an att det fungerar n¨ar man s¨atter ihop det. Det ¨
ar praktiskt att anv¨anda dessa i kombination, d˚a det inneb¨ar att man tidigt f˚ar svar p˚a huruvida den kodsnutt man skrivit fungerar och kan g˚a vidare till n¨asta arbetsuppgift.
D.3
Teori
I det h¨ar avsnittet redog¨ors f¨or hur de metoder som unders¨oks fungerar.
D.3.1
Agil arbetsmetodik
En agil arbetsmetodik bygger kring id´en att ett projekt kan anpassas till nya m˚al och f¨oruts¨attningar under utf¨orandet. En av de mest v¨alk¨anda metoderna ¨ar Scrum (What is Scrum? An Agile Fram- ework for Completing Complex Projects - Scrum Alliance, u. ˚a.). Den karakt¨ariseras bland annat av att det h˚alls frekventa m¨oten d¨ar aktuella arbetsuppgifter f¨ordelas p˚a arbetsgruppen.
D.3.2
Enhetstest
Under utvecklingen av ett system vill man som utvecklare kunna verifiera att man ¨ar p˚a r¨att sp˚ar och att den kod man skriver g¨or det den ¨ar t¨ankt att g¨ora. Dessutom vill man fixa simpla buggar p˚a en g˚ang medans man ¨ar insatt i koden. Utvecklaren skriver d˚a enhetstest.
Dessa test ¨ar sm˚a, enkla och testar enskilda funktioner i den aktuella kodbasen. Enhetstest beh¨over inte testa alla m¨ojliga testfall, ¨aven om detta kan vara ¨onskv¨art.
D.3.3
Modultest
Modultest testar samma funktioner som enhetstest, p˚a ungef¨ar samma s¨att. De testar funktio- naliteten hos en enskild modul. Skillnaden mot enhetstest ¨ar att modultest designas och utf¨ors av en testare i syfte att verifiera att den kod utvecklaren har skrivit faktiskt fungerar som t¨ankt. De ¨ar med f¨ordel n˚agot mer ing˚aende ¨an enhetstest och utf¨ors fr¨amst d˚a modulen n¨armar sig f¨ardigst¨allande.