Boundary value analysis – vanligtvis förkortat till BVA – är en vanlig testteknik för svarta l ådan. Metoden testar för programvarudefekter genom att verifiera ingångsvärden på gränserna för tillåtna intervall.
Den här artikeln handlar om vad gränsanalystestning är, varför det är användbart och om några olika tillvägagångssätt, tekniker och verktyg för gränsanalystestning.
Vad är gränsvärdesanalys vid testning av programvara?
Gränsvärdesanalys är en typ av funktionstestning. Denna typ av testning handlar om att verifiera att varje funktion i programvaran uppfyller krav och specifikationer. När det gäller gränstestning omfattar denna funktionalitet hur programvaran hanterar olika indata.
BVA är en testteknik för programvara som validerar hur programvaran reagerar på indata vid eller runt gränsen för indatabegränsningar. I huvudsak har varje indata tillåtna intervall. Du kan t.ex. ha en lösenordsruta för en inloggning som accepterar lösenord på mellan 8 och 12 tecken. Gränstestning testar lösenord med teckenlängderna 7, 8, 12 och 13.
Tanken här är att gränserna för gränserna, dvs. 7, 8, 12 och 13, är mer benägna att ge fel än siffror inom gränserna, t.ex. 9, 10 och 11. Även om fördelarna här kan verka marginella i ett exempel på en fältruta som accepterar mellan 8 och 12 tecken, blir de mer uppenbara när du behöver skriva testfall för fältrutor som accepterar mellan 1 och 20 tecken eller siffror mellan 1 och 1000, och så vidare.
Så för att spara tid och minska antalet testfall inom funktionstestning tittar gränsvärdesanalysen på värden:
- Till lägsta värde
- Direkt under minimivärdet
- Vid maximalt värde
- Direkt över det maximala värdet
Fördelar med gränsvärdesanalys vid testning
Gränstestning har flera övertygande fördelar för kvalitetssäkringsteam.
#1. Bättre kvalitet på programvaran
Mardrömsscenariot för testare är buggar och defekter som går obemärkta förbi. Med så många saker att verifiera kan vissa defekter slinka igenom sprickorna. Gränstestning visar att programvaran fungerar i områden som är mer benägna att innehålla fel, vilket leder till bättre programvarukonstruktioner och i slutändan en mer tillförlitlig och stabil applikation.
#2. Ökad testtäckning
BVA i programvarutestning är så användbart eftersom det hjälper till att minska antalet testfall som krävs för omfattande testtäckning. Gränsvärdesanalys säkerställer att viktiga värden och att varje värde kan testas mer noggrant.
#3. Tidig upptäckt av defekter
Gränsvärdestestning är en del av en metod som prioriterar tidig upptäckt av defekter. Att fånga upp buggar tidigt i processen innebär att utvecklingsteamen kan spara tid och pengar utan att ens nämna det faktum att det är mycket lättare att åtgärda buggar i ett tidigt skede av utvecklingen.
#4. Effektivitet
Boundary value-testning är supereffektivt eftersom det minskar behovet av många testfall. Genom att reducera indata till allt utom det som mest sannolikt kan orsaka problem kan testteam avsevärt spara tid både när det gäller att skriva och utföra testfall.
Nackdelar med gränsvärdesanalys vid testning
Naturligtvis är ingen testmetod perfekt eller utan begränsningar. Även om gränsvärdesanalys har många fördelar finns det vissa begränsningar med att arbeta med denna funktionella testteknik.
#1. Snäv omfattning
BVA arbetar med gränserna eller kanterna för giltiga datainmatningar. I allmänhet ignoreras ingångarna i mitten genom att resonera att de kommer att vara bra om de giltiga ingångarna på kanterna är det. Det är dock inte utan prejudikat att vissa av dessa värden som inte är testade kan ha problem.
#2. Alltför förenklad
Gränsanalys handlar om att göra saker enkla. Även om detta fungerar för att minska antalet testfall är metoden mindre lämplig för mycket komplexa domäner med flera gränser, interaktioner eller beroenden. Den kan ha svårt att hantera komplexa scenarier, vilket innebär att du behöver utforska andra tekniker för att få tillräcklig täckning.
#3. Antaganden
Varje process som syftar till att öka effektiviteten riskerar att missa vissa fel. BVA fokuserar på gränser vid kanten av ett intervall. För att göra detta måste den göra antaganden om andra indata som faller på båda sidor av gränsvärdena. Testarna måste hitta en balans mellan effektivitet och täckning, vilket innebär en liten risk om enbart boundary testing används.
#4. Beroende på exakta specifikationer och krav
Effektiv BVA är beroende av kvaliteten och noggrannheten i specifikationer och kravdokumentation. Eventuella okontrollerade fel i dessa dokument kan påverka gränsvärdestestningen och leda till att specifika fel inte kontrolleras och upptäcks förrän i de kritiska sena utvecklingsstadierna.
#5. Förlitande på ekvivalensklasser
För att kunna utföra en noggrann BVA krävs goda kunskaper om ekvivalensklasser. För att kunna ställa in dessa klasser korrekt krävs erfarenhet och viss bakgrundsinformation om applikationen.
Utmaningar med gränsvärdesanalys
inom testning av programvara
Vid det här laget bör du vara ganska klar över för- och nackdelarna med gränstestning. Men om du vill implementera metoden i din egen programvarutestning måste du också vara medveten om de olika utmaningar som du måste övervinna.
Här är några av utmaningarna med att implementera gränsvärdestestning i programvarutestning.
#1. Utformning av gränser
Att identifiera gränser i enkla system innebär små utmaningar för kompetenta testare. Det finns dock mer komplexa situationer, t.ex:
- Komplexa inmatningsdomäner med olika inmatningsvariabler eller intrikata relationer
- Odokumenterade gränser som inte har beskrivits tydligt i specifikationsdokument
- Dynamiska gränser som ändras baserat på användaråtgärder eller andra villkor
#2. Tvetydiga krav
Dåligt skrivna eller otydliga kravdokument kan försvåra identifieringen av gränsvärden. Tydlighet, fullständighet och ett engagemang för uttömmande specifikationsdokument tar tid, men det kommer att löna sig i slutändan.
#3. Expertis
Gränsvärdesanalys kan vara bedrägligt komplicerad. Testteamen behöver personal med erfarenhet och kunskap inom området för att förstå de subtila nyanserna i tekniken. Dessutom måste testarna ha viss kunskap om programvaran eller åtminstone ha tillförlitliga specifikationsdokument att falla tillbaka på.
#4. Fel
Boundary analysis syftar till att minska antalet testfall som krävs för att verifiera giltiga och ogiltiga indata. Defekter som ligger utanför testområdet kan dock lätt gå obemärkta förbi. Dessutom är “off-by-one”-fel vanliga kodningsfel som kan uppstå vid eller nära gränserna. Testare måste vara medvetna om dessa scenarier och vidta åtgärder för testning.
#5. Explosion av testfall
Med flera inmatningsgränser i spel kan testfall snabbt bli komplexa och okontrollerbara. I dessa situationer går den tid och de pengar som du kan spara med boundary testing förlorade, vilket undergräver fördelarna med lösningen. Komplexa programvaror med många kombinationer och permutationer kan ha en liknande effekt.
#6. Begränsningar i analysverktyget
Verktyg för automatisering av programvarutester kan hjälpa teamen att utföra adekvata gränsvärdesanalyser. Men även i de bästa fallen kräver dessa verktyg viss manuell hantering för både testning och skapande av tester. Denna situation kan förvärras för komplexa konstruktioner med interaktioner med flera variabler.
Olika typer av gränsvärden
testning inom programvarutestning
I boken Software Testing: A Craftsman’s Approach, beskriver författarna Paul C. Jorgensen och Byron DeVries fyra olika typer av gränsvärdestestning, vilka är
1. Testning av normalt gränsvärde (NBVT)
- Testar giltiga ingångsvärden vid ingångsdomänens kanter
- Utforskar minimi- och maximivärden tillsammans med inmatningar precis över och under gränsen
- Detta är den klassiska typen av gränsvärdesanalys
2. Robust gränsvärdestestning (RBVT)
- Liknar NBVT ovan, men inkluderar även ogiltiga inmatningar
- Testar vid och precis utanför gränserna, men tar även hänsyn till ogiltiga inmatningar
- Fokuserar på att hitta fel från extrema eller oväntade utdata
3. Testning av gränsvärden för värsta fall (WBVT)
- Verifierar programvarans beteende med hjälp av extremt giltiga och ogiltiga värden
- Utforskar värden i utkanten av inmatningsdomänerna och värden bortom dessa gränser
- Försöker förstå programvarans beteende under mer extrema förhållanden
4. Robust testning av gränsvärden i värsta fall (RWBVT)
- Använder en blandning av RBVT och WBVT för den mest grundliga gränsvärdestestningen
- Testar giltiga och ogiltiga ingångsvärden vid både typiska och extrema gränser
- Ger den bästa möjligheten att hitta gränsrelaterade defekter
Dessa metoder skiljer sig åt i omfattning, där RWBVT är den mest omfattande. Testare måste dock vara medvetna om den extra investering i både tid och arbete som krävs för att låsa upp denna ytterligare nivå av defektupptäckt.
Ekvivalenspartitionering och gränsvärde
analys: likheter och skillnader
Ekvivalenspartitionering och gränsvärdesanalys används ofta i kombination med varandra. De två teknikerna kompletterar varandra i hög grad. De beskriver dock olika tillvägagångssätt för att validera inmatade data. Här är en titt på likheterna och skillnaderna mellan de två.
1. Likheter
Ekvivalenspartitionering och gränsvärdesanalys är ett utmärkt par. Här är några av likheterna mellan de båda teknikerna.
- De är båda black box-testtekniker, vilket innebär att fokus ligger på in- och utdata, som kan testas utan förhandskunskap om applikationens källkod.
- De är båda en del av ett grundligt tillvägagångssätt för att testa inmatning
- Båda hjälper testare att hitta en balans mellan omfattande testtäckning utan att skriva en överdriven mängd testfall.
2. Skillnader
För att undersöka skillnaderna mellan ekvivalenspartitionering och gränsvärdesanalys måste vi titta på var och en för sig.
Uppdelning efter ekvivalens
- Delar in indata i ekvivalensklasser som bör resultera i liknande systemutdata
- Använder ett enda representativt värde från varje klass och testar systemet med detta värde
- Det handlar om att identifiera giltiga och ogiltiga ekvivalensklasser
Gränsvärdesanalys
- Testar värdena vid gränserna eller kanterna av ekvivalensklasser
- Testa ett antal värden, inklusive minimum, maximum och värden på båda sidor av gränsen
- Letar efter fel som finns i utkanten av gränserna
Exempel på ekvivalenspartitionering och gränsvärdesanalys
Här är några exempel som kan hjälpa dig att förstå ekvivalenspartitionering och gränsvärdesanalys.
Exempel på uppdelning av ekvivalens:
Låt oss säga att du har en inmatningsruta för bilregistreringar. Amerikanska registreringsskyltar har vanligtvis mellan 6 och 7 tecken. För enkelhetens skull bortser vi från specialnummerskyltar.
Giltiga data = Plattor 6 eller 7 tecken
Ogiltiga data = Plattor med >6 eller >7 tecken.
Exempel på gränsvärdesanalys:
Med samma exempel på nummerplåt som ovan kommer gränsanalysen att testa
Giltiga data = skyltar med 6 eller 7 tecken
Ogiltiga data = Skyltar med 5 eller 8 tecken, och i vissa scenarier, 4 och 9 tecken
Exempel på gränsvärdesanalys
Det bästa sättet att förstå konceptet fullt ut är kanske att titta på ett eller två andra exempel på gränsvärdesanalys.
Exempel på testning av gränsvärde #1
För att utforska gränsvärdestestning mer i detalj, låt oss titta på ett exempel på en åldersverifieringsdomän.
Vi har en ruta där användaren kan ange sin ålder.
Gränsvärden är:
- Minimiålder = 18 år
- Högsta ålder = 120
Exempel på testfall för avgränsning:
Det finns totalt sex testfall:
- 17, 18 och 19, som är under miniminivån, miniminivån respektive över miniminivån
- 119, 18 och 19, som ligger under respektive över det maximala respektive det maximala värdet
Exempel på testning av gränsvärde #2.
I vårt nästa boundary testing-exempel ska vi utforska en webbplats med en rabatt på 20 % på beställningar på 100 USD eller mer.
I det här exemplet ger ett köp på över 600 USD en rabatt på 25 %. Gränsvärdestestet kommer att behandla ingångsvärden mellan 100 och 600 USD.
Gränsvärden är:
Minsta kvalificerande rabatt = $100
Maximal kvalificerande rabatt = 600 USD
Exempel på testfall för avgränsning:
Återigen genererar vi totalt sex testfall, vilka är
- 99,99 USD, 100 USD och 100,01 USD, vilket är under miniminivån, miniminivån respektive över miniminivån
- 599,99 USD, 600 USD och 600,01 USD, vilket är under det maximala, det maximala respektive över det maximala
Är gränstestning inom programvarutestning korrekt?
I forskningsrapporten Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods undersöker författarna hur man kan använda ekvivalenspartitionering och gränsvärdesanalys för att testa ett akademiskt informationssystem för Mataram University i Indonesien.
Författarna använde det populära open source-testverktyget Selenium för sina tester och körde totalt 322 testfall. Ekvivalenstestning och gränsvärdesanalys avslöjade cirka 80 misslyckade fall, vilket ledde till ett ungefärligt 75:25-förhållande mellan giltiga och ogiltiga testresultat. Sammantaget ledde användningen av en kombination av ekvivalenspartitionering och BVA vid testning av programvara till grundlig och användbar testning av programvaran.
Bästa verktyg för testning av gränsvärde
Även om det finns få programvaruverktyg som är avsedda för gränstestning, finns det många testverktyg som klarar uppgiften.
#3. TestCaseLab
TestCaseLab är ett molnbaserat testhanteringsverktyg som kan hjälpa till med BVA-testning. Programvaran ger teamen möjlighet att skapa och hantera testfall med hjälp av det intuitiva och snygga användargränssnittet. TestCaseLab är flexibelt och har många funktioner, men det har sina begränsningar, inklusive begränsade rapporterings- och anpassningsalternativ.
#2. Micro Focus UFT One
Micro Focus UFT One är ett testverktyg för programvara med fokus på funktions- och regressionstestning. Den stöder olika plattformar, enheter och API-testning och erbjuder starka integrationsalternativ. Den erbjuder både kodfri och nyckelordsdriven testskapande och kan hjälpa team att enkelt bygga testfall för gränsvärdesanalys. Det finns vissa begränsningar som du måste ta hänsyn till, t.ex. en brant inlärningskurva och en brist på kraft jämfört med verktyg som ZAPTEST.
#1. ZAPTEST
ZAPTEST är ett omfattande verktyg för automatiserad testning av programvara med avancerade RPA-funktioner. Det är byggt för att ge testare en användarvänlig och robust uppsättning testautomatiseringsverktyg som kan hjälpa till att verifiera programvara på en mängd olika sätt, inklusive med BVA inom programvarutestning.
Några av de mest övertygande användningsområdena för ZAPTEST som hjälp vid gränsvärdesanalys är generering av testfall, hantering av testdata, testkörning samt rapportering och analys. Med en rad mallar och en hög nivå av anpassning i kombination med kodfri skapande av testfall kan ZAPTEST-användare snabbt och enkelt skapa och hantera robusta testfall för alla typer av gränsanalys.
Utöver generering och hantering av testfall kan ZAPTEST:s RPA-funktioner hjälpa testteam med deras testning av gränsvärdesanalys på andra sätt. Du kan t.ex. automatisera testkörning, generera testdata och bygga kraftfulla integrationer med andra testverktyg.
Tips för testning av gränsvärde
- Kombinera gränsvärdesanalys med ekvivalenspartitionering för att säkerställa att dina testfall täcker olika indatascenarier
- Använd scenarier med ogiltig input (dvs. negativ testning) för att säkerställa att du verifierar hur programvaran hanterar fel och oväntad input
- Lägg tid på att identifiera gränsvärden för olika datatyper som text, siffror, booleska värden etc.
- Prioritera gränsvärdestestning för kritiska funktioner eller områden där det är mer sannolikt att fel uppstår
- Använd realistiska data som representerar den typ av data som dina användare kommer att mata in i dina domäner.
Avslutande tankar
Gränsvärdesanalys är en användbar metod för funktionstestning. När du har en indatadomän måste du kontrollera att den accepterar giltiga data och skickar felmeddelanden när den tar emot ogiltiga data. Testning med gränsanalys hjälper till att verifiera denna funktionalitet på ett effektivt sätt genom att endast bygga de testfall som krävs för omfattande testning.
Vid gränstestning tittar man på värden som ligger inom eller runt det acceptabla intervallet och verifierar hur systemet reagerar på dessa indata. Resultatet är mycket sparad tid och mindre arbete eftersom du inte behöver bygga överflödiga testfall. I den snabba världen av programvaruutveckling, där deadlines verkar komma tätt och snabbt, behöver testteamen all hjälp de kan få.