Sobes.tech
Junior

Čo je podstata testovania bielej skrinky?

sobes.tech AI

Odpoveď od AI

Testovanie bielej skrinky (White-box testing) je metóda testovania softvéru, ktorá kontroluje vnútornú štruktúru, dizajn a logiku kódu. Tester má prístup k zdrojovému kódu a na základe toho navrhuje testovacie prípady.

Hlavné princípy:

  • Pokrytie kódu: Testovacie prípady sú vyvíjané tak, aby dosiahli maximálne pokrytie rôznych prvkov kódu (operátory, vetvy, cesty).
  • Znalosť vnútornej štruktúry: Vyžaduje pochopenie toho, ako program funguje vo vnútri.
  • Detekcia: chýb v logike, nesprávnych ciest vykonávania, problémov s slučkami a podmienkami.
  • Automatizácia: Často sa používa pri jednotkových testoch, integračných testoch a bezpečnostných testoch na úrovni kódu.

Typy pokrytia:

  • Pokrytie príkazov (Statement Coverage): Vykonanie každého príkazu v programe aspoň raz.
  • Pokrytie vetiev (Branch Coverage): Vykonanie každej podmienky (if, else, switch) ako true a ako false.
  • Pokrytie ciest (Path Coverage): Vykonanie všetkých možných ciest cez program. (Najkompletnejšie, ale často nepraktické).

Príklad pokrytia vetiev v Pythone:

# Príklad funkcie
def calculate_discount(price, is_member):
    if price > 100 and is_member: # Vetva 1 (pravda)
        discount = price * 0.1  # Vetva 2 (sa vykoná, ak je Vetva 1 'pravda')
    else: # Vetva 3 (nepravda)
        discount = 0            # Vetva 4 (sa vykoná, ak je Vetva 1 'nepravda')
    return price - discount

# Testovacie prípady na pokrytie vetiev:
# 1. price > 100 a is_member == True (pokrytie Vetva 1 pravda, Vetva 2)
# 2. price <= 100 alebo is_member == False (pokrytie Vetva 1 nepravda, Vetva 3, Vetva 4)

Výhody:

  • Včasné odhalenie chýb.
  • Zabezpečuje, že dôležité časti kódu boli otestované.
  • Pomáha pochopiť, ako kód funguje a zlepšiť jeho dizajn.

Nevýhody:

  • Vyžaduje hlboké znalosti kódu.
  • Môže byť časovo náročné pre veľké a zložité systémy.
  • Netestuje fungovanie programu z pohľadu koncového používateľa (čo je úlohou testov čiernej skrinky).

Podstatou je overiť "ako" funguje program, nie len "čo" robí.