Boundary Value Analysis – A Black Box Testing Technique
We weten al dat Black box testing inhoudt dat het systeem wordt gevalideerd zonder dat het interne ontwerp bekend is. We hebben ook de valkuilen van Equivalence Partitioning besproken en hoe deze kunnen falen bij partitiegrenzen. In het geval dat je ons artikel over Gelijkwaardigheids partities nog niet hebt gelezen, zou ik je sterk aanraden om het eerst te lezen voordat je dit artikel leest. In dit artikel bespreken we een andere black box test techniek, bekend als Boundary Value Analysis. We zullen ook zien hoe deze techniek een aanvulling is op equivalentie partitioneren.
- Wat is Grenswaarde Analyse?
- Hoe doe je Grenswaarde Analyse?
- Boundary Value Analysis with Equivalence Partitioning
- Pitfalls of Boundary value Analysis
What is Boundary Value Analysis?
De basis van Boundary Value Analysis (BVA) is het testen van de grenzen bij partities (Remember Equivalence Partitioning !). BVA is een uitbreiding van equivalentiepartitionering. Deze is echter alleen bruikbaar wanneer de partitie geordend is, bestaande uit numerieke of sequentiële gegevens. De minimum- en maximumwaarden van een partitie zijn de grenswaarden.
We hebben gezien dat de kans groot is dat de gebreken aan de grenzen van een partitie worden gevonden (Bijv. een ontwikkelaar die >10 in plaats van >= 10 voor een voorwaarde gebruikt). Gelijkwaardigheids partitioneren alleen was niet voldoende om zulke defecten te vinden. Daarom ontstond de behoefte om een nieuwe techniek te definiëren die afwijkingen aan de grenzen van de partitie kan detecteren. Zo kwam de grenswaarde-analyse in beeld.
De grenswaarde-analyse kan op alle testniveaus worden uitgevoerd, en wordt voornamelijk gebruikt voor een reeks getallen, data en tijd.
Hoe doe je een grenswaarde-analyse?
Nu we enig idee hebben gekregen van de grenswaarde-analyse, laten we eens begrijpen hoe we met deze techniek testcondities kunnen afleiden. Wij zullen naar hetzelfde voorbeeld van gymnastiekvorm verwijzen (Verwijs naar ons artikel over Gelijkwaardigheidsverdeling) waar wij Age.
De eerste stap van Grenswaardeanalyse is het creëren van Gelijkwaardigheidsverdelingen, die er als volgt zouden uitzien.
Nu concentreren wij ons op de Geldige Verdeling, die van 16-60 varieert. We hebben een 3 stappen aanpak om grenzen te identificeren:
- Identificeer de exacte grenswaarde van deze partitie klasse – dat is 16 en 60.
- Geef de grenswaarde die een minder is dan de exacte grens – dat is 15 en 59.
- Neem de grenswaarde die één meer is dan de exacte grens – die 17 en 61 is.
Als we ze allemaal combineren, krijgen we onderstaande combinaties voor grenswaarde voor de leeftijdscriteria.
Valid Boundary Conditions : Leeftijd = 16, 17, 59, 60
Ongeldige Randvoorwaarden : Age = 15, 61
Het is eenvoudig te zien dat geldige randvoorwaarden vallen onder Geldige partitie klasse, en ongeldige randvoorwaarden vallen onder Ongeldige partitie klasse.
Kunt u nagaan waarom we niet 16.1, 15.9, 59.9, en 60.1 hebben gebruikt als de grens increment en decrement waarden? Het is een concept dat in de meeste artikelen onvoldoende wordt uitgelegd. Laten we daarom een ander voorbeeld nemen om dit uit te leggen. Veronderstel dat u uw gewicht invoert op een website. Op basis van uw gewicht en lengte zal de site u de Body Mass Index (BMI) vertellen. U kunt waarden van 30 tot 150 kg invoeren in het invoerveld voor gewicht. Het invoerveld voor het gewicht staat alleen natuurlijke getallen toe, d.w.z. positieve gehele getallen!
In dit geval, als u de grenzen volgens dezelfde methode maakt – zult u eindigen met
Valid Boundary Conditions : Leeftijd = 30, 31, 149, 150
Ongeldige Randvoorwaarden : Leeftijd = 29, 151
Neem nu hetzelfde scenario, maar het gewichtinvoerveld staat decimale getallen tot 1 decimaal toe. In dit geval zullen de randvoorwaarden als volgt zijn:
Geldige randvoorwaarden : Leeftijd = 30, 30.1, 149.9, 150
Ongeldige Randvoorwaarden : Leeftijd = 29.9, 150.1
Ziet u het verschil? We nemen de minimaal aanvaardbare waarde aan weerszijden van de grens. Als we de waarde 30.01 nemen, dan testen we de software voor twee decimalen waar de eis één decimaal is. Het is een afzonderlijke testvoorwaarde en mag niet worden verward met grenswaarde.
De meting van de grenswaarde dekking voor een partitie kan gebeuren als het aantal geteste grenswaarden gedeeld door het totale aantal geïdentificeerde grenswaarde testwaarden.
Boundary Value Analysis met Equivalence Partitioning
We hebben nu een redelijk begrip van Boundary Value Analysis gekregen. Laten we eens kijken hoe we het kunnen combineren met equivalentiepartitionering om een volledige set testcondities te krijgen.
Terugkomend op ons eerdere voorbeeld, laten we het diagram nog eens bekijken.
Het bereik is van 16 – 60, en Grenswaarde-analyse geeft ons testcondities als 15, 16, 17, 59, 60, 61. Als u goed kijkt, denkt u dan niet dat we Geldige Gelijkwaardigheidsverdeling al hebben afgedekt door 17, 59 af te dekken, en Ongeldige Gelijkwaardigheidsverdeling door 15 en 61 af te dekken? Gelijkwaardigheidsverdeling zegt immers dat we een getal tussen 16-60 moeten kiezen voor een geldige verdeling en minder dan 16 of meer dan 60 voor een ongeldige verdeling. Dus, als de grenswaarde de equivalentiepartitie al dekt, waarom hebben we dan partitionering als een aparte techniek nodig? Het is een concept dat voor de meeste mensen niet duidelijk is, en niet veel artikelen hebben het duidelijk uitgelegd.
Theoretisch heeft de grenswaarde inderdaad de equivalentiepartitie gedekt, maar we hebben nog steeds een partitie nodig. Als we alleen de grenswaarde toepassen, en deze faalt, zullen we nooit weten of de randvoorwaarde faalde, of de gehele partitie faalde. Laten we het begrijpen met behulp van een voorbeeld. We gaan verder met ons sportschoolformulier en veronderstellen dat de ontwikkelaar de volgende logica heeft geschreven :
Indien (leeftijd < = 17 ) Dan geen lidmaatschap sportschool toestaan
Indien (leeftijd > 60) Dan geen lidmaatschap sportschool toestaan
Als u naar de logica kijkt, zult u zich realiseren dat de logica If (leeftijd <17) had moeten zijn, maar de ontwikkelaar heeft het = verkeerde teken toegevoegd. Heb je je ook gerealiseerd dat de logica voor de gehele geldige partitie ontbreekt? If (age>=16 and age <= 60 ) Then allow Gym membership !
Als we alleen de randvoorwaarde waarde 17 gebruiken, zal het de testuitvoering niet doorstaan. Het zal u echter niet vertellen of de randvoorwaarde faalde of dat de hele partitie faalde. Als zodanig is het essentieel om een Equivalentie partitie waarde te gebruiken, die geen randvoorwaarde waarde is. In dit geval, als we de waarde 20 gebruiken, zal de uitvoering mislukken. Het zal een duidelijke indicatie geven dat de ontwikkelaar de implementatie van de gehele partitie heeft gemist.
Dus als we zowel boundary value als Equivalence Partitioning combineren, zullen onze testcondities zijn :
Valid Boundary Conditions : Leeftijd = 16, 17, 59, 60
Ongeldige Randvoorwaarden : Leeftijd = 15, 61
Geldige Gelijkwaardigheidsverdeling : Leeftijd = 25
Ongeldige Gelijkwaardigheidsverdeling : Leeftijd = 5 , 65
Valkuilen van BVA
Na toepassing van zowel grenswaarde- als Gelijkwaardigheidsverdeling, kunnen we met zekerheid zeggen dat we alle vereiste dekkingen hebben gekregen? Helaas, zo eenvoudig is het niet! Grenswaarde- en equivalentiepartitionering gaan ervan uit dat de applicatie niet toestaat dat u andere tekens of waarden invoert. Dergelijke tekens, zoals @ of negatieve waarden of zelfs alfabetten, zullen niet worden toegestaan om in te voeren. Deze veronderstelling geldt echter niet voor alle toepassingen, en het is van essentieel belang om deze uit te testen voordat we kunnen zeggen dat de veldwaarde volledig werkt.
Overigens kunnen we situaties hebben waarin de invoerwaarde afhankelijk is van de beslissing van een andere waarde. B.v. Indien het Gym-formulier een ander veld Man en Vrouw heeft, en de leeftijdsgrens zal variëren naar gelang van die selectie. Grenswaarden alleen kunnen dergelijke variaties niet aan, en dit leidt ons naar een andere black box techniek, genaamd Decision Table Testing. We zullen dat in detail bespreken in ons volgende artikel. Blijf op de hoogte!