Bir sınıfın / modülün / paketin / vb. Dahili / özel bileşenlerini ne ölçüde test ediyorsunuz? Onları hiç test ediyor musunuz, yoksa sadece dış dünyaya olan arabirimi mi test ediyorsunuz? Bu dâhili örnek özel yöntemlerdir.
Örnek olarak, tek bir merkezi prosedürden çağrılan birkaç dahili prosedür (fonksiyon / yöntem) içeren özyinelemeli bir iniş ayrıştırıcısı düşünün . Dış dünyaya tek arayüz, bir dize alan ve ayrıştırılan bilgileri döndüren merkezi prosedürdür. Diğer prosedürler ipin farklı kısımlarını ayrıştırır ve bunlar merkezi prosedürden veya diğer prosedürlerden çağrılır.
Doğal olarak, harici arayüzü örnek dizelerle çağırarak ve elle ayrıştırılmış çıktıyla karşılaştırarak test etmelisiniz. Peki ya diğer prosedürler? Alt dizelerini doğru şekilde ayrıştırıp ayırmadıklarını kontrol etmek için tek tek test eder misiniz?
Birkaç argüman düşünebilirim:
Artıları :
- Daha fazla test her zaman daha iyidir ve bu kod kapsamını artırmaya yardımcı olabilir
- Bazı dahili bileşenler, harici arayüze giriş vererek belirli girişler (örneğin kenar durumlar) vermek zor olabilir
- Daha net test. Dahili bir bileşende (sabit) bir hata varsa, bu bileşen için yapılan bir test durumu, hatanın söz konusu bileşende olduğunu açıkça belirtir
Eksileri :
- Yeniden düzenleme çok acı verici ve zaman alıcı hale geliyor. Herhangi bir şeyi değiştirmek için, harici arayüzün kullanıcıları etkilenmese bile birim testlerini yeniden yazmanız gerekir
- Bazı diller ve test çerçeveleri buna izin vermiyor
Görüşleriniz neler?