Sobes.tech
Junior

V čem spočívá testování bílého boxu?

sobes.tech AI

Odpověď od AI

Testování bílého boxu (White-box testing) je metoda testování softwaru, která kontroluje vnitřní strukturu, návrh a logiku kódu. Tester má přístup ke zdrojovému kódu a na jeho základě navrhuje testovací případy.

Hlavní principy:

  • Pokrytí kódu: Testovací případy jsou vyvíjeny tak, aby dosáhly maximálního pokrytí různých prvků kódu (operátory, větve, cesty).
  • Znalost vnitřní struktury: Vyžaduje pochopení toho, jak program uvnitř funguje.
  • Detekce: chyb v logice, nesprávných cestách provádění, problémů s cykly a podmíněnými operátory.
  • Automatizace: Často se používá u jednotkových testů, integračních testů a bezpečnostních testů na úrovni kódu.

Typy pokrytí:

  • Pokrytí příkazů (Statement Coverage): Provedení každého příkazu v programu alespoň jednou.
  • Pokrytí větví (Branch Coverage): Provedení každé podmínky (if, else, switch) jak jako true, tak jako false.
  • Pokrytí cest (Path Coverage): Provedení všech možných cest programem. (Nejkompletnější, ale často nepraktické).

Příklad pokrytí větví v Pythonu:

# Příklad funkce
def calculate_discount(price, is_member):
    if price > 100 and is_member: # Větev 1 (pravda)
        discount = price * 0.1  # Větev 2 (provádí se, pokud Větev 1 je 'pravda')
    else: # Větev 3 (nepravda)
        discount = 0            # Větev 4 (provádí se, pokud Větev 1 je 'nepravda')
    return price - discount

# Testovací případy pro pokrytí větví:
# 1. price > 100 a is_member == True (pokrytí Větev 1 pravda, Větev 2)
# 2. price <= 100 nebo is_member == False (pokrytí Větev 1 nepravda, Větev 3, Větev 4)

Výhody:

  • Včasné odhalení chyb.
  • Zajišťuje, že důležité části kódu byly otestovány.
  • Pomáhá pochopit, jak kód funguje, a zlepšit jeho návrh.

Nevýhody:

  • Vyžaduje hluboké znalosti kódu.
  • Může být časově náročné u velkých a složitých systémů.
  • Neověřuje funkčnost programu z pohledu koncového uživatele (což je úkolem testů černé skříňky).

Podstatou je ověřit "jak" program funguje, nikoli pouze "co" dělá.