Junior
Mi a fehér doboz tesztelés lényege?
sobes.tech MI
Válasz az MI-től
A fehér doboz tesztelés (White-box testing) egy szoftvertesztelési módszer, amely a kód belső szerkezetét, kialakítását és logikáját vizsgálja. A tesztelő hozzáfér a forráskódhoz, és ennek alapján tervezi a teszteseteket.
Alapelvek:
- Kódlefedettség: A teszteseteket úgy fejlesztik ki, hogy a lehető legnagyobb lefedettséget érjék el a kód különböző elemeiben (operátorok, ágak, utak).
- A belső szerkezet ismerete: Megköveteli, hogy megértse, hogyan működik a program belülről.
- Hibák felismerése: logikai hibák, helytelen végrehajtási utak, ciklusok és feltételes operátorok problémái.
- Automatizálás: Gyakran használják egységtesztekben, integrációs tesztekben és biztonsági tesztekben a kód szintjén.
Fedettség típusai:
- Állítások lefedése (Statement Coverage): Minden utasítást legalább egyszer végrehajtani a programban.
- Ágak lefedése (Branch Coverage): Minden feltételt (if, else, switch) igaz és hamis értékekkel is végrehajtani.
- Út lefedése (Path Coverage): Minden lehetséges út végrehajtása a programon belül. (A legteljesebb, de gyakran nem praktikus).
Python példával az ágak lefedésére:
# Példafüggvény
def calculate_discount(price, is_member):
if price > 100 and is_member: # Ág 1 (igaz)
discount = price * 0.1 # Ág 2 (végrehajtódik, ha az Ág 1 'igaz')
else: # Ág 3 (hamis)
discount = 0 # Ág 4 (végrehajtódik, ha az Ág 1 'hamis')
return price - discount
# Tesztesetek az ágak lefedésére:
# 1. price > 100 és is_member == True (Ág 1 igaz, Ág 2)
# 2. price <= 100 vagy is_member == False (Ág 1 hamis, Ág 3, Ág 4)
Előnyök:
- Hibák korai felismerése.
- Biztosítja, hogy a fontos kódrészek tesztelve legyenek.
- Segít megérteni, hogyan működik a kód, és javítani a tervezést.
Hátrányok:
- Mély ismereteket igényel a kódról.
- Időigényes lehet nagy és összetett rendszerek esetén.
- Nem teszteli a program működését a végfelhasználó szempontjából (ez a fekete doboz tesztelés feladata).
Lényege, hogy ellenőrizzük "hogyan" működik a program, nem csak "mit" csinál.