Çok sıkı son teslim tarihleri nedeniyle geliştirme sırasında test odaklı bir geliştirme süreci yoktu
Bu ifade çok endişe vericidir. TDD olmadan geliştirdiğiniz veya her şeyi test etmediğiniz için değil. Bu endişe verici çünkü TDD'nin sizi yavaşlatacağını ve bir son tarihi kaçırmanıza neden olacağını gösteriyor.
Bu şekilde gördüğünüz sürece TDD için hazır değilsiniz. TDD yavaş yavaş rahatlayabileceğiniz bir şey değildir. Bunu nasıl yapacağınızı biliyorsunuz ya da bilmiyorsunuz. Bunu yarıya kadar denerseniz, kendiniz kötü görüneceksiniz.
TDD ilk önce evde pratik yapmanız gereken bir şeydir. Eğer yardımı çünkü bunu yapmak için öğrenin size kod şimdi . Birisi sana bunu yapmanı söylediğinden değil. Daha sonra değişiklik yaptığınızda yardımcı olacağı için değil. Yapılan bir şey olduğunda , çünkü sen Aceleniz sonra profesyonel olarak yapmaya hazırız.
TDD, herhangi bir dükkanda yapabileceğiniz bir şeydir . Test kodunuzu çevirmeniz bile gerekmez. Diğerleri testleri reddederse bunu kendinize saklayabilirsiniz. Doğru yaptığınızda, testler başka hiç kimse çalıştırmasa bile gelişiminizi hızlandırır.
Öte yandan, başkaları testlerinizi seviyor ve çalıştırıyorsa, bir TDD mağazasında bile testleri kontrol etmek sizin işiniz değildir. Kanıtlanmış çalışan üretim kodu oluşturmaktır. Eğer test edilebilir olursa, temiz.
Yönetimin TDD'ye inanması veya diğer kodlayıcılarınızın testlerinizi desteklemesi gerektiğini düşünüyorsanız, TDD'nin sizin için en iyi şeyi görmezden geliyorsunuz. Kodunuzun yaptığını düşündüğünüz ile gerçekte ne yaptığı arasındaki farkı hızlı bir şekilde gösterir.
Eğer kendi başına, son teslim tarihini daha hızlı karşılamanıza nasıl yardımcı olabileceğini göremiyorsanız işte TDD için hazır değilsiniz. Evde pratik yapmalısın.
Bununla birlikte, ekibin üretim kodunuzu okumalarına yardımcı olmak için testlerinizi kullanması ve yönetimin yeni TDD araçları satın alması hoş olur.
Ekibi TDD'ye dönüştürdükten sonra olası tüm test senaryolarını yazmak iyi bir fikir mi?
Ekibin ne yaptığından bağımsız olarak, olası tüm test senaryolarını yazmak her zaman iyi bir fikir değildir. En kullanışlı test senaryolarını yazın. % 100 kod kapsamı bir maliyete sahiptir. Yargılama çağrısı yapmak zor olduğu için geri dönüşlerin azaltılması yasasını göz ardı etmeyin.
İlginç iş mantığı için test enerjinizi koruyun. Kararlar veren ve politikayı uygulayan şeyler. Heck bunu test et. Sadece bir şeyleri birbirine bağlayan, okunması kolay bariz yapısal yapıştırıcı kodunun sıkıcı olması, neredeyse kötü bir şekilde teste ihtiyaç duymaz.
(1) Her şey tamamen iyi çalışsa bile, gelişimin çoğunu durdurmak ve mümkün olan tüm test senaryolarını baştan yazmaya başlamak hala iyi veya iyi bir fikir mi? Veya
Hayır. Bu "tamamen yeniden yazalım" düşüncesidir. Bu zor kazanılmış bilgiyi yok eder. Yönetimden test yazması için zaman istemeyin. Sadece testler yaz. Ne yaptığınızı öğrendikten sonra, testler sizi yavaşlatmaz.
(2) kötü bir şey olmasını beklemek daha iyidir ve daha sonra düzeltme sırasında yeni birim testleri yazın veya
(3) önceki kodları bile unutun ve sadece yeni kodlar için birim testleri yazın ve her şeyi bir sonraki büyük refactor'a erteleyin.
2 ve 3'e aynı şekilde cevap vereceğim. Kodu değiştirdiğinizde, herhangi bir nedenle, bir teste geçebiliyorsanız gerçekten güzel. Kod eskiyse, şu anda bir testi kabul etmemektedir. Bu, değiştirmeden önce test etmek zor olduğu anlamına gelir. Yine de değiştirdiğiniz için test edilebilir bir şeye dönüştürebilir ve test edebilirsiniz.
Bu nükleer seçenek. Riskli. Testler olmadan değişiklik yapıyorsunuz. Eski kodu değiştirmeden önce test etmek için bazı yaratıcı hileler vardır. Kod değiştirmeden kodunuzun davranışını değiştirmenize izin veren dikişler olarak adlandırılan şeyi ararsınız. Yapılandırma dosyalarını değiştirir, dosyaları oluşturur, ne olursa olsun.
Michael Feathers bize bu konuda bir kitap verdi: Eski Kod ile Etkili Çalışma . Bir okuma yapın ve yeni bir şey yapmak için eski her şeyi yakmanız gerekmediğini göreceksiniz.