it-swarm.asia

TDD öğrenmek için en iyi kaynaklar nelerdir?

TDD öğrenmek (ve master yapmak) istiyorum. En iyi olanlar:

  • kitabın
  • web siteleri
  • videolar
  • egzersiz listesi
  • bilgeliğin kişisel kelimeleri

tDD'yi öğrenmek, takdir etmek ve kullanmak için?

27
Eric

Şahsen bir JUnit makalesi okuduğumda, "testi koddan önce yazıyorsunuz" un başlamam için yeterli olduğunu vurguladım.

Bu teknolojiyi öğrenmenin en önemli kısmı bir çok test tabanlı kod yazmaktır, çünkü kod yazmayı düşündüğünüz en temel yollardan bazılarını değiştirmeniz gerekiyor. Gibi şeyler:

  • Testi koddan önce yazmak, kodunuzu nasıl çağıracağınızı ve sonucu nasıl geri alacağınızı düşünmenizi sağlar. Bu, API'yı ilk önce nasıl kullanacağınıza bağlı olarak tasarladığınız anlamına gelir. Bu genellikle daha iyi bir API ile sonuçlanır.
  • Kodlama stiliniz değişecek çünkü daha modüler düşünmeniz, kodun parçalarını sadece her şey yerine test edebilmeniz GEREKİR.
  • Ayrıca, büyük bir parçayı güvenle çıkarabileceğiniz ve aynı şekilde davranmak yerine yeni bir parça ekleyebileceğiniz bir noktaya geleceksiniz, çünkü test geçmeniz. Orijinali çok yumuşak olduğu için bunu bir tarih ayrıştırma kitaplığıyla yaptım.

Küçük başlamak için en iyi yer, yardımcı program rutinleridir. Bir dahaki sefere ihtiyacınız olduğunda, önce testlerle, tüm resmi kullanımlarınızı kapsayan (geçilen boş değerlerde ne olması gerektiği vb. Dahil) çok sayıda test yazacağınızı ve tüm kullanım durumlarının uygulandığında kullanabileceğinizi tasarlayın. doğrudan kodunuzda ve beklendiği gibi çalıştığından emin olun.

Deneyimlerim de iyi testlerin dokümantasyon olarak ek iş yapabileceğidir, çünkü kodun çeşitli durumlarda tam olarak nasıl davrandığını söyleyen çok özlü bir kodunuz vardır, bu da doğru olduğu kanıtlanabilir (yeşil çubuk). Dikkatli yorumlarla bundan daha iyi olamazsınız.

Java jUnit sürüm 4 gerçekten güzel.

18
user1249

Daha önce bahsedilen bazı kitapların dışında Testler Tarafından Yönlendirilen Büyüyen Nesneye Dayalı Yazılım önerebilirim. Henüz okumayı bitirmedim, ama sadece basitleştirilmiş kod örnekleri değil, tüm gerçekçi bir TDD projesinin hikayesi de dahil olmak üzere değerli bir okuma.

8
Péter Török

Kanımca, TDD, kodu test yazmaktan ziyade test edilebilir yapmaktan daha fazlasıdır.

Elbette kodlamadan önce bir test yazabilirsiniz, ancak testin yazılmasının tüm nedeni kod yazabilmenizdir - bu da test edilmesi zor olan kod yazmanızı engellemez.

Ne demek istediğimi daha iyi anlamak için şuna bir göz atın: Birleşik Hatalar Teorim

Konseptle ilgileniyorsanız ve daha fazla bilgi edinmek istiyorsanız, yorum yapmanız yeterlidir; sizi Google'dan konuyla ilgili kaydedilmiş bir sunuma yönlendireceğim.

GÜNCELLEME:

Nasıl Temiz, Test Edilebilir Kod Yazılır

Miško Hevery Sunum (Tarafından GoogleTechTalks ) NYC'de Google adresinde ve Google'ın Mühendislik Verimliliği grubu sponsorluğunda

8
blunders

İki kitap okudum:

Test Odaklı Geliştirme: Örnek Olarak Kent Beck ve

Birim Test Çerçeveleri Paul Hamil

Beck kitabı iyi sayılır, ancak "Birim Test Çerçeveleri" ni okuyana kadar birim testine başlamadım. Bazı TDD yapıyorum, ama ben de (yapabildiğimde) korumak zorunda eski kod testleri eklerim.

Düzenleme: Ayrıca, bir kez ele almak, ben hemen mevcut bir proje üzerinde kullanmanızı öneririz. Benim için gerçek öğrenme gerçekleşti ve bence "Birim Test Çerçevesi" kitabı bu amaç için daha iyi bir referans kitaptı. (C # ile nunit kullanıyordum).

4
vjones

Öncelikle TDD ile ilgili olmasa da (üzerinde durulabilir ve test edilebilirlik için tasarım olsa da), Birim Testi Sanatı = tavsiye edeceğim bir kitap çünkü size nasıl iyi testler yazacağınızı öğretiyor.

Daha spesifik olarak, güvenilir, sürdürülebilir ve okunabilir testlerin nasıl oluşturulacağını öğretir. Bence bu, kitabın en önemli bölümü, belki de birim test ve izolasyon çerçevelerinin temelleri dışında. Birim testleri bir ağrı noktası haline gelirse veya bir geliştiricinin işine sürtünme eklerse, o zaman herhangi bir başarı veya fayda sınırlı olacaktır. Testleri oluşturmak için zaman ve çaba harcıyorsa, o yatırımdan en fazla getiriyi alabilmelidir.

4
Matt