Son derece kısa versiyon: daha küçük testler, sistemin daha küçük parçalarını çalıştırdıkları için, programcıların yazabileceklerini doğal olarak kısıtlarlar ve bu da daha net (fark etmesi / görmemesi daha zor) geri bildirimler için bir fırsat yaratır. Bunun mutlaka daha iyi tasarıma yol açmayacağını, bunun yerine tasarım risklerini daha erken fark etme fırsatı yarattığını ekleyeyim.
Öncelikle, açıklamak gerekirse, "en küçük" derken, "küçük bir test" demek, daha fazlasını değil. Bu terimi kullanıyorum çünkü "birim testi" demek istemiyorum: "birim" teşkil ettiği konulardaki tartışmalara karışmak istemiyorum. Umurumda değil (en azından burada / şimdi değil). İki kişi muhtemelen "küçük" konusunda "birim" den ziyade daha kolay anlaşacaklardır, bu yüzden yavaş yavaş bu fikir için ortaya çıkan standart bir terim olarak "microtest" ı kullanmaya karar verdim.
Daha büyük testler, sistemin daha büyük parçalarını "eylem" bölümünde yapan testler, tasarımı açıkça veya tamamen küçük testler kadar eleştirme eğilimi göstermezler. Belirli bir test grubunu geçebilecek tüm kod tabanlarının kümesini hayal edin, bu da kodu yeniden düzenleyebileceğimi ve yine de bu testleri geçebileceğini gösterir. Daha büyük testler için bu set daha büyüktür; Daha küçük testler için bu set daha küçüktür. Farklı bir şekilde söylendiği gibi, daha küçük testler tasarımı daha fazla kısıtlar, böylece daha az tasarım geçmelerini sağlayabilir. Bu şekilde, mikro testler tasarımı daha çok eleştirebilir.
Size doğrudan duymak istemediğiniz, ancak duymanız gereken ve başkalarının rahat hissetmeyeceği bir şekilde aciliyet iletmek için size seslenmesini söyleyen bir arkadaşınızın imajını canlandırmak için "daha sert" diyorum. yapıyor. Öte yandan, bütünleşik testler sessiz kalıyorlar ve sadece çoğu zaman bunları çözmek için zamanınız ya da enerjiniz olmadığında sorunlara ipucu veriyorlar. Entegre testler tasarım problemlerini halının altına süpürmeyi çok kolaylaştırıyor.
Daha büyük testlerle (tümleşik testler gibi), programcılar çoğunlukla dikkatsizlik yüzünden başları derde sokma eğilimindedir: bir şekilde testleri geçen karışık kodlar yazma özgürlüğüne sahiptir, ancak bu kodu anlamaları bir sonraki göreve geçtiklerinde hemen kaybolur ve diğerleri karışık tasarımı okumakta zorlanıyorlar. Burada entegre testlere güvenme riski yer almaktadır. Daha küçük testlerde (mikro testler gibi), programcılar çoğunlukla aşırı spesifikasyonlarla sorun yaşamaya meyillidirler: testleri, genellikle önceki testten kopyala / yapıştır yoluyla alakasız detaylar ekleyerek, aşırı kısıtlamalar yaparlar ve böylece kendilerini nispeten hızlı bir şekilde boyarlar bir köşeye. İyi haberler: Bunları yazdıktan birkaç saat veya gün sonra, fazladan ayrıntıların testten çıkarılmasından çok daha kolay ve daha güvenli buluyorum. Hatalar gittikçe fazla belirtmek, çok daha belirgin bir şekilde hasarı daha hızlı yapar ve alarm programcısı daha önce işleri düzeltmeleri gerektiğini görür. Bunu bir güç olarak görüyorum: Sorunları daha önce fark ettim ve bu sorunları özellikler ekleme kapasitemize boğmadan önce düzeltiyorum.