Geçtiğimiz birkaç hafta boyunca, test metodolojimizdeki bir boşluğu nasıl dolduracağımı araştırıyor ve araştırıyorum. Basitleştirilmiş terimlerle birim testleri çok küçük ve geleneksel entegrasyon testleri çok büyük.
Bileşenin kullanıldığı A
ve B
her ikisinin de sık olduğu bir senaryo ortaya çıkar C
. Ancak A
ve B
biraz farklı gereksinimler var ve hakkında biraz farklı varsayımlar yapmak C
. Eğer A
varsayımlarımı nasıl ve nerede test edersem geliştiriciysem C
?
Açıkçası A
, alay konusu varsayımlarla yapılan birim testler , tek başına C
test etmek için iyidir A
, ancak varsayımları kendileri test etmez.
Başka bir olasılık da birim testleri eklemektir C
. Bununla birlikte, bu ideal değildir, çünkü A
geliştirme aşamasındayken, testleri C
gelişen varsayımlarla değiştirmek A
aşırı derecede sakar olacaktır. Gerçekten de A
geliştiricinin birim testlerine C
(örneğin harici bir kütüphane) yeterli erişimi olmayabilir .
Bunu daha somut bir örnekle çerçevelemek için: Bunun bir düğüm uygulaması olduğunu varsayın. A
ve bir dosyayı (diğer şeylerin yanı sıra) okumaya ve dosya içeriğini aktarılan nesnede depolamaya B
bağlıdır . İlk başta işlenen tüm dosyalar küçüktür ve önemli bir engelleme olmadan senkronize olarak okunabilir. Ancak geliştirici, dosyalarının büyük olduğunu ve zaman uyumsuz bir okumaya geçmesi gerektiğini fark eder . Bu , dosyaları eşzamanlı olarak okuduğunu varsaydığı bir zaman zaman eşitleme hatasıyla sonuçlanır .C
C
C
B
C
A
C
Bu, tam entegrasyon testlerinden izlenmesi son derece zor olan bir hata türüdür ve entegrasyon testlerine hiç yakalanamayabilir. Ayrıca A
s birim testleri tarafından yakalanmaz çünkü A
s varsayımları alay edilir. Ancak, sadece A
ve sadece egzersiz yapan bir "mini" entegrasyon testi ile kolayca yakalanabilir C
.
Bu tür testlere yalnızca birkaç referans buldum. Küçük , Bileşen Entegrasyon Testine Entegrasyon , Birim Entegrasyon Testine. Aynı zamanda resmi TDD birim testi yerine BDD test yönü ile ilgilidir .
Bu test boşluğunu nasıl doldurabilirim? Özellikle - bu tür testleri nereye koyacağım? "Mini" entegrasyon testlerinin giriş A
ve girişlerini nasıl taklit edebilirim C
? Ve bu testler ile birim testleri arasındaki test endişelerini ayırmak için ne kadar çaba harcanmalıdır? Yoksa test boşluğunu doldurmanın daha iyi bir yolu var mı?