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

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

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

Saved successfully!

Ooh no, something went wrong!