06.08.2013 Views

Analysverktyg för kod och test - Lunds Tekniska Högskola

Analysverktyg för kod och test - Lunds Tekniska Högskola

Analysverktyg för kod och test - Lunds Tekniska Högskola

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Eftersom kursen är relativt liten <strong>och</strong> därmed har en begränsning så fanns det inte plats <strong>för</strong><br />

att under utvecklingen studera huruvida olika sorters analysverktyg kunde ha en inverkan på<br />

hur bra systemet fungerade eller hur bra code coverage som uppkom. Hade iterationerna<br />

varit längre <strong>och</strong> projektet i sig varit längre hade man kunnat tänka sig att in<strong>för</strong>a att under<br />

varje iteration <strong>test</strong>a ett nytt analysverktyg <strong>för</strong> att sedan jäm<strong>för</strong>a hur resultatet blev från en<br />

iteration till en annan. Men även det sättet att gå tillväga har sina brister <strong>för</strong> vad säger att<br />

svårighetsgraden <strong>och</strong> de problem man måste slåss med är lika stora i varje iteration?<br />

5.2 <strong>Analysverktyg</strong><br />

<strong>Analysverktyg</strong> är ett väldigt kraftigt hjälpmedel under en utveckling, så länge som man vet<br />

hur det ska användas <strong>och</strong> man är in<strong>för</strong>stådd i hur det fungerar. Vet man inte det så hade<br />

man nog klarat sig bättre utan det. <strong>Analysverktyg</strong> är heller inget som hjälper en användare<br />

att garantera att systemet fungerar. Är till exempel <strong>test</strong>erna dåligt <strong>test</strong>ade <strong>och</strong> bara<br />

utformade <strong>för</strong> att skapa så hög code coverage som möjligt så kan det mycket väl vara så att<br />

det uppkommer buggar senare i utvecklingen som man inte har funderat på. Detta hade vi<br />

tydliga exempel på i vårt team där deltagarna lyckats uppnå en relativt hög code coverage,<br />

men när det efter iteration fyra önskades en <strong>test</strong>release av systemet till mig <strong>och</strong> min<br />

coaching partner, så upptäckte vi att systemet inte alls fungerade som det var tänkt längre.<br />

På något sätt har deltagarna lyckats skriva <strong>test</strong>fall <strong>för</strong> att <strong>test</strong>a så att specifika delar av<br />

systemet fungerar, men inte alls tänkt på att <strong>test</strong>a så att allt fungerar tillsammans. Vilket är<br />

ett otroligt bra exempel på att man inte ska lita blint på att fungerande <strong>test</strong>er innebär att ett<br />

system fungerar till 100 %.<br />

I artikeln “A survey of coverage based <strong>test</strong>ing tools” tas det upp att 60 % - 70 % är en rimlig<br />

siffra <strong>för</strong> cod coverage, vilket dock kan uppfattas som ganska lågt i ett projekt där man<br />

implementerar TDD, det vill säga alla <strong>test</strong> skrivs <strong>för</strong>st innan något implementeras. Detta kan<br />

man se genom att vårt team hade en code coverage på 74 % utan att använda sig av något<br />

verktyg <strong>och</strong> med hjälp av ett lyckas höja det med 10 % utan några vidare svårigheter. Sen<br />

huruvida vårt projekt är <strong>för</strong> litet eller <strong>för</strong> enkelt <strong>för</strong> att man ska kunna dra den<br />

generaliseringen eller inte är svårt att avgöra. Man skulle kunna tänka sig att efter hand som<br />

att ett system växer sig större blir det svårare <strong>och</strong> svårare att <strong>test</strong>a <strong>och</strong> även om det är<br />

meningen att man ska skriva <strong>test</strong>fall <strong>för</strong> allt, så är det inte alltid lätt eller rimligt att <strong>test</strong>a allt.<br />

Det blir nog svårare <strong>och</strong> svårare att få hög code coverage efter hand som systemet blir större<br />

<strong>och</strong> dess komplexitet ökar.<br />

6. Slutsater<br />

<strong>Analysverktyg</strong> är viktiga hjälpmedel <strong>för</strong> att öka produktiviteten under utvecklingen av<br />

programvara. För att de ska vara användbara är det viktigt att folk lär sig hur de fungerar<br />

innan de använder sig av dem <strong>och</strong> att de som använder dem inte litar blint på allt som<br />

verktyget säger utan istället mer ser det som en rekommendation.<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!