Bu soruyu sormak istedim, kaç tane şirketin TDD'yi uyguladığını görmek istedim.
Profesyonelce programlama yaptığım 11 yılda, yalnızca son iki kuruluş TDD'nin bile farkındaydı (bu, neredeyse 5 yılını kapsıyordu, bundan önce TDD bugün olduğu kadar popüler değildi). TDD için satış adımına geçmeden önce takip etmeye devam edeceğim ve sorunuzu cevaplayacağım :)
En son çalıştığım şirkette (beşeri bilimler ve bilim koleksiyonlarının çevrimiçi akademik yayıncısı), TDD'yi uygulamak için ihtiyacımız olduğunu biliyorduk ama oraya asla ulaşamadık. Savunmamızda bir 250k kod tabanımız vardı, bu yüzden test edilemeyen bir kod tabanına testler eklemek aşılmaz hissettiriyordu (şimdi bunu yazarak suçlu hissediyorum!). En iyilerimiz bile hata yapar .
Küçük bir miktar TDD bile yapanlar, test edilemeyen kahverengi tarlalara ne kadar acı verici güçlendirme testlerinin uygulanabileceğini bilir ... Başlıca nedenler dolaylı bağımlılıklardır (tüm kolları koddan iddia etmek için çekemezsiniz - alay edemezsiniz) senaryolar) ve tek sorumluluk ilkesinin ihlali (testler karmaşık, karmaşık, çok fazla kurulum gerektiriyor ve anlaşılması zor ).
QA ekibimizi (bir, belki iki kişiden yarım düzine veya daha fazla) herhangi bir sürümden önce platformu test etmek için geçici olarak büyüttük . Akıllıca ve mali açıdan oldukça pahalı bir zamandı, bazı sürümlerin 'testi' tamamlaması üç ay alacaktı. O zaman bile sorunla karşı karşıya olduğumuzu biliyorduk, sadece 'engelleyici' ya da 'kritik' değil, sadece 'yüksek öncelikli'.
Yıllar süren bir ticari deneyiminiz varsa, her şirketin kritik görevler üstlendiğini takdir edersiniz ve daha sonra bunun üzerinde daha yüksek bir öncelik seviyesi yaratır ve büyük olasılıkla bunun da üzerinde - özellikle yukarıdan bir kişi bir özellik / hata düzeltmesi bastırdığında. Dalıyorum ...
Şu anki şirketimde (telekomünikasyon, web ve mobil uygulama geliştirme evi) TDD uyguladığımı ve diğer statik analiz raporlarını vermek için Jenkins testiyle (test paketi geçtikten sonra en kullanışlı olan kod kapsamı) bildirdiğime sevindim. . TDD'yi kullandığım projeler bir ödeme sistemi ve şebeke hesaplama sistemidir.
Satış perdesi ...
Teknik olmayan ekip üyelerine otomatik test yapılmasını haklı çıkarmak sık sık sıkıntı verici bir mücadele olabilir. Testler yazmak geliştirme sürecine daha fazla iş ekler, ancak ... şimdi test etmeye yatırım yaptığınız zaman, daha sonra bakım çabasından tasarruf edersiniz. Gerçekten sadece ödünç zaman alıyorsun . Ürün ne kadar uzun süre kullanılırsa, o kadar fazla tasarruf edersiniz - ve yeniden yazmaktan kaçınmanıza yardımcı olur .
Önce sınama, önce amacınızı kodladığınız ve ardından kodunuzun bu amacı yerine getirdiğini onayladığınız anlamına gelir. Bu, odaklanma sağlar ve kodunuzu yalnızca amaçlananı yapmaktan başka bir şey yapmamak için dağıtır. Aynı zamanda çalıştırılabilir bir özellik ve dokümantasyondur (aynı zamanda testiniz iyi yazılmışsa ve testler sistem kodunuz kadar okunabilir / temiz olmalıdır, daha fazla değilse!).
Programcı olmayanlar (çoğu zaman) bu kavrayışa sahip olmayacaklar ve TDD onlar için fazla bir değere sahip değil ve daha önceki bir sürüm tarihine atılabilir bir kısayol olarak görülüyor.
Programlama bizim alanımızdır ve bence TDD gibi en iyi uygulamalarla ilgili olarak profesyonel olarak danışman olarak bizim sorumluluğumuzdadır . Proje yöneticilerinin gelişim süresini kısaltmak için yapılıp yapılmadığına karar vermeleri için kendi yetki alanları dışındadır . Aynı şekilde, hangi çerçeveyi, önbelleğe alma çözümünü veya arama algoritmasını kullanmanız gerektiğini size söylemezler, otomatik sınama kullanıp kullanmamanız gerektiğini size söylememeliler.
Gelen Bence yazılım geliştirme endüstrisi (bütün üzerine), şu anda yazılımınızın testleri sahip norm DEĞİL olduğu gerçeğini bozuldu.
Bunu diğer endüstrilerde hayal edin: tıp, havacılık, otomobil, kozmetik, yumuşak oyuncaklar, alkollü içecekler vb.
Belki de hiçbir testin yapıldığını söylemek haksızlıktır ... çünkü otomatik test yapılmayan şirketlerde, çok manuel / insan (tıknaz ve sık sık hataya açık) işlemi okuyor.
Sorunuzda tartışacağım bir nokta ...
Genellikle gelişimin hemen veya kısa bir tasarımın ardından başlanmasını istediler. Agile'ye daha çok benziyor.
"Çevik" olmak, testler olmadan devam etmeyi öngörmez , agilemanifesto.org'da listelenen ilk üye , XP ve TDD'nin yaratıcısı Kent Beck'dir !
TDD ile ilgileniyorsanız, ya da sadece okumadıysanız ve keskin bir programcıysanız, iki kitap tavsiye ederim (herkes bu hakkı okuyor mu?;)
Testlerin Rehberliğinde Büyüyen Nesneye Dayalı Yazılım
Temiz Kod - Robert C Martin ("Bob Amca") Serisi
Bu iki kitap birbirine iltifat eder ve birkaç sayfaya yoğun bir şekilde bakmaktadır.
Bu soruyu sorduğun için teşekkürler :)