Padtesten en basispadtesten in software met voorbeelden
⚡ Slimme samenvatting
Basis Path Testing is een white-box-techniek die testgevallen afleidt uit de logische paden door een programma, waarbij gebruik wordt gemaakt van een controlestroomgrafiek en cyclomatische complexiteit om de minimale onafhankelijke padenset te vinden.

Wat is padtesten bij het testen van software?
Padtesten is een structurele testmethode waarbij de broncode van een programma wordt gebruikt om elk mogelijk uitvoerbaar pad te vinden. Het helpt om alle fouten in een stukje code te identificeren. Deze methode is ontworpen om alle of geselecteerde paden via een computerprogramma uit te voeren.
Elk niet-triviaal programma bevat veel mogelijke uitvoeringspaden. Het testen van al deze paden is zowel moeilijk als tijdrovend, en de meeste overlappen elkaar. Basispadtesten verminderen die redundantie door de kleinste set paden te identificeren die elke instructie en elke vertakking minstens één keer uitvoert.
Basispadtesten in software-engineering
Basispad testen in software-engineering is een Wit Box Testen methode waarbij testgevallen worden gedefinieerd op basis van stromen of logische paden die door het programma kunnen worden genomen. Het doel van basispadtesten is het definiëren van het aantal onafhankelijke paden, zodat het benodigde aantal testgevallen expliciet kan worden gedefinieerd om de testdekking te maximaliseren.
In software engineeringBasispadtesten omvatten de uitvoering van alle mogelijke blokken in een programma en bereiken een maximale paddekking met het minste aantal testgevallen. Het is een hybride methode van vertakkingstesten en padtestmethoden.
Een eenvoudig voorbeeld maakt het idee concreet.
Het bovenstaande stroomdiagram bevat voorwaardelijke instructies, waardoor de besturing de uitgang via meer dan één route kan bereiken. Er zijn drie onafhankelijke paden nodig om dit te realiseren:
- Pad 1: 1,2,3,5,6, 7
- Pad 2: 1,2,4,5,6, 7
- Pad 3: 1, 6, 7
Hoe teken je een controlestroomgrafiek?
Elke stap van het testen van basispaden is afhankelijk van de controlestroomgrafiek, dus het is belangrijk om nauwkeurig te beschrijven hoe deze is opgebouwd.
- Knooppunt: Een reeks instructies die altijd samen worden uitgevoerd, weergegeven als een cirkel. Een reeks instructies zonder vertakkingen valt samen tot één enkel knooppunt.
- Edge: Een overdracht van controle van het ene knooppunt naar het volgende, weergegeven als een pijl. Alleen via de randen kan de controle zich verplaatsen.
- Predicaatknooppunt: Een knooppunt dat een voorwaarde bevat, met twee of meer uitgaande randen. Deze bepalen de complexiteitswaarde.
- Regio: Een gebied begrensd door randen en knooppunten. Het aantal regio's plus één is tevens gelijk aan de cyclomatische complexiteit.
Neem bijvoorbeeld een korte module met twee beslissingen:
if (a > b) { // node 1, predicate max = a; // node 2 } else { max = b; // node 3 } if (max > limit) { // node 4, predicate alert(); // node 5 } return max; // node 6
De graaf heeft 6 knooppunten en 6 randen, wat volgens de randformule V(G) = 6 – 6 + 2 = 2 oplevert. De predicaattelling geeft hetzelfde antwoord sneller: 2 beslissingen plus 1 is gelijk aan 3 onafhankelijke paden door de twee takken samen. Gebruik de vorm die je betrouwbaar kunt berekenen en controleer het resultaat met de andere.
Twee regels die de meeste fouten voorkomen. Ten eerste een samengestelde aandoening zoals als (x > 0 && y > 0) Dit telt als twee predicaatknooppunten, niet één, omdat de kortsluiting een tweede beslissing creëert. Ten tweede draagt een lus één predicaatknooppunt bij, ongeacht hoe vaak deze wordt herhaald.
Stappen voor het testen van basispaden
De basisstappen die betrokken zijn bij het testen van basispaden omvatten:
- Teken een controlegrafiek (om verschillende programmapaden te bepalen)
- Berekenen Cyclomatische complexiteit (statistieken om het aantal onafhankelijke paden te bepalen)
- Zoek een basisset van paden
- Genereer een testgevallen om elk pad te oefenen
Voordelen en beperkingen van basispadtesten
Voordelen van basispadtesten
- Het helpt het aantal overbodige tests te verminderen
- Het vestigt de aandacht op programmalogica
- Het vervangt willekeurige selectie van testgevallen door een analytische basis.
- Testgevallen waarbij de oefenbasisset elke instructie in een programma minstens één keer uitvoert
Beperkingen van basispadtesten
- Het kan de ontbrekende code niet vinden. Een vereiste die nooit is geïmplementeerd, heeft geen pad en er wordt dus geen test voor gegenereerd. Testen op basis van het basispad moet worden gecombineerd met testen op basis van de vereisten.
- Het aantal paden neemt snel toe. Geneste lussen en samengestelde voorwaarden verhogen de complexiteit snel, en een module met een V(G) van meer dan 20 wordt op deze manier onpraktisch om te behandelen.
- Dekking is niet hetzelfde als correctheid. Het uitvoeren van een pad bewijst dat de code werkt, niet dat deze het juiste antwoord oplevert. Elke test heeft nog steeds een zinvolle bewering nodig.
- Data-afhankelijke paden. Sommige paden zijn alleen bereikbaar met specifieke combinaties van invoerwaarden die moeilijk of zelfs onmogelijk te construeren zijn.

