Code Täckningsverktyg: Utlåtande-, gren- och beslutstestning
⚡ Smart sammanfattning
Code täckning är ett white-box-mått som rapporterar i vilken grad källkoden har använts av en testsvit, helping team lokaliserar otestade uttalanden, grenar, villkor och sökvägar som dolda defekter kan uppta.

Vad är Code Rapportering?
Code täckning är ett mått som beskriver i vilken grad källkoden för ett program har testats. Det är en form av vit box testning vilket hittar de områden i ett program som inte används av en uppsättning testfall. Det hjälper också till att skapa ytterligare testfall för att öka täckningen och för att bestämma ett kvantitativt mått på kodens täckning.
I de flesta fall samlar ett kodatäckningssystem in information om det program som körs. Det kombinerar sedan den informationen med källkodsinformation för att generera en rapport om testsvitens kodatäckning.
Varför använda Code Täckningstestning?
Här är några främsta anledningar till att använda kodtäckning:
- Det hjälper dig att mäta effektiviteten av testimplementeringen.
- Den erbjuder en kvantitativ mätning av testning.
- Den definierar i vilken grad källkoden har testats.
Code Täckningsmetoder
Följande är de viktigaste metoderna för kodtäckning:
- Utlåtande täckning
- Beslutstäckning
- Filialtäckning
- Toggle Täckning
- FSM täckning
Utlåtande täckning
Utlåtande täckning är en white box-testteknik där alla körbara satser i källkoden körs minst en gång. Den används för att beräkna antalet satser i källkoden som har körts. Huvudsyftet med satstäckning är att täcka alla möjliga sökvägar, rader och satser i källkoden.
Uttryckstäckning används för att härleda scenarier baserat på strukturen i den testade koden.
Vid white box-testning koncentrerar sig testaren på hur programvaran fungerar. Med andra ord koncentrerar sig testaren på källkodens interna funktion gällande kontrollflödesdiagram eller flödesscheman.
Generellt sett, i all programvara, om man tittar på källkoden, finns det en mängd olika element som operatorer, funktioner, ...ping, undantagshanterare och så vidare. Baserat på indata till programmet kan det hända att vissa kodsatser inte körs. Målet med kodtäckning är att täcka alla möjliga sökvägar, rader och satser i koden.
Låt oss förstå detta med ett exempel på hur man beräknar täckningsgraden för kontoutdrag. Här tar vi två olika scenarier för att kontrollera procentandelen av kontoutdragstäckningen för varje scenario.
Källa Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Scenario 1: Om A = 3, B = 9
De gulmarkerade satserna är de som exekveras enligt scenariot. Antal exekverade satser = 5, Totalt antal satser = 7, så satstäckning = 5/7 = 71 %.
Scenario 2: Om A = -3, B = -9
De gulmarkerade satserna är de som exekveras enligt scenariot. Antal exekverade satser = 6, Totalt antal satser = 7, så satstäckning = 6/7 = 85 %.
Men överlag, om du ser det, täcks alla påståenden av båda scenarierna. Så vi kan dra slutsatsen att den totala täckningen av påståenden är 100 %.
Vad omfattas av Statement Coverage?
- Oanvända uttalanden
- Död Code
- Oanvända grenar
- Saknade uttalanden
Beslutstäckningstestning
Beslutstäckning är en white box-testteknik som rapporterar sanna eller falska resultat för varje booleskt uttryck i källkoden. Målet med beslutstäckningstestning är att täcka och validera all tillgänglig källkod genom att kontrollera och säkerställa att varje gren av varje möjlig beslutspunkt exekveras minst en gång.
I denna täckningstyp kan uttryck bli komplexa, vilket gör det svårt att uppnå 100 % täckning. Det är därför olika metoder används för att rapportera detta mått. Dessa metoder prioriterar de mest kritiska kombinationerna. Även om det liknar grentäckning ger det större känslighet för kontrollflödet.
Exempel på beslutstäckning
Tänk på följande kod:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Scenario 1: Värdet på a är 2. Beslutet blir "nej" om (a>5) är markerat, så beslutstäckning = 50 %.
Scenario 2: Värdet på a är 6. Beslutsresultatet är "Ja". Om (a>5) är markerat, så är beslutstäckningen = 50 %.
| Testfall | Värdet på A | Produktion | Beslutstäckning |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Provning av grentäckning
Filialtäckning är en white box-testmetod där varje resultat från en kodmodul (sats eller loop) testas. Syftet med branch coverage är att säkerställa att varje beslutsvillkor från varje branch exekveras minst en gång. Det hjälper till att mäta andelar av oberoende kodsegment och hitta sektioner som inte har några brancher.
Till exempel, om utfallen är binära, måste du testa både Sanna och Falska utfall.
Formeln för att beräkna filialtäckning:
Exempel på filialtäckning
För att lära dig om filialens täckning, betrakta samma exempel som användes tidigare. Filialens täckning kommer även att beakta den ovillkorliga filialen.
| Testfall | Värdet på A | Produktion | Beslutstäckning | Filialtäckning |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Fördelar med filialtäckning:
- Låter dig validera alla grenar i koden.
- Hjälper dig att säkerställa att ingen förgrening leder till något avvikande i programmets drift.
- Tar bort problem som uppstår på grund av testning av utdragstäckning.
- Låter dig hitta områden som inte testas med andra testmetoder.
- Låter dig hitta ett kvantitativt mått på kodens täckning.
- Grentäckning ignorerar grenar inom booleska uttryck.
Tillståndstäckningstestning
Tillståndstäckning, eller uttryckstäckning, är en testmetod som används för att testa och utvärdera variablerna eller deluttrycken i en villkorlig sats. Målet med villkorstäckning är att kontrollera individuella utfall för varje logiskt villkor. Villkorstäckning ger bättre känslighet för kontrollflödet än beslutstäckning. I denna täckning beaktas endast uttryck med logiska operander.
Om ett uttryck till exempel har booleska operationer som AND, OR eller XOR, indikerar det de totala möjligheterna. Villkorstäckning garanterar inte fullständig beslutstäckning.
Formeln för att beräkna tillståndstäckning:
För ett uttryck med två operander finns det fyra möjliga kombinationer: TT, FF, TF och FT. Betrakta indata X=3, Y=4 (x b) FALSKT, vilket ger en villkorstäckning på 1/4 = 25 %.
Täckning för ändlig tillståndsmaskin
Täckning av en ändlig tillståndsmaskin är utan tvekan den mest komplexa typen av kodatäckningsmetod. Detta beror på att den påverkar designens beteende. I denna täckningsmetod måste man titta på hur många gånger specifika tillstånd besöks eller passeras. Den kontrollerar också hur många sekvenser som ingår i en ändlig tillståndsmaskin.
Vilken typ av Code Täckning att välja
Detta är definitivt det svåraste svaret att ge. För att välja en täckningsmetod måste testaren kontrollera om:
- kod som testas har en eller flera oupptäckta defekter,
- kostnaden för den potentiella straffavgiften,
- kostnaden för förlorat rykte,
- kostnaden för förlorad försäljning och så vidare.
Ju högre sannolikhet är att defekter kommer att orsaka kostsamma produktionsfel, desto allvarligare täckningsnivå måste du välja.
Code Täckning kontra funktionell täckning
| Code Rapportering | Funktionell täckning |
|---|---|
| Visar hur väl källkoden har använts av din testbänk. | Mäter hur väl designens funktionalitet har täckts av din testbänk. |
| Använder aldrig en designspecifikation. | Använder en designspecifikation. |
| Gjord av utvecklare. | Gjord av testare. |
Code Täckningsverktyg
Här är en lista över viktiga verktyg för kodtäckning:
| Verktygets namn | BESKRIVNING |
|---|---|
| Cobertura | Ett verktyg för öppen källkodstäckning. Det mäter testtäckning genom att instrumentera en kodbas och analysera vilka kodrader som körs och vilka som inte gör det när testsviten körs. |
| Clover | Klöver (OpenClover) minskar också testtiden genom att bara köra de tester som täcker den applikationskod som modifierats sedan den föregående versionen. |
| DevPartner | DevPartner gör det möjligt för utvecklare att analysera Java kod för kodkvalitet och komplexitet. |
| Emma | EMMA stöder klass-, metod-, linje- och grundläggande blocktäckning, aggregerad på källfils-, klass- och metodnivå. |
| Kalistick | Kalistick är en tredjepartsapplikation som analyserar kod från olika perspektiv. |
| CoView och CoAnt | Ett verktyg för kodtäckning för mätvärden, skapande av simulerade objekt, kodtestbarhet, täckning av sökvägar och grenar med mera. |
| Bullseye för C++ | BullseyeCoverage är ett verktyg för kodtäckning för C++ och C. |
| Ekolod | Sonar är ett verktyg för öppen kodtäckning som hjälper dig att hantera kodkvalitet. |
Fördelar och nackdelar med att använda Code Rapportering
| Fördelar | Nackdelar |
|---|---|
| Användbart för att utvärdera ett kvantitativt mått på koddäckning. | Även när en specifik funktion inte är implementerad i designen, rapporterar koddäckningen fortfarande 100 % täckning. |
| Låter dig skapa extra testfall för att öka täckningen. | Det är inte möjligt att avgöra om alla möjliga värden för en funktion testades med hjälp av kodtäckning. |
| Låter dig hitta de områden i ett program som inte utförs av en uppsättning testfall. | Code Täckningen säger inte hur mycket och hur väl du har täckt din logik. |






