Birim testinin ne kadar iyi çalışması gerektiğine dair model olarak hizmet veren test odaklı geliştirme kullanılarak geliştirilen açık kaynaklı uygulamalar var mı?
C # ve .NET örneklerini görmeyi tercih ederim. (Yalnızca kitaplıklardan değil uygulamalardan bahsettiğimi unutmayın.)
TDD'ye gerçekten inanmak ve uygulamak isteyen orta seviye bir programcıyım. Gün işim üzerinde çalıştığım uygulama oldukça karmaşık - yaklaşık 1 milyon kod satırı - ve daha fazla birim testi tanıtmak isterim. Bazı birim testlerimiz var, ancak TDD'deki ve zaten test edilmiş olan kod üzerinde çalışma konusundaki çabalarım cesaret verici olmadı.
Kuşkusuz sınırlı deneyimlerime göre, TDD ayrıştırma adına birçok karmaşıklığı teşvik ediyor gibi görünüyor. Test edilmesi zor olan ve tesadüfen kritik olma eğilimi gösteren uygulama parçaları, çevreye, hiç yazılmayabilecek veya yazılmayacak entegrasyon testleri alanına itilir. (Ben burada her zamanki şüpheliler, dosya sistemi erişimi, bir veritabanından nesneleri nemlendirme, asenkron web çağrıları, vb düşünüyorum)
Test edilen kod, nesneler arasında çok sayıda işbirliği içerir ve belki de her şey tamamen bellekte gerçekleşen ve her şeyin tamamen ayrıştırılması gerekmiyorsa, muhtemelen daha basit, daha anlaşılır bir şekilde yazılabilecek bazı basit akış mantığı içerir. test için.
Alay bağımlılıkları ve benzeri teknikleri anlıyorum, ancak tecrübelerime göre alayın ağır kullanımı çok kırılgan testlere yol açıyor. Eğer bir sürü testin kırmızı olduğunu gördüğümde ilk içgüdüm "Harika, şimdi tüm alayları düzeltmem gerekiyor" ise, testlerim bir güvenlik ağı yerine sürüklenmeye başladı.
Bu zihinsel engeli aşmaya çalışıyorum ve bunun bir parçası olarak Michael Feathers'ın Eski Kod ile Etkili Çalışma kitabını okuyorum . Umarım eksik olduğum şeyleri gösterecektir.
Ayrıca iyi kod kapsamı, belki bir içerik yönetim sistemi veya bir CRUD uygulaması ile bazı önemsiz .NET uygulamaları incelemek istiyorum. Bob Amca'nın bahsettiği FitNesse test çerçevesi, muhtemelen bakacağım bir şeydir, ancak en tanıdığım dilde yazılmış bir şey görmek güzel olurdu.
Bilgelik önerileri veya sözleri takdir edilecektir.