Sobes.tech
Junior

Beyaz kutu testinin özü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Beyaz kutu testi (White-box testing), yazılımın iç yapısını, tasarımını ve kodun mantığını kontrol eden bir yazılım testi yöntemidir. Test eden kişi kaynak koda erişebilir ve buna dayanarak test vakaları tasarlar.

Temel ilkeler:

  • Koda kapsama: Test vakaları, kodun çeşitli öğelerinin (operatörler, dallar, yollar) maksimum kapsamasını sağlamak için geliştirilir.
  • İç yapının bilgisi: Programın iç işleyişini anlamayı gerektirir.
  • Tespit: mantık hataları, yanlış yürütme yolları, döngüler ve koşullu operatörlerle ilgili sorunlar.
  • Otomasyon: Sık sık birim testleri, entegrasyon testleri ve kod seviyesinde güvenlik testlerinde kullanılır.

Kapsama türleri:

  • İfade kapsaması (Statement Coverage): Programdaki her ifadeyi en az bir kez çalıştırmak.
  • Dallanma kapsaması (Branch Coverage): Her koşulu (if, else, switch) hem true hem de false olarak çalıştırmak.
  • Yol kapsaması (Path Coverage): Programdaki tüm olası yolları çalıştırmak. (En kapsamlı, ancak genellikle pratik değildir).

Python'da dallanma kapsaması örneği:

# Örnek fonksiyon
def calculate_discount(price, is_member):
    if price > 100 and is_member: # Dal 1 (doğru)
        indirim = price * 0.1  # Dal 2 (Dal 1 'doğru' ise çalışır)
    else: # Dal 3 (yanlış)
        indirim = 0            # Dal 4 (Dal 1 'yanlış' ise çalışır)
    return price - indirim

# Dal kapsaması için test vakaları:
# 1. price > 100 ve is_member == True (Dal 1 doğru, Dal 2)
# 2. price <= 100 veya is_member == False (Dal 1 yanlış, Dal 3, Dal 4)

Avantajlar:

  • Erken geliştirme aşamalarında hataları tespit etme.
  • Kodun önemli bölümlerinin test edildiğini garanti eder.
  • Kodun nasıl çalıştığını anlamaya ve tasarımı geliştirmeye yardımcı olur.

Dezavantajlar:

  • Koda derinlemesine bilgi gerektirir.
  • Büyük ve karmaşık sistemler için zaman alıcı olabilir.
  • Programın son kullanıcı açısından çalışmasını test etmez (bu, kara kutu testlerinin görevidir).

Özünde, programın "nasıl" çalıştığını kontrol etmektir, sadece "ne" yaptığını değil.