Testdekking in softwaretesten: hoe meet je dat?
⚡ Slimme samenvatting
Testdekking in softwaretesten meet in hoeverre een reeks tests daadwerkelijk een applicatie test. Het brengt ongeteste vereisten, codefragmenten en risico's aan het licht, zodat teams gerichte testgevallen kunnen toevoegen en met meetbare zekerheid releases kunnen uitbrengen.
Wat is testdekking?
Testdekking wordt gedefinieerd als een maatstaf in Softwaretesten die de hoeveelheid tests meet die door een reeks tests wordt uitgevoerd. Het omvat het verzamelen van informatie over welke delen van een programma worden uitgevoerd tijdens het uitvoeren van de testsuite om te bepalen welke takken van voorwaardelijke instructies zijn genomen.
Simpel gezegd is het een techniek om ervoor te zorgen dat uw tests uw code testen, of hoeveel van uw code u hebt uitgeoefend door de test uit te voeren.
Wat doet testdekking?
Bij een lopend project ondersteunt testdekking vier praktische activiteiten:
- Het vinden van het gebied van een vereiste dat niet is geïmplementeerd door een reeks testgevallen
- Helpt bij het creëren van extra testgevallen om de dekking te vergroten
- Het identificeren van een kwantitatieve maatstaf voor de testdekking, wat een indirecte methode is voor kwaliteitscontrole
- Het identificeren van betekenisloze testgevallen die de dekking niet vergroten
Voordelen van testdekking in software-engineering
Die activiteiten vertalen zich in concrete technische voordelen.
- Het kan de kwaliteit van de test garanderen
- Het kan helpen identificeren welke delen van de code daadwerkelijk zijn aangeraakt voor de release of oplossing
- Het kan alle beslissingspunten en paden in uw applicatie identificeren die niet zijn getest, waardoor u de testdekking kunt vergroten.
- Voorkomen defect lekkage
- Tijd, omvang en kosten kunnen onder controle worden gehouden
- Preventie van defecten in een vroeg stadium van de projectlevenscyclus
- Hiaten in eisen, testgevallen en defecten op unitniveau en codeniveau kunnen op een eenvoudige manier worden gevonden
Soorten testdekking
Dekking is nooit een enkel getal. Teams tracJe kunt verschillende typen tegelijk tegenkomen, omdat elk type een andere vraag over dezelfde suite beantwoordt. De onderstaande tabel groepeert de typen die je het vaakst tegenkomt.
| Dekkingstype: | Wat het meet | Best gebruikt voor: |
|---|---|---|
| Verklaring (regel) dekking | Uitvoerbare regels worden minstens één keer uitgevoerd. | Unit tests en audits van verouderde code |
| Dekking van de vestiging of beslissing | Ware en onware uitkomst van elke beslissing | Voorwaardelijke en validatielogica |
| Dekking van de aandoening | Elke booleaanse subuitdrukking als waar en als onwaar | Samengestelde EN- of OF-uitdrukkingen |
| Paddekking | Unieke routes die door een module worden afgelegd | Veiligheidskritische en financiële stromen |
| Functiedekking | Functies of methoden die door tests worden aangeroepen | API- en servicelagen |
| Vereisten dekking | Vereisten gekoppeld aan ten minste één test | Acceptatie en acceptatietracofficiële goedkeuring |
| Risicodekking | Geïdentificeerde risicogebieden hebben oefeningen uitgevoerd | Korte releasecycli |
De eerste vijf typen zijn maatregelen op codeniveau en behoren tot witte doos testen, terwijl de eisen en de risicodekking op het niveau van het testplan worden vastgelegd.
Wat zijn de belangrijkste verschillen tussen Code Dekking en testdekking?
Code dekking en testdekking zijn meettechnieken waarmee u de kwaliteit van uw applicatiecode kunt beoordelen.
Hier volgen enkele cruciale verschillen tussen stands met deze dekkingsmethoden:
| Kenmerken | Code Dekking | Testdekking |
|---|---|---|
| Definitie | Code De term 'coverage' wordt gebruikt wanneer applicatiecode wordt uitgevoerd terwijl een applicatie draait. | Testdekking betekent een algemeen testplan. |
| Doel | Code Dekkingsstatistieken kunnen het team helpen bij het monitoren van hun geautomatiseerde tests. | Met testdekking wordt gedetailleerd beschreven in hoeverre de schriftelijke codering van een applicatie is getest. |
| Subtypen | Code Dekking is onderverdeeld in subtypes zoals statementdekking, conditiedekking en branchdekking. Toggle-dekking, FSM-dekking. | Geen subtype van testdekkingsmethode. |
Testdekkingsformule
Om de testdekking te berekenen, moet u de onderstaande stappen volgen:
Stap 1) Tellen Yhet totale aantal regels code in het softwareprogramma dat u gebruikt het testen van
Stap 2) Tellen XHet aantal regels code dat alle testgevallen momenteel uitvoeren.
Nu moet je (X gedeeld door Y) vermenigvuldigd met 100 vinden. Het resultaat van deze berekening is het percentage testdekking.
Bijvoorbeeld:
Als een systeemcomponent 500 regels code bevat en alle bestaande testgevallen 50 regels code uitvoeren, dan is je testdekking:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Voorbeelden van testdekking
Het percentage alleen vertelt nooit het hele verhaal, zoals de onderstaande voorbeelden laten zien.
Voorbeeld 1:
Als je bijvoorbeeld een mes wilt testen, moet je controleren of het de groenten of het fruit nauwkeurig snijdt. Maar er zijn ook andere aspecten om op te letten, zoals of de gebruiker het mes comfortabel kan hanteren.
Voorbeeld 2:
Als je bijvoorbeeld de Kladblok-app wilt testen, is het essentieel om de belangrijkste functies te controleren. Maar je moet ook andere aspecten bekijken, zoals of Kladblok naar behoren reageert bij het gebruik van andere applicaties, of de gebruiker de app begrijpt en of de app niet vastloopt wanneer de gebruiker iets ongebruikelijks probeert te doen, enzovoort.
Testdekkingstechnieken
Beide voorbeelden wijzen op dezelfde conclusie: het behalen van een dekkingsdoel hangt minder af van het schrijven van meer tests en meer van het kiezen van de juiste testontwerptechniek. De onderstaande technieken vergroten de dekking terwijl ze de dekking behouden.ping De suite is klein.
- Grenswaardeanalyse: Selecteert invoerwaarden aan de randen van elk geldig bereik, waar defecten zich het meest concentreren. Zie grenswaarde analyse voor behandelde dossiers.
- Equivalentiepartitionering: Groepeert invoerwaarden die de applicatie identiek behandelt, zodat één enkel geval veilig een hele klasse van waarden kan vertegenwoordigen.
- Testen van beslissingstabellen: Omvat combinaties van omstandigheden en hun verwachte uitkomsten binnen één enkel raster.
- Testen van de overgang tussen staten: Oefent alle geldige en ongeldige overgangen tussen applicatiestaten uit.
- Basispad testen: Leidt de minimale set onafhankelijke paden af uit de controlestroomgrafiek.
- Risicogebaseerde testen: Rangschikt functies op basis van hun impact op het bedrijfsleven en behandelt de functies met het hoogste risico eerst.
- Verkennende testen: Het legt hiaten bloot die in scenario's en berichtgeving nooit aan het licht komen.
Hoe kan testdekking worden bereikt?
Zodra de technieken zijn gekozen, zorgen vier beproefde methoden voor de dekking.
- Testdekking kan worden gedaan door gebruik te maken van statische beoordelingstechnieken zoals peer reviews, inspecties en walkthrough
- Door de ad-hocdefecten om te zetten in uitvoerbare testgevallen
- Op codeniveau of unit-testniveau kan testdekking worden bereikt door gebruik te maken van de geautomatiseerde codedekkings- of unit-testdekkingstools
- Functionele testdekking kan worden gedaan met behulp van de juiste testmanagementtools
Hoe de testdekking te verbeteren
Het vaststellen van de dekking is het beginpunt; het verhogen ervan is een herhaalbare routine. Doorloop deze stappen aan het begin van elke releasecyclus.
- Stel het huidige getal als basislijn vast. Voer een dekkingsrapport uit en registreer de dekking per statement, branch en requirements afzonderlijk, zodat hiaten per module zichtbaar blijven in plaats van verborgen te blijven in één projectgemiddelde.
- Koppel tests aan vereisten. Bouw een tracEen haalbaarheidsmatrix die elke vereiste koppelt aan ten minste één testgeval. Elke lege rij is een bevestigde tekortkoming, geen vermoeden.
- Modules rangschikken op risico. De logica achter betalingen, authenticatie en gegevensmigratie verdient een veel uitgebreidere behandeling dan een statisch helpscherm. Investeer het budget daarom daar waar een fout de meeste schade zou aanrichten.
- Voeg negatieve gevallen en randgevallen toe. Lege invoer, te grote waarden, netwerktime-outs en permissiefouten bereiken vertakkingen die nooit in de 'happy-path'-tests voorkomen.
- De testniveaus worden in lagen opgebouwd. Combineren testen van een eenheid, integratie testenEn end-to-end controles, omdat elk niveau datgene dekt wat de andere niveaus structureel niet kunnen.
- Automatiseer de regressietestsuite. Promode stabiele gevallen in automatisering testen en ze binnen de CI/CD-pijplijn na elke commit.
- Overbodige gevallen buiten gebruik stellen. Verwijder dubbele tests die extra uitvoeringsminuten toevoegen zonder ook maar één regel code te onthullen.
- RevBekijk de trend elke sprint. Track-dekking naast defectdichtheidEen toenemende lekkage bij een vlakke dakbedekking is een vroeg waarschuwingssignaal voor een blinde vlek.
⚠️ Waarschuwing: Beschouw 100 procent niet als het doel. Een testsuite met 85 procent dekking en sterke beweringen beschermt een release veel beter dan een suite met 95 procent oppervlakkige controles die code uitvoeren zonder het resultaat te verifiëren.
Nadelen van testdekking
Een verzekering blijft waardevol, maar kent wel beperkingen die het waard zijn om te vermelden voordat er percentages worden genoemd.
- De meeste taken in de testdekking zijn handmatig, omdat er geen tools zijn om te automatiseren. Daarom kost het veel moeite om de vereisten te analyseren en testgevallen te creëren.
- Met testdekking kunt u kenmerken tellen en deze vervolgens meten aan de hand van verschillende tests. Er is echter altijd ruimte voor beoordelingsfouten.

