- TDD anlamında birim testlerinden bahsediyorum . (Otomatikleştirilmiş "entegrasyon" veya test olarak adlandırmayı sevdiğiniz şey değil.)
- Eski kod olduğu gibi: (C ++) testler olmadan kod. (bakınız: Michael Feathers'ın Eski Kodla Etkili Çalışması )
- Ancak şu şekilde olduğu gibi eski kod: Kodumuzun son 10-5 yıldır birlikte çalıştığı kodlar, bu yüzden bir şeyi değiştirmek için işleri nereye koyacağımızla ilgili çok iyi bir fikre sahibiz.
- Daha sonra gelen ya da ünite testlerine (doğal uygulamaya özel kaplar, sicim, ağ yardımcıları, vb.) Uygun bir "doğal" olan bazı modüller için birim testler yapıyoruz (Boost.Test yoluyla ).
- Henüz uygun otomatik kabul testlerine sahip değiliz.
Şimdi, son zamanlarda kullanıcılara yönelik 3 yeni özellik uygulamak için "zevk" aldım.
Bunların her biri, değiştirmem gereken kod parçalarını hızlandırmak için yaklaşık 1-2 saat, değiştirmem gereken (küçük) kodu uygulamak için 1-2 saat ve uygulamanın yapıldığından emin olmak için 1-2 saat daha aldı. Daha sonra doğru koştu ve yapmak gerekiyordu.
Şimdi, gerçekten küçük bir kod ekledim. (Her özellik için bir yöntem ve birkaç çağrı hattı olduğunu düşünüyorum.)
Bu kodu düzeltmek ( WEwLC'de önerilen yöntemlerden herhangi biriyle ), böylece bir birim testinin mantıklı olacağı (ve tam bir totoloji değildi) daha fazla olmasa bile 2-4 saat daha kolayca alabilecekti. Bu, her bir özelliğe, anında bir faydası olmadan,% 50 -% 100 zaman kazandıracaktır.
- Kod hakkında bir şey anlamak için birim testine ihtiyacım yoktu
- Manuel test, aynı miktarda çalışmadır, çünkü kodun uygulamanın geri kalanına doğru şekilde entegre edilip edilmediğini test etmem gerekir.
, Verilen eğer sonradan, "birisinin" gelip kod, o dokundu, teorik olarak bu birim testinden bazı yarar olabilir. (Sadece teorik olarak, test edilen kod adası olarak denenmemiş bir kod okyanusunda yaşayacaktır.)
Bu nedenle, "bu sefer" bir birim testi eklemek için çok çalışmamayı seçtim: Teste girenleri test etmek için kod değişiklikleri, özelliği doğru (ve temiz) bir şekilde uygulamak için kod değişikliklerinden önemli ölçüde daha karmaşık olurdu .
Bu güçlü bir şekilde bağlanmış eski kod için tipik bir şey mi? Tembel miyim / ekip olarak yanlış öncelikleri belirliyor muyuz? Yoksa, sadece ek yükün çok yüksek olmadığı şeyleri test etmek konusunda ihtiyatlı mıyım?