Sobes.tech
Junior

Wat is de kern van white-box testing?

sobes.tech AI

Antwoord van AI

White-box testing is een methode van softwaretesten die de interne structuur, het ontwerp en de logica van de code controleert. De tester heeft toegang tot de broncode en ontwerpt testgevallen op basis daarvan.

Basisprincipes:

  • Code coverage: Testgevallen worden ontwikkeld om maximale dekking te bereiken van verschillende elementen van de code (operatoren, takken, paden).
  • Kennis van de interne structuur: Vereist begrip van hoe het programma intern werkt.
  • Detectie: van fouten in de logica, onjuiste uitvoeringspaden, problemen met lussen en conditionele operatoren.
  • Automatisering: Wordt vaak gebruikt bij unittests, integratietests en beveiligingstests op code-niveau.

Soorten dekking:

  • Statement coverage: Uitvoering van elke instructie in het programma minstens één keer.
  • Branch coverage: Uitvoering van elke voorwaarde (if, else, switch) zowel als true als false.
  • Pad coverage: Uitvoering van alle mogelijke paden door het programma. (Het meest volledig, maar vaak onpraktisch).

Voorbeeld van branch coverage in Python:

# Voorbeeldfunctie
def calculate_discount(price, is_member):
    if price > 100 and is_member: # Tak 1 (true)
        discount = price * 0.1  # Tak 2 (wordt uitgevoerd als Tak 1 'true')
    else: # Tak 3 (false)
        discount = 0            # Tak 4 (wordt uitgevoerd als Tak 1 'false')
    return price - discount

# Testgevallen voor dekking van takken:
# 1. price > 100 en is_member == True (dekking Tak 1 true, Tak 2)
# 2. price <= 100 of is_member == False (dekking Tak 1 false, Tak 3, Tak 4)

Voordelen:

  • Vroegtijdige detectie van fouten.
  • Garandeert dat belangrijke delen van de code getest zijn.
  • Helpt te begrijpen hoe de code werkt en het ontwerp te verbeteren.

Nadelen:

  • Vereist diepgaande kennis van de code.
  • Kan arbeidsintensief zijn voor grote en complexe systemen.
  • Test niet de werking van het programma vanuit het perspectief van de eindgebruiker (wat de taak is van black-box testen).

Het komt erop neer dat je controleert "hoe" het programma werkt, niet alleen "wat" het doet.