Testtäckning inom mjukvarutestning: Hur man mäter den
⚡ Smart sammanfattning
Testtäckning inom mjukvarutestning mäter hur mycket av en applikation en uppsättning tester faktiskt utför. Den avslöjar otestade krav, kodsökvägar och risker, så att team kan lägga till riktade fall och släppa med mätbar säkerhet.
Vad är testtäckning?
Testtäckning definieras som ett mått i Software Testing som mäter mängden tester som utförs av en uppsättning test. Det kommer att innefatta insamling av information om vilka delar av ett program som körs när testsviten körs för att avgöra vilka grenar av villkorliga uttalanden som har tagits.
Enkelt uttryckt är det en teknik för att säkerställa att dina tester testar din kod eller hur mycket av din kod du tränade genom att köra testet.
Vad gör testtäckning?
I ett liveprojekt stöder testtäckningen fyra praktiska aktiviteter:
- Att hitta området för ett krav som inte implementeras av en uppsättning testfall
- Hjälper till att skapa ytterligare testfall för att öka täckningen
- Identifiera ett kvantitativt mått på testtäckning, vilket är en indirekt metod för kvalitetskontroll
- Identifiera meningslösa testfall som inte ökar täckningen
Fördelar med testtäckning inom mjukvaruteknik
Dessa aktiviteter omsätts i konkreta tekniska fördelar.
- Det kan säkerställa kvaliteten på testet
- Det kan hjälpa till att identifiera vilka delar av koden som faktiskt berördes för releasen eller fixen
- Den kan fastställa alla beslutspunkter och vägar i din applikation som inte testades, vilket gör att du kan öka testtäckningen.
- Förhindra defekt läckage
- Tid, omfattning och kostnad kan hållas under kontroll
- Defektförebyggande i ett tidigt skede av projektets livscykel
- Luckor i krav, testfall och defekter på enhetsnivå och kodnivå kan hittas på ett enkelt sätt
Typer av testtäckning
Täckning är aldrig en enskild siffra. Lag track flera typer samtidigt, eftersom varje typ besvarar olika frågor om samma svit. Tabellen nedan grupperar de typer du stöter på oftast.
| Täckningstyp | Vad den mäter | Används bäst för |
|---|---|---|
| Utdragsradstäckning | Körbara rader körs minst en gång | Enhetstester och granskningar av äldre kod |
| Filial- eller beslutstäckning | Sant och falskt resultat av varje beslut | Villkorlig och valideringslogik |
| Skyddsskydd | Varje booleskt deluttryck som sant och som falskt | Sammansatta OCH- eller ELLER-uttryck |
| Vägtäckning | Unika rutter som tas genom en modul | Säkerhetskritiska och finansiella flöden |
| Funktionstäckning | Funktioner eller metoder som anropas av tester | API- och servicelager |
| Kravtäckning | Krav mappade till minst ett test | Acceptans och motståndtractuell signering |
| Risktäckning | Identifierade högriskområden som utövades | Korta frisättningscykler |
De första fem typerna är kodnivåmått och tillhör vit box testning, medan krav och risktäckning ligger på testplannivå.
Vad är de viktigaste skillnaderna mellan Code Täckning och testtäckning?
Code täckning och testtäckning är mättekniker som låter dig bedöma kvaliteten på din applikationskod.
Här är några kritiska skillnader mellan bås med dessa täckningsmetoder:
| Driftparametrar | Code Rapportering | Test täckning |
|---|---|---|
| Definition | Code täckningsterm som används när applikationskod utövas medan en applikation körs. | Testtäckning betyder övergripande testplan. |
| Mål | Code Täckningsstatistik kan hjälpa teamet att övervaka sina automatiserade tester. | Testtäckning ges detaljer om till vilken nivå den skriftliga kodningen av en applikation har testats. |
| subtyper | Code täckning uppdelad i undertyper som utdragstäckning, villkorstäckning, filialtäckning, Toggle-täckning, FSM-täckning. | Ingen undertyp av testtäckningsmetod. |
Testtäckningsformel
För att beräkna testtäckning måste du följa stegen nedan:
Steg 1) Att Räkna Y, det totala antalet kodrader i den programvara du använder testning
Steg 2) Att Räkna X, antalet kodrader som alla testfall för närvarande kör
Nu måste du hitta (X dividerat med Y) multiplicerat med 100. Resultatet av denna beräkning är din testtäckning %.
Till exempel:
Om antalet kodrader i en systemkomponent är 500 och antalet rader som körs i alla befintliga testfall är 50, då är din testtäckning:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Exempel på testtäckning
Procenten ensam är aldrig hela historien, vilket exemplen nedan visar.
Exempel 1:
Om till exempel ”kniv” är ett föremål du vill testa, måste du fokusera på att kontrollera om den skär grönsakerna eller frukterna korrekt eller inte. Det finns dock andra aspekter att leta efter, som att användaren ska kunna hantera den bekvämt.
Exempel 2:
Om du till exempel vill kontrollera anteckningsprogrammet är det ett måste att kontrollera dess viktiga funktioner. Du måste dock ta hänsyn till andra aspekter eftersom anteckningsprogrammet svarar på förväntat sätt när det använder andra program, att användaren förstår hur programmet används och att det inte kraschar när användaren försöker göra något ovanligt, etc.
Tekniker för testtäckning
Båda exemplen pekar mot samma slutsats: att nå ett täckningsmål beror mindre på att skriva fler tester och mer på att välja rätt testdesignteknik. Teknikerna nedan breddar täckningen samtidigt som de hållerping sviten liten.
- Randvärdesanalys: Väljer indata vid kanterna av varje giltigt område, där defekterna är mest förekommande. Se gränsvärdesanalys för bearbetade ärenden.
- Ekvivalenspartitionering: Grupperar indata som applikationen behandlar identiskt, så ett enskilt fall kan säkert representera en hel klass av värden.
- Testning av beslutstabeller: Täcker kombinationer av villkor och deras förväntade resultat inom ett enda rutnät.
- Testning av tillståndsövergång: Utövar alla giltiga och ogiltiga drag mellan applikationstillstånd.
- Testning av grundväg: Härleder den minsta uppsättningen oberoende vägar från kontrollflödesgrafen.
- Riskbaserad testning: Rangordnar funktioner efter affärspåverkan och täcker de med högst risk först.
- Utforskande testning: Avslöjar luckor som skrivna ärenden och rapporter om bevakning aldrig avslöjar.
Hur kan testtäckning uppnås?
När teknikerna är valda levererar fyra etablerade rutter täckningen.
- Testtäckning kan göras genom att utöva statiska granskningstekniker som peer reviews, inspektioner och genomgång
- Genom att omvandla ad-hoc-defekterna till körbara testfall
- På kodnivå eller enhetstestnivå kan testtäckning uppnås genom att använda de automatiska kodtäcknings- eller enhetstesttäckningsverktygen
- Funktionell testtäckning kan göras med hjälp av lämpliga testhanteringsverktyg
Hur man förbättrar testtäckningen
Att etablera täckning är utgångspunkten; att höja den är en upprepad rutin. Arbeta igenom denna sekvens i början av varje utgivningscykel.
- Baslinje det nuvarande numret. Kör en täckningsrapport och registrera täckning för utdrag, grenar och krav separat, så att luckor syns per modul snarare än är dolda inuti ett projektövergripande medelvärde.
- Mappa tester till krav. Bygg en tracett testfallsrutnät som länkar varje krav till minst ett testfall. En tom rad är ett bekräftat gap, inte en misstanke.
- Rangordna moduler efter risk. Betalnings-, autentiserings- och datamigreringslogik förtjänar mycket djupare täckning än en statisk hjälpskärm, så lägg budgeten där ett fel skulle skada mest.
- Lägg till negativa fall och kantfall. Tomma indata, överdimensionerade värden, nätverkstimeouts och behörighetsfel når grenar som happy-path-tester aldrig vidrör.
- Lägg till testnivåerna i lager. Kombinera enhetstestning, integrationstest, och heltäckande kontroller, eftersom varje nivå täcker det som de andra strukturellt inte kan.
- Automatisera regressionssviten. Promote stabila fall in i automatiseringstestning och avrätta dem inuti CI/CD pipeline efter varje commit.
- Pensionera överflödiga ärenden. Ta bort dubbletter av tester som lägger till körningsminuter utan att lägga till en enda otäckt rad.
- RevSe trenden varje sprint. Track täckning bredvid defektdensitetStigande läckage mot plant täcke är en tidig varning om en blind fläck.
⚠️ Varning: Betrakta inte 100 procent som målet. En svit på 85 procent med starka assertioner skyddar en release mycket bättre än 95 procent av ytliga kontroller som exekverar kod utan att verifiera något resultat.
Nackdelar med testtäckning
Täckningen förblir värdefull, men den har begränsningar som är värda att ange innan någon procentandel rapporteras.
- De flesta av uppgifterna i testtäckningen är manuella eftersom det inte finns några verktyg att automatisera. Därför kräver det mycket kraft att analysera kraven och skapa testfall.
- Testtäckning låter dig räkna funktioner och sedan mäta mot flera tester. Det finns dock alltid utrymme för bedömningsfel.

