Grenswaardeanalyse – meestal afgekort tot BVA – is een veelgebruikte zwarte doos testtechniek. De aanpak test op softwarefouten door invoerwaarden te controleren op de grenzen van toegestane bereiken.
In dit artikel wordt uitgelegd wat grensanalysetests zijn, waarom ze nuttig zijn en worden enkele verschillende benaderingen, technieken en verschillende grenstesttools besproken.
Wat is grenswaardeanalyse bij het testen van software?
Grenswaardeanalyse is een soort functioneel testen. Dit type testen controleert of elke functie van de software voldoet aan de eisen en specificaties. In het geval van boundary testing omvat deze functionaliteit hoe de software omgaat met verschillende inputs.
BVA is een softwaretesttechniek die valideert hoe software zal reageren op invoer op of rond de rand van invoergrenzen. In essentie heeft elke ingang toegestane bereiken. U kunt bijvoorbeeld een wachtwoordvak hebben voor een aanmelding die wachtwoorden tussen 8 en 12 tekens accepteert. Bij de grenstest worden wachtwoorden met een tekenlengte van 7, 8, 12 en 13 getest.
De gedachte hierachter is dat de grenzen van de limieten, d.w.z. 7, 8, 12 en 13, eerder fouten zullen opleveren dan getallen binnen de grenzen, zoals 9, 10 en 11. Hoewel de voordelen hier marginaal lijken in een voorbeeld van een veldvak dat tussen de 8 en 12 tekens accepteert, worden ze duidelijker wanneer je testgevallen moet schrijven voor veldvakken die tussen de 1 en 20 tekens of getallen tussen de 1 en 1000, enzovoort accepteren.
Dus, om tijd te besparen en het aantal testgevallen binnen functioneel testen te verminderen, kijkt de grenswaarde-analyse naar waarden:
- Bij minimumwaarde
- Direct onder de minimumwaarde
- Bij maximale waarde
- Direct boven de maximumwaarde
Voordelen van grenswaardeanalyse bij testen
Grensverleggend testen heeft een aantal overtuigende voordelen voor QA-teams.
#1. Betere softwarekwaliteit
Het nachtmerriescenario voor testers zijn bugs en defecten die onopgemerkt blijven. Met zoveel dingen die gecontroleerd moeten worden, kunnen sommige defecten door de mazen van het net glippen. Grensverleggend testen bewijst de functionaliteit van gebieden in de software waar de kans op fouten groter is, wat leidt tot betere software-builds en uiteindelijk tot een betrouwbaardere, stabielere applicatie.
#2. Verbeterde testdekking
BVA bij het testen van software is zo nuttig omdat het helpt het aantal testgevallen te verminderen dat nodig is voor een uitgebreide testdekking. Grenswaardeanalyse zorgt ervoor dat belangrijke waarden en dat elke waarde grondiger getest kan worden.
#3. Vroegtijdige opsporing van defecten
Het testen van grenswaarden maakt deel uit van een aanpak die prioriteit geeft aan het vroegtijdig opsporen van defecten. Het vroegtijdig opsporen van bugs betekent dat ontwikkelteams tijd en geld kunnen besparen, en dan hebben we het nog niet eens over het feit dat het veel gemakkelijker is om bugs in de vroege stadia van de ontwikkeling te verhelpen.
#4. Efficiëntie
Grenswaardetests zijn super efficiënt omdat ze de behoefte aan veel testgevallen verminderen. Het reduceren van alleen de meest waarschijnlijke inputs die problemen veroorzaken, kan testteams veel tijd besparen bij het schrijven en uitvoeren van testcases.
Nadelen van grenswaardeanalyse bij testen
Natuurlijk is geen enkele softwaretesttechniek perfect of zonder beperkingen. Hoewel grenswaardeanalyse veel voordelen heeft, zijn er enkele beperkingen bij het werken met deze functionele testtechniek.
#1. Smal toepassingsgebied
BVA werkt op de grenzen of randen van geldige gegevensinvoer. In het algemeen negeert het de middelste ingangen door te redeneren dat ze in orde zullen zijn als de geldige ingangen aan de randen dat ook zijn. Het is echter niet zonder precedent dat sommige van deze waarden die niet getest zijn problemen kunnen hebben.
#2. Overdreven simplistisch
Bij grensanalyse gaat het erom dingen eenvoudig te maken. Hoewel dit werkt voor het reduceren van testgevallen, is de aanpak minder geschikt voor zeer complexe domeinen met meerdere grenzen, interacties of afhankelijkheden. Het kan zelfs moeite hebben om complexe scenario’s aan te kunnen, wat betekent dat je andere technieken moet onderzoeken voor een adequate dekking.
#3. Veronderstellingen
Elk proces dat de efficiëntie probeert te verhogen, loopt het risico bepaalde fouten over het hoofd te zien. BVA richt zich op grenzen aan de rand van een bereik. Daarbij moet het aannames doen over andere inputs die aan weerszijden van de grenswaarden vallen. Testers moeten een balans vinden tussen efficiëntie en dekking, wat een klein risico met zich meebrengt als boundary testing alleen wordt gebruikt.
#4. Vertrouwen op nauwkeurige specificaties en vereisten
Een efficiënte BVA is afhankelijk van de kwaliteit en nauwkeurigheid van specificaties en documentatie van vereisten. Eventuele niet-gecontroleerde fouten in deze documenten kunnen doorwerken in grenswaardetests en leiden tot specifieke fouten die niet worden gecontroleerd en niet worden ontdekt tot de kritieke late stadia van de ontwikkeling.
#5. Vertrouwen op equivalentieklassen
Het uitvoeren van een grondige BVA vereist een goede kennis van equivalentieklassen. Het nauwkeurig instellen van deze klassen vereist ervaring en enige achtergrondinformatie over de toepassing.
Uitdagingen van grenswaardeanalyse
in het testen van software
Het zou nu wel duidelijk moeten zijn wat de voor- en nadelen zijn van grenswaarden testen. Maar als je de aanpak wilt implementeren in je eigen softwaretesten, moet je je ook bewust zijn van de verschillende uitdagingen die je moet overwinnen.
Hier volgen enkele uitdagingen bij het implementeren van grenswaardetests in softwaretests.
#1. Grenzen aangeven
Het identificeren van grenzen binnen eenvoudige systemen stelt competente testers voor weinig uitdagingen. Er zijn echter complexere situaties, zoals:
- Complexe invoerdomeinen met diverse invoervariabelen of ingewikkelde relaties
- Ongedocumenteerde grenzen die niet duidelijk zijn vastgelegd in specificatiedocumenten
- Dynamische grenzen die veranderen op basis van gebruikersacties of andere omstandigheden
#2. Dubbelzinnige vereisten
Slecht geschreven of onduidelijke documenten met vereisten kunnen de identificatie van grenswaarden belemmeren. Duidelijkheid, volledigheid en een toewijding aan uitgebreide specificatiedocumenten kosten tijd, maar zullen uiteindelijk lonen.
#3. Expertise
Grenswaardeanalyse kan bedrieglijk complex zijn. Testteams hebben inderdaad personeel nodig met ervaring en kennis van het vakgebied om de subtiele nuances van de techniek te begrijpen. Bovendien moeten testers enige kennis van de software hebben of op zijn minst betrouwbare specificatiedocumenten om op terug te vallen.
#4. Fouten
Grensanalyse probeert het aantal testgevallen terug te brengen dat nodig is om geldige en ongeldige invoer te verifiëren. Defecten die buiten het testbereik liggen, kunnen echter gemakkelijk onopgemerkt blijven. Bovendien zijn “off-by-one” fouten veel voorkomende codeerfouten die kunnen optreden op of dicht bij de grenzen. Testers moeten zich bewust zijn van deze scenario’s en voorzieningen treffen om te testen.
#5. Explosie van testcases
Met meerdere inputgrenzen in het spel kunnen testgevallen al snel complex worden en uit de hand lopen. In deze situaties gaan de tijd en het geld verloren die je kunt besparen met boundary testing, wat de voordelen van de oplossing ondermijnt. Complexe software met veel combinaties of permutaties kan een soortgelijk effect hebben.
#6. Beperkingen van het analysehulpmiddel
Software testautomatiseringstools kunnen teams helpen om een goede grenswaardeanalyse uit te voeren. Maar zelfs in de beste gevallen vereisen deze tools enige handmatige tussenkomst voor zowel het testen als het maken van tests. Deze situatie kan verergeren voor complexe constructies met multivariabele interacties.
Verschillende soorten grenswaarden
testen bij het testen van software
In het boek Software Testing: A Craftsman’s Approach beschrijven de auteurs Paul C. Jorgensen en Byron DeVries vier verschillende soorten grenswaardetests:
1. Normale grenswaardetest (NBVT)
- Test geldige invoerwaarden aan de randen van het ingangsdomein
- Verken minimum- en maximumwaarden naast ingangen net boven en onder de grens
- Dit is het klassieke type grenswaardeanalyse
2. Robuuste grenswaardetest (RBVT)
- Vergelijkbaar met NBVT hierboven, maar omvat ook ongeldige invoer
- Test op en net voorbij de grenzen, maar houdt ook rekening met ongeldige invoer
- Richt zich op het vinden van fouten door extreme of onverwachte uitvoer
3. Worst-case grenswaardetest (WBVT)
- Verifieert het gedrag van software met behulp van extreem geldige en ongeldige waarden
- Verkent waarden aan de rand van invoerdomeinen en waarden voorbij deze grenzen
- Proberen het gedrag van software onder extremere omstandigheden te begrijpen
4. Robuuste Worst-case grenswaardetest (RWBVT)
- Gebruikt een combinatie van RBVT en WBVT voor de grondigste grenswaardetests
- Test geldige en ongeldige invoerwaarden op zowel typische als extreme grenzen
- Biedt de beste kans om grensgerelateerde defecten te vinden
Deze benaderingen verschillen in uitgebreidheid, waarbij RWBVT het meest grondig is. Testers moeten zich echter bewust zijn van de extra investering in tijd en moeite die nodig is om dit extra niveau van defectdetectie te ontsluiten.
Gelijkwaardigheidsverdeling en grenswaarde
analyse: overeenkomsten en verschillen
Gelijkwaardigheidsverdeling en grenswaardeanalyse worden vaak in combinatie met elkaar gebruikt. De twee technieken vullen elkaar namelijk goed aan. Ze beschrijven echter verschillende benaderingen voor het valideren van gegevensinvoer. Hier volgt een blik op de overeenkomsten en verschillen tussen de twee.
1. Overeenkomsten
Gelijkwaardigheidsverdeling en grenswaardeanalyse vormen een geweldig paar. Hier volgen enkele overeenkomsten tussen beide technieken.
- Het zijn beide black box testtechnieken, wat betekent dat ze zich richten op inputs en outputs, die getest kunnen worden zonder a priori kennis van de broncode van de applicatie.
- Ze maken allebei deel uit van een grondige aanpak van testinputs
- Beide helpen testers een balans te vinden tussen uitgebreide testdekking zonder een overdreven hoeveelheid testgevallen te schrijven.
2. Verschillen
Om de verschillen tussen equivalentie partitionering en grenswaarde analyse te onderzoeken, moeten we beide afzonderlijk bekijken.
Gelijkwaardigheidsverdeling
- Verdeelt invoergegevens in equivalentieklassen die zouden moeten resulteren in vergelijkbare systeemuitvoer
- Gebruikt één representatieve waarde uit elke klasse en test het systeem met die waarde
- Het gaat om het identificeren van geldige en ongeldige equivalentieklassen
Grenswaardeanalyse
- Test de waarden aan de grenzen of randen van equivalentieklassen
- Test een aantal waarden, waaronder minimum, maximum en waarden aan weerszijden van de grens
- Zoekt naar fouten aan de rand van grenzen
Voorbeelden van equivalentieverdeling en grenswaardeanalyse
Om je te helpen je begrip van equivalentieverdeling en grenswaardeanalyse te verankeren, volgen hier enkele voorbeelden.
Voorbeeld van equivalentieverdeling:
Laten we zeggen dat je een invoervak hebt voor autoregistraties. Amerikaanse kentekenplaten hebben meestal 6 tot 7 tekens. Om het eenvoudig te houden, laten we speciale nummerplaten buiten beschouwing.
Geldige gegevens = Platen 6 of 7 tekens
Ongeldige gegevens = Platen met >6 of >7 tekens.
Voorbeeld van grenswaardeanalyse:
Met hetzelfde nummerplaatvoorbeeld als hierboven zal de grensanalyse het volgende testen
Geldige gegevens = Platen met 6 of 7 tekens
Ongeldige gegevens = Platen met 5 of 8 tekens, en in sommige scenario’s, 4 en 9 tekens
Voorbeeld grenswaardeanalyse
Misschien is de beste manier om het concept volledig te begrijpen door nog een of twee voorbeelden van grenswaardeanalyse te bekijken.
Voorbeeld #1 van grenswaardetests
Laten we, om de grenswaardetest in meer detail te verkennen, eens kijken naar een voorbeeld van een leeftijdscontroledomein.
We hebben een vak waarin de gebruiker zijn leeftijd kan invoeren.
Grenswaarden zijn:
- Minimumleeftijd = 18
- Maximale leeftijd = 120
Voorbeeld van grenstestgevallen:
Er zijn in totaal zes testgevallen:
- 17, 18 en 19, die respectievelijk onder het minimum, minimum en boven het minimum liggen
- 119, 18 en 19, die respectievelijk onder het maximum, het maximum en boven het maximum liggen
Voorbeeld #2 van grenswaardetests.
In ons volgende voorbeeld van boundary testing onderzoeken we een website met een minimum aankoopkorting van 20% op bestellingen van $100 en meer.
In dit voorbeeld leidt een aankoop van meer dan $600 tot een korting van 25%. De grenswaardetest zal ingangen tussen $100 en $600 behandelen.
Grenswaarden zijn:
Minimum korting = $100
Maximale korting = $600
Voorbeeld van grenstestgevallen:
Opnieuw genereren we in totaal zes testgevallen:
- $99,99, $100 en $100,01, respectievelijk onder het minimum, minimum en boven het minimum.
- $599,99, $600 en $600,01, die respectievelijk onder het maximum, het maximum en boven het maximum liggen.
Is boundary testing bij het testen van software nauwkeurig?
In het onderzoeksartikel Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods onderzoeken de auteurs het gebruik van equivalentiepartitionering en grenswaardeanalyse om een academisch informatiesysteem voor de universiteit van Mataram in Indonesië te testen.
De auteurs gebruikten de populaire open-source testtool Selenium voor hun tests en voerden in totaal 322 testcases uit. Gelijkwaardigheidstests en grenswaardeanalyses brachten ongeveer 80 mislukte gevallen aan het licht, wat leidde tot een verhouding van ongeveer 75:25 tussen geldige en ongeldige testscores. Over het algemeen leidde het gebruik van een combinatie van gelijkwaardigheidsverdeling en BVA bij het testen van software tot grondige en nuttige tests voor de software.
Beste grenswaardetestprogramma’s
Hoewel speciale software voor het testen van grenswaarden zeldzaam is, zijn er veel testtools die deze taak aankunnen.
#3. TestCaseLab
TestCaseLab is een cloudgebaseerd testbeheerprogramma dat kan helpen bij BVA-tests. Met de software kunnen teams testcases maken en beheren vanuit de intuïtieve en aantrekkelijk ogende UI. TestCaseLab is flexibel en heeft veel functies, maar het heeft zijn beperkingen, waaronder beperkte rapportage- en aanpassingsopties.
#2. Micro Focus UFT One
Micro Focus UFT One is een softwaretesttool met een focus op functioneel en regressietesten. Het ondersteunt verschillende platforms, apparaten en API-tests en biedt sterke integratiemogelijkheden. Het biedt zowel no-code als keyword-driven testcreatie en kan teams helpen om eenvoudig boundary value analysis testcases te bouwen. Er zijn enkele beperkingen waar je rekening mee moet houden, zoals een steile leercurve en een gebrek aan kracht in vergelijking met tools zoals ZAPTEST.
#1. ZAPTEST
ZAPTEST is een uitgebreide testtool voor softwareautomatisering met geavanceerde RPA-mogelijkheden. Het is gebouwd om testers te voorzien van een gebruiksvriendelijke en robuuste suite van testautomatiseringstools die kunnen helpen bij het verifiëren van software op verschillende manieren, waaronder met BVA bij het testen van software.
Enkele van de meest aansprekende gebruiksmogelijkheden van ZAPTEST voor grenswaardeanalyse zijn het genereren van testcases, het verwerken van testgegevens, het uitvoeren van tests en rapportage en analyse. Met een reeks sjablonen en een hoog aanpassingsniveau, gecombineerd met het maken van testcases zonder code, kunnen gebruikers van ZAPTEST snel en eenvoudig robuuste testcases voor alle soorten grensanalyse maken en beheren.
Naast het genereren en beheren van testcases, kunnen de RPA-mogelijkheden van ZAPTEST testteams ook op andere manieren helpen met hun grenswaardeanalysetests. Je kunt bijvoorbeeld de uitvoering van testcases automatiseren, testgegevens genereren en krachtige integraties bouwen met andere testtools.
Tips voor grenswaardetests
- Combineer grenswaardeanalyse met equivalentiepartitionering om ervoor te zorgen dat je testcases verschillende invoerscenario’s afdekken
- Gebruik ongeldige invoerscenario’s (negatieve tests) om te controleren hoe de software omgaat met fouten en onverwachte invoer.
- Investeer tijd in het identificeren van grenswaarden voor verschillende gegevenstypen zoals tekst, getallen, Booleaans, enz.
- Geef prioriteit aan grenswaardetests voor kritieke functionaliteiten of gebieden waar de kans op fouten groter is
- Gebruik realistische gegevens die representatief zijn voor het soort gegevens dat uw gebruikers in uw domeinen invoeren.
Laatste gedachten
Grenswaardeanalyse is een nuttige benadering voor functioneel testen. Als je een invoerdomein hebt, moet je controleren of het geldige gegevens accepteert en foutmeldingen stuurt als het ongeldige gegevens ontvangt. Grensanalysetests helpen om die functionaliteit op een efficiënte manier te verifiëren door alleen de testgevallen te bouwen die nodig zijn voor uitgebreide tests.
Grenswaarden testen kijkt naar waarden in of rond het acceptabele bereik en controleert hoe het systeem reageert op deze inputs. Het resultaat is veel tijdsbesparing en minder inspanning omdat je geen overbodige testgevallen hoeft te bouwen. In de snelle wereld van softwareontwikkeling, waar deadlines alsmaar dichterbij lijken te komen, hebben testteams alle hulp nodig die ze kunnen krijgen.