Wat is Grenswaardenanalyse (boundary value analysis)?

Techniek voor blackboxtesten die, omdat defecten zich vaak ophopen bij de grenzen tussen equivalentieklassen, de waarden direct aan beide kanten van elke grens test (bijvoorbeeld 0, 1, 100 en 101 als 1 tot 100 wordt geaccepteerd). Ze is goed in het vinden van fouten zoals verwisselde vergelijkingsoperatoren.

Japanse benaming: 境界値分析

“Grenswaardenanalyse (boundary value analysis)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Softwareontwikkeling en projectmanagement.

Vakgebied: Softwareontwikkeling en projectmanagement

Waarom de grenzen testen

Voorwaardelijke vertakkingen in programma's zijn gevoelig voor fouten zoals het verwisselen van „<” en „<=” of „>” en „>=”, of een array-index die er één naast zit (off-by-one), en het effect verschijnt alleen bij grenswaarden. Zegt de specificatie bijvoorbeeld „waarschuw bij 85 °C of hoger” maar staat in de code if (t > 85), dan werkt het programma bij 84 °C en 86 °C volgens de specificatie en blijft de waarschuwing alleen bij 85 °C uit. Wie met equivalentiepartitionering alleen de middelste waarde van elke klasse test, vindt zulke fouten niet.

De waarden kiezen

Worden gehele getallen van 1 tot 100 geaccepteerd, dan worden 0 en 1 gekozen bij de ondergrens en 100 en 101 bij de bovengrens. Een fijnere variant test elke grenswaarde en haar beide buren (0, 1, 2 en 99, 100, 101). Zijn er meerdere categorieën, zoals tariefcategorieën, dan worden waarden aan beide kanten gekozen van elke grens waar de categorie verandert. Bij decimale invoer wordt de naburige waarde bepaald door de resolutie die in de specificatie is vastgelegd (zoals stappen van 0,1).

Grenzen in software dicht bij de hardware

Embedded software heeft veel numerieke grenzen in haar specificatie, zoals drempels op ADC-waarden, het punt waarop een timerteller van zijn maximum naar 0 terugspringt, het punt waarop een buffer precies vol raakt, en de maximale pakketlengte van een communicatieprotocol. Rekenfouten treden vaak op rond de overloop van 255 naar 0 bij een 8-bitsteller, of rond de grens tussen 32.767 en −32.768 bij een 16-bits geheel getal met teken. Zulke grenzen worden opgespoord aan de hand van zowel de getallen in de specificatie als de bereiken van de datatypen.

Nu oefenen: vragen over Grenswaardenanalyse (boundary value analysis)

Een programma bepaalt de toegangsprijs op basis van leeftijd (een geheel getal van 0 of meer): 0 tot 17 jaar betaalt het kindertarief, 18 tot 64 jaar het standaardtarief en 65 jaar of ouder het seniorentarief. Welke reeks testwaarden is het meest geschikt voor grenswaardenanalyse om de grenzen te controleren waar de tariefcategorie verandert?

  1. A10, 40, 90
  2. B17, 18, 64, 65
  3. C18, 65
Antwoord en toelichting tonen

Antwoord: B. 17, 18, 64, 65

Omdat defecten zich vaak ophopen bij de grenzen tussen equivalentieklassen, test grenswaardenanalyse de waarden direct aan beide kanten van elke grens. Bij de grens tussen kinder- en standaardtarief worden 17 en 18 gekozen, en bij de grens tussen standaard- en seniorentarief 64 en 65; dat geeft de vier waarden 17, 18, 64 en 65. Fouten zoals „<” schrijven in plaats van „<=” in een voorwaarde worden soms niet gevonden als alleen één kant van een grens wordt getest. 10, 40 en 90 zijn waarden van equivalentiepartitionering, gekozen als representanten van elke categorie, en daarmee kunnen fouten bij de grenzen niet worden gecontroleerd.

Veelgestelde vragen

Hoe worden equivalentiepartitionering en grenswaardenanalyse samen gebruikt?

Meestal worden ze gecombineerd. Equivalentiepartitionering verdeelt de invoer in klassen en test een representant van elke klasse, en grenswaardenanalyse voegt tests toe aan beide kanten van de klassengrenzen. Equivalentiepartitionering alleen beperkt het aantal tests, maar mist gemakkelijk fouten bij de grenzen.

Is grenswaardenanalyse een techniek voor whiteboxtesten?

Ze kiest waarden bij de grenzen van de bereiken die in de specificatie staan, dus het is een techniek voor blackboxtesten. Sommige grenzen, zoals arraygrootten en bereiken van datatypen in de implementatie, staan echter niet in de specificatie, dus soms worden waarden toegevoegd na het bekijken van de broncode.

“Grenswaardenanalyse (boundary value analysis)” in de toelichting

Vragen met “Grenswaardenanalyse (boundary value analysis)” (3)

  1. Een programma bepaalt de toegangsprijs op basis van leeftijd (een geheel getal van 0 of meer): 0 tot 17 jaar betaalt het kindertarief, 18 tot 64 jaar het standaardtarief en 65 jaar of ouder het seniorentarief. Welke reeks testwaarden is het meest geschikt voor grenswaardenanalyse om de grenzen te controleren waar de tariefcategorie verandert?
  2. Welke beschrijving van blackboxtesten is juist?
  3. Volgens de specificatie moet er „een waarschuwing worden gegeven als de temperatuur 85 °C of hoger is”, maar in de firmware staat per vergissing „if (t > 85)”. De temperatuur t is een geheel getal. Met welke van de volgende testwaarden kan deze fout worden gevonden?

Verwante termen

Equivalentiepartitionering (equivalence partitioning) Blackboxtesten (black-box testing) Whiteboxtesten (white-box testing) Agile ontwikkeling (agile development) CI/CD (continuous integration en continuous delivery) Earned value management (EVM) Kritiekepadmethode (CPM) Scrum SLA (service level agreement) Takdekking (branch coverage)

Naar de woordenlijst