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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
EclEmma som kördes, så någon djupare analys mellan verktygen kommer inte tas upp i<br />
denna artikel. Några exempel på andra verktyg som också <strong>test</strong>ar code coverage är Clover,<br />
JTest, Agitar <strong>och</strong> Cobertura [2].<br />
3. <strong>Analysverktyg</strong><br />
<strong>Analysverktyg</strong> är olika former utav verktyg som man använder <strong>för</strong> att analysera det system<br />
som man utvecklar. På vilket sätt verktyget analyserar <strong>och</strong> vad den presenterar <strong>för</strong><br />
användaren är helt beroende på vad det är <strong>för</strong> typ utav verktyg. Det finns relativt många olika<br />
sorters verktyg <strong>och</strong> alldeles <strong>för</strong> lite tid att gå in på alla, där<strong>för</strong> kommer vi främst kolla på<br />
analysverktyg <strong>för</strong> <strong>test</strong> <strong>och</strong> jäm<strong>för</strong>a det med några andra verktyg som kollar på te.x. ”bad<br />
smells in code” (ett uttryck som Fowler har myntat i sin artikel Refactoring: Improving the<br />
Design of Existing Code [6]).<br />
3.1 <strong>Analysverktyg</strong> <strong>för</strong> <strong>test</strong><br />
Med analysverktyg <strong>för</strong> <strong>test</strong> brukar man mäta hur stor andel av <strong>kod</strong>en som man <strong>test</strong>ar i<br />
procent <strong>och</strong> kalla det <strong>för</strong> ”code coverage”. Det finns många olika sätt att mäta andelen<br />
<strong>test</strong>ad <strong>kod</strong> <strong>och</strong> där<strong>för</strong> är det en viktig detalj att ta reda på <strong>för</strong> det analysverktyg som man<br />
tänker använda sig av. Det absolut vanligaste <strong>och</strong> enklaste är att verktyget kollar vilka rader<br />
<strong>kod</strong> som blir exekverad av <strong>test</strong>er <strong>och</strong> vilka som inte blir det, som tillsammans bildar andelen<br />
<strong>test</strong>ad <strong>kod</strong> (code coverage). Ett mer avancerat sätt att mäta andelen <strong>test</strong>ad <strong>kod</strong> är att<br />
använda sig av ”multiple condition coverage”, vilket innebär att alla logiska uttryck granskas<br />
så att de har blivit <strong>test</strong>ade <strong>för</strong> både sant <strong>och</strong> falskt [4]. Lägg dock märke till att condition<br />
coverage bara anser delar med logiska uttryck <strong>och</strong> inte annan <strong>kod</strong>, det vill säga den kommer<br />
inte köra igenom <strong>och</strong> kolla så att all <strong>kod</strong> är <strong>test</strong>ad, utan bara de logiska bitarna. Det är där<strong>för</strong><br />
vanligt att de båda kombineras i ett analysverktyg.<br />
Oberoende av hur verktyget tar fram andelen <strong>test</strong>ad <strong>kod</strong> så kommer det produceras ett<br />
resultat som presenteras <strong>för</strong> användaren. Med hjälp utav detta resultat kan man som<br />
utvecklare sedan skriva bättre <strong>test</strong>fall alternativt fler <strong>test</strong>fall där det behövs. Detta<br />
underlättar utvecklingsprocessen i den mening att man i ett tidigt skede kan upptäcka<br />
buggar (genom i detta fall inse vilken del av <strong>kod</strong>en som man aldrig <strong>test</strong>ar). Man bör dock se<br />
upp med informationen som verktyget ger <strong>och</strong> inte bara blint skriva <strong>test</strong>fall så att varenda<br />
rad blir uppfyllt eller så att alla logiska uttryck <strong>test</strong>as i alla möjliga kombinationer. Anser man<br />
som utvecklare att det inte finns något behov av att <strong>test</strong>a en specifik del av <strong>kod</strong>en så bör<br />
man inte göra det. Hur stor del <strong>test</strong>ad <strong>kod</strong> är inget som kunden i slutändan kommer bry sig<br />
om i vilket fall som helst, utan bara hur bra systemet fungerar <strong>och</strong> att det är utan några<br />
buggar.<br />
Man bör också tänka på att om ett analysverktyg kan hitta delar av <strong>kod</strong> som är dåligt <strong>test</strong>ad<br />
så är det också sannolikt att det finns delar som är svagt <strong>test</strong>ade på ett sätt som verktyget<br />
inte kan hitta [4]. Dessutom är analysverktyg <strong>för</strong> bland annat code coverage något som<br />
ensamt inte kan styrka att ett system alltid kommer att fungera, till exempel så innebär inte<br />
100 % code coverage att systemet kommer fungera till 100 % av gångerna.<br />
4