Grænseværdianalyse – typisk forkortet til BVA – er en almindelig black box-testteknik. Metoden tester for softwarefejl ved at verificere inputværdier på grænsen af tilladte intervaller.
Denne artikel vil undersøge, hvad boundary analysis testing er, hvorfor det er nyttigt, og udforske nogle forskellige tilgange, teknikker og forskellige boundary testing-værktøjer.
Hvad er boundary value analysis i softwaretest?
Grænseværdianalyse er en form for funktionstest. Den type test handler om at verificere, at hver funktion i softwaren opfylder krav og specifikationer. I forbindelse med boundary testing omfatter denne funktionalitet, hvordan softwaren håndterer forskellige inputs.
BVA er en softwaretestteknik, der validerer, hvordan software vil reagere på input ved eller omkring kanten af inputgrænser. I bund og grund har hvert input tilladte intervaller. Du kan f.eks. have en adgangskodeboks til et login, der accepterer adgangskoder på mellem 8 og 12 tegn. Grænsetest vil teste for adgangskoder med tegnlængder på 7, 8, 12 og 13.
Tanken her er, at grænserne for grænserne, dvs. 7, 8, 12 og 13, er mere tilbøjelige til at give fejl end tal inden for grænserne, såsom 9, 10 og 11. Mens fordelene her kan virke marginale i et eksempel med en feltboks, der accepterer mellem 8 og 12 tegn, bliver de mere indlysende, når du skal skrive testcases til feltbokse, der accepterer mellem 1 og 20 tegn eller tal mellem 1 og 1000 osv.
Så for at spare tid og reducere antallet af testcases inden for funktionel test, ser boundary value analysis på værdier:
- Ved minimumsværdi
- Direkte under minimumsværdien
- Ved maksimal værdi
- Direkte over den maksimale værdi
Fordele ved grænseværdianalyse i test
Boundary testing har flere overbevisende fordele for QA-teams.
#1. Bedre softwarekvalitet
Mareridtsscenariet for testere er fejl og mangler, der ikke bliver opdaget. Med så mange ting, der skal verificeres, kan nogle fejl slippe igennem revnerne. Grænsetest beviser funktionaliteten af områder i softwaren, der er mere tilbøjelige til at indeholde fejl, hvilket fører til bedre softwareopbygninger og i sidste ende en mere pålidelig og stabil applikation.
#2. Øget testdækning
BVA i softwaretest er så nyttigt, fordi det hjælper med at skære ned på antallet af testcases, der kræves for omfattende testdækning. Grænseværdianalyse sikrer, at vigtige værdier og at hver værdi kan testes mere grundigt.
#3. Tidlig opdagelse af defekter
Boundary Value Testing er en del af en tilgang, der prioriterer tidlig fejlfinding. At fange fejl tidligt i processen betyder, at udviklingsteams kan spare tid og penge uden at nævne det faktum, at det er langt lettere at rette fejl i de tidlige udviklingsstadier.
#4. Effektivitet
Boundary value testing er super effektivt, fordi det mindsker behovet for en masse testcases. Ved at reducere input til kun de mest sandsynlige årsager til problemer, kan testteams spare meget tid på både at skrive og udføre testcases.
Ulemper ved grænseværdianalyse i test
Naturligvis er ingen softwaretestteknik perfekt eller uden begrænsninger. Selvom boundary value analysis har mange fordele, er der nogle begrænsninger ved at arbejde med denne funktionelle testteknik.
#1. Snævert anvendelsesområde
BVA arbejder på grænserne eller kanterne af gyldige dataindgange. Generelt ignorerer den de midterste input ved at ræsonnere, at de vil være i orden, hvis de gyldige input på kanterne er det. Det er dog ikke uden fortilfælde, at nogle af disse værdier, der ikke er testet, kan have problemer.
#2. Alt for forsimplet
Grænseanalyse handler om at gøre tingene enkle. Selvom dette fungerer til at reducere antallet af testcases, er tilgangen mindre egnet til meget komplekse domæner med flere grænser, interaktioner eller afhængigheder. Faktisk kan den have svært ved at håndtere komplekse scenarier, hvilket betyder, at du er nødt til at udforske andre teknikker for at få tilstrækkelig dækning.
#3. Forudsætninger
Enhver proces, der forsøger at øge effektiviteten, risikerer at gå glip af bestemte fejl. BVA fokuserer på grænserne i udkanten af et område. I den forbindelse må den gøre antagelser om andre input, der falder på begge sider af grænseværdierne. Testerne skal finde en balance mellem effektivitet og dækning, hvilket udgør en lille risiko, hvis boundary testing bruges alene.
#4. Afhængighed af nøjagtige specifikationer og krav
Effektiv BVA er afhængig af kvaliteten og nøjagtigheden af specifikationer og kravdokumentation. Eventuelle ukontrollerede fejl i disse dokumenter kan forplante sig til grænseværditest og føre til, at specifikke fejl ikke bliver kontrolleret og opdaget før i de kritiske sene udviklingsfaser.
#5. Afhængighed af ækvivalensklasser
At udføre en grundig BVA kræver et stærkt kendskab til ækvivalensklasser. At indstille disse klasser nøjagtigt kræver erfaring og noget baggrundsinformation om applikationen.
Udfordringer ved grænseværdianalyse
i softwaretestning
På nuværende tidspunkt burde du være ret klar over fordele og ulemper ved grænsetestning. Men hvis du vil implementere tilgangen i din egen softwaretest, skal du også være opmærksom på de forskellige udfordringer, som du skal overvinde.
Her er nogle af udfordringerne ved at implementere boundary value testing i softwaretest.
#1. Skitsering af grænser
At identificere grænser i simple systemer er en lille udfordring for kompetente testere. Men der er mere komplekse situationer, som f.eks:
- Komplekse inputdomæner med forskellige inputvariabler eller indviklede relationer
- Udokumenterede grænser, der ikke er klart beskrevet i specifikationsdokumenterne
- Dynamiske grænser, der ændrer sig baseret på brugerhandlinger eller andre forhold
#2. Tvetydige krav
Dårligt skrevne eller uklare kravdokumenter kan forhindre identifikationen af grænseværdier. Klarhed, fuldstændighed og en forpligtelse til udtømmende specifikationsdokumenter tager tid, men det vil betale sig i sidste ende.
#3. Ekspertise
Grænseværdianalyse kan være bedragerisk kompleks. Faktisk har testteams brug for personale med erfaring og viden på området for at forstå de subtile nuancer i teknikken. Desuden skal testerne have en vis viden om softwaren eller som minimum have pålidelige specifikationsdokumenter at falde tilbage på.
#4. Fejl
Boundary analysis søger at reducere antallet af testcases, der er nødvendige for at verificere gyldige og ugyldige input. Men fejl, der ligger uden for testområdet, kan let gå ubemærket hen. Desuden er “off-by-one”-fejl almindelige kodningsfejl, der kan opstå ved eller tæt på grænserne. Testere skal være bevidste om disse scenarier og træffe foranstaltninger til test.
#5. Eksplosion af testtilfælde
Når der er flere inputgrænser i spil, kan testcases hurtigt blive komplekse og vokse ud af kontrol. I disse situationer går den tid og de penge, du kan spare med boundary testing, tabt, hvilket underminerer fordelene ved løsningen. Komplekse softwareopbygninger med masser af kombinationer eller permutationer kan have en lignende effekt.
#6. Begrænsninger i analyseværktøjet
Automatiseringsværktøjer til softwaretest kan hjælpe teams med at udføre en passende grænseværdianalyse. Men selv i de bedste tilfælde kræver disse værktøjer en vis manuel indgriben til både test og oprettelse af test. Denne situation kan forværres i komplekse konstruktioner med interaktioner mellem flere variabler.
Forskellige typer af grænseværdier
testning i softwaretestning
I bogen Software Testing: A Craftsman’s Approach beskriver forfatterne Paul C. Jorgensen og Byron DeVries fire forskellige typer af boundary value testing, som er:
1. Test af normal grænseværdi (NBVT)
- Tester gyldige inputværdier ved kanterne af inputdomænet
- Undersøger minimums- og maksimumsværdier sammen med input lige over og under grænsen
- Dette er den klassiske form for grænseværdianalyse
2. Robust test af grænseværdier (RBVT)
- Svarer til NBVT ovenfor, men inkluderer også ugyldige input.
- Tester ved og lige over grænserne, men tager også højde for ugyldige input
- Fokuserer på at finde fejl fra ekstreme eller uventede output
3. Test af grænseværdier i værste tilfælde (WBVT)
- Verificerer softwareadfærd ved hjælp af ekstremt gyldige og ugyldige værdier.
- Udforsker værdier på kanten af inputdomæner og værdier uden for disse grænser
- Forsøger at forstå softwareadfærd under mere ekstreme forhold
4. Robust Worst-case grænseværditestning (RWBVT)
- Bruger en blanding af RBVT og WBVT til den mest grundige grænseværditestning
- Tester gyldige og ugyldige inputværdier ved både typiske og ekstreme grænser
- Giver den bedste mulighed for at finde grænserelaterede defekter
Disse tilgange er forskellige i omfang, hvor RWBVT er den mest grundige. Testerne skal dog være opmærksomme på den ekstra investering i både tid og kræfter, der kræves for at låse op for dette ekstra niveau af defektopdagelse.
Ækvivalenspartitionering og grænseværdi
analyse: ligheder og forskelle
Ækvivalenspartitionering og grænseværdianalyse bruges ofte i forbindelse med hinanden. Faktisk er de to teknikker meget komplementære. De beskriver dog forskellige tilgange til validering af datainput. Her er et kig på lighederne og forskellene mellem de to.
1. Ligheder
Ækvivalenspartitionering og grænseværdianalyse er et godt makkerpar. Her er nogle af lighederne mellem de to teknikker.
- De er begge black box-testteknikker, hvilket betyder, at de fokuserer på input og output, som kan testes uden forudgående kendskab til applikationens kildekode.
- De er begge en del af en grundig tilgang til testinput
- De hjælper begge testere med at finde en balance mellem omfattende testdækning uden at skrive en overdreven mængde testcases.
2. Forskelle
For at undersøge forskellene mellem ækvivalenspartitionering og grænseværdianalyse er vi nødt til at se på hver enkelt isoleret.
Partitionering af ækvivalens
- Inddeler inputdata i ækvivalensklasser, der bør resultere i lignende systemoutput.
- Bruger en enkelt repræsentativ værdi fra hver klasse og tester systemet med den værdi.
- Det handler om at identificere gyldige og ugyldige ækvivalensklasser.
Grænseværdianalyse
- Tester værdierne ved grænserne eller kanterne af ækvivalensklasser
- Test en række værdier, herunder minimum, maksimum og værdier på begge sider af grænsen.
- Leder efter fejl, der findes på kanten af grænserne
Eksempler på ækvivalenspartitionering og grænseværdianalyse
For at styrke din forståelse af ækvivalenspartitionering og grænseværdianalyse er her nogle eksempler.
Eksempel på ækvivalenspartitionering:
Lad os sige, at du har en indtastningsboks til bilregistreringer. Amerikanske nummerplader har typisk mellem 6 og 7 tegn. For nemheds skyld ser vi bort fra specialnummerplader.
Gyldige data = Plader 6 eller 7 tegn
Ugyldige data = Plader med >6 eller >7 tegn.
Eksempel på grænseværdianalyse:
Ved at bruge det samme nummerpladeeksempel som ovenfor vil grænseanalysen teste
Gyldige data = Plader med 6 eller 7 tegn
Ugyldige data = Plader med 5 eller 8 tegn, og i nogle scenarier, 4 og 9 tegn.
Eksempel på grænseværdianalyse
Den bedste måde at forstå konceptet på er måske ved at se på et eksempel eller to på grænseværdianalyse.
Grænseværditest eksempel #1
For at udforske boundary value testing mere detaljeret, så lad os se på et eksempel på et aldersverifikationsdomæne.
Vi har en boks, hvor brugeren kan indtaste sin alder.
Grænseværdierne er:
- Minimumsalder = 18 år
- Maksimal alder = 120
Eksempel på grænsetesttilfælde:
Der er i alt seks testcases:
- 17, 18 og 19, som er henholdsvis under minimum, minimum og over minimum.
- 119, 18 og 19, som er henholdsvis under maksimum, maksimum og over maksimum.
Grænseværditest eksempel 2.
I vores næste boundary testing-eksempel vil vi udforske en hjemmeside med en rabat på 20 % på ordrer på 100 USD og derover.
I dette eksempel giver et køb på over 600 USD en rabat på 25 %. Grænseværditesten vil omhandle input på mellem 100 og 600 dollars.
Grænseværdierne er:
Minimum kvalificerende rabat = $100
Maksimal kvalificerende rabat = $600
Eksempel på grænsetesttilfælde:
Igen genererer vi i alt seks testcases, som er:
- 99,99 $, 100 $ og 100,01 $, hvilket er henholdsvis under minimum, minimum og over minimum.
- 599,99 $, 600 $ og 600,01 $, hvilket er henholdsvis under maksimum, maksimum og over maksimum.
Er grænsetestning i softwaretest korrekt?
I forskningsartiklen Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods undersøger forfatterne brugen af ækvivalenspartitionering og grænseværdianalyse til at teste et akademisk informationssystem for Mataram University i Indonesien.
Forfatterne brugte det populære open source-testværktøj Selenium til deres tests og kørte i alt 322 testcases. Ækvivalensafprøvning og grænseværdianalyse afslørede omkring 80 mislykkede tilfælde, hvilket førte til et forhold på ca. 75:25 mellem gyldige og ugyldige testresultater. Alt i alt førte brugen af en kombination af ækvivalenspartitionering og BVA i softwaretest til grundig og nyttig test af softwaren.
De bedste værktøjer til test af grænseværdier
Selvom dedikerede softwareværktøjer til grænsetestning er sjældne, er der mange bemærkelsesværdige testværktøjer, der er i stand til at udføre jobbet.
#3. TestCaseLab
TestCaseLab er et cloud-baseret teststyringsværktøj, der kan hjælpe med BVA-test. Softwaren giver teams mulighed for at oprette og administrere testcases fra den intuitive og attraktive brugergrænseflade. TestCaseLab er fleksibelt og fyldt med funktioner, men det har sine begrænsninger, herunder begrænsede rapporterings- og tilpasningsmuligheder.
#2. Micro Focus UFT One
Micro Focus UFT One er et softwaretestværktøj med fokus på funktions- og regressionstest. Det understøtter forskellige platforme, enheder og API-test og tilbyder stærke integrationsmuligheder. Det tilbyder både kodefri og nøgleordsdrevet testoprettelse og kan hjælpe teams med nemt at opbygge testcases til grænseværdianalyse. Der er nogle begrænsninger, du skal tage højde for, såsom en stejl indlæringskurve og en mangel på styrke sammenlignet med værktøjer som ZAPTEST.
#1. ZAPTEST
ZAPTEST er et omfattende værktøj til softwareautomatiseringstest med avancerede RPA-funktioner. Det er bygget til at give testere en brugervenlig og robust pakke af testautomatiseringsværktøjer, der kan hjælpe med at verificere software på en række forskellige måder, herunder med BVA i softwaretest.
Nogle af de mest overbevisende anvendelsesmuligheder for ZAPTEST som hjælp til grænseværdianalyse omfatter generering af testcases, håndtering af testdata, testudførelse samt rapportering og analyse. Med en række skabeloner og et højt niveau af tilpasning kombineret med oprettelse af testcases uden kode kan ZAPTEST-brugere hurtigt og nemt oprette og administrere robuste testcases til alle typer boundary analysis.
Ud over generering og styring af testcases kan ZAPTEST’s RPA-funktioner hjælpe testteams med deres boundary value analysis-test på andre måder. Du kan f.eks. automatisere udførelsen af testcases, generere testdata og opbygge effektive integrationer med andre testværktøjer.
Tips til test af grænseværdier
- Kombiner grænseværdianalyse med ækvivalenspartitionering for at sikre, at dine testcases dækker forskellige inputscenarier.
- Brug ugyldige inputscenarier (dvs. negativ test) for at sikre, at du verificerer, hvordan softwaren håndterer fejl og uventede inputs.
- Invester tid i at identificere grænseværdier for forskellige datatyper som tekst, tal, boolsk osv.
- Prioriter test af grænseværdier for kritiske funktioner eller områder, hvor der er større sandsynlighed for fejl.
- Brug realistiske data, der repræsenterer den slags data, dine brugere vil indtaste i dine domæner.
Afsluttende tanker
Grænseværdianalyse er en nyttig tilgang til funktionstest. Når du har et inputdomæne, skal du kontrollere, at det accepterer gyldige data og sender fejlmeddelelser, når det modtager ugyldige data. Boundary analysis-test hjælper med at verificere denne funktionalitet på en effektiv måde ved kun at bygge de testcases, der er nødvendige for omfattende test.
Grænsetest ser på værdier i eller omkring det acceptable område og verificerer, hvordan systemet reagerer på disse input. Resultatet er masser af sparet tid og reduceret indsats, fordi du ikke behøver at bygge overflødige testcases. I softwareudviklingens hurtige verden, hvor deadlines synes at komme tæt og hurtigt, har testteams brug for al den hjælp, de kan få.