Meslektaşlarınızla birlikte olma eğilimindeyim, ancak sadece bir noktaya kadar.
Birim testleri ile ilgili sorun, kodun üstünkörü incelemesinin ne olursa olsun çalışacağını ortaya çıkardığı önemsiz vakalara sıklıkla ve dikkatsizce yazılmasıdır. Örneğin:
def add(x, y)
x + y
end
Eklemenin gerçekten seçilmiş kullanım vakaları için gerçekten işe yarayacağından emin olmak için bir düzine testle birlikte. Yaa ...
Birim testinin ardındaki genel öneri şudur: Kodunuzda hata yoksa, bunun nedeni yeterince test etmemenizdir. Şimdi, uygun birim testleri ne zaman yazılır. Yanıtlar:
- Test ederken
- Hata ayıkladığınız zaman
- Gerçekten zor şeyler geliştirirken
Her birini inceleyelim, bir çeşit web uygulaması geliştirdiğinizi varsayalım.
Yeni işlevselliğe bazı kodlar yazıyorsunuz ve şu ana kadar makul bir şekilde çalışması gerekiyor. Daha sonra tarayıcınıza ulaşın ve daha yoğun bir şekilde test ederek çalıştığını doğrulayın, değil mi? Bzzzt! ... Yanlış cevap. Birim testi yazıyorsunuz. Şimdi bunu yapmazsan, muhtemelen asla yapmayacaksın. Ve bu, birim testlerinin çok iyi çalıştığı yerlerden biridir: üst düzey işlevselliği test etmek.
Daha sonra bir hata keşfedersiniz (hiç kim kaçırmaz?). Bu bizi ikinci noktaya getiriyor. Kodu geri daldırın ve adımları izlemeye başlayın. Yaptığınız gibi, birim testlerini tutarlı ve doğru verilere sahip olmanın çok önemli olduğu kilit noktalara yazın.
Son nokta ise tam tersi. Çok sayıda meta-programlama içeren kıllı bir işlevsellik tasarlıyorsunuz. Binlerce olası senaryo ile hızlı bir şekilde bir karar ağacı oluşturur ve bunların her birinin çalıştığından emin olmanız gerekir. Bu tür şeyleri yazarken, burada veya orada basit görünümlü bir değişiklik, gıda zincirinin aşağısında hayal edilemez sonuçlara yol açabilir. Diyelim ki, SQL tetikleyicileri kullanarak bir MPTT uygulaması tasarlıyorsunuz - böylece çok satırlı ifadelerle çalışabiliyor.
Bu tür dikenli bir ortamda, genellikle testlerinizi yüksek derecede otomatikleştirmek istersiniz. Bu nedenle, test verilerinin oluşturulmasını otomatikleştirmek için komut dosyaları yazıyorsunuz ve bu test verileri üzerinde tekne yükü birim testleri çalıştırıyorsunuz. Bunu yaparken kaybetmemeniz gereken önemli bir şey de, birim test jeneratörünüz için birim testleri yazmanız gerektiğidir.
Alt satır: birim testleri, kesinlikle evet. Ancak, hata ayıklama için gerçekten ihtiyacınız olana veya bazı kıllı işlevselliklerin düzgün çalıştığından emin olana kadar (ikinci durumda, testlerin kendileri dahil) temel işlevselliklere sahip olun.