Sana insanlara sormak istedim, bu durumda, haskell, scala, ocaml, nemerle, f # veya haXe'de yazıldığı gibi statik olarak test edilen fonksiyonel kodu birim test etmek mantıklıdır (son olarak gerçekten ilgilendiğim şey, ama istedim daha büyük toplulukların bilgisinden faydalanabilirsiniz).
Bunu soruyorum çünkü anlayışımdan:
Birim testlerin bir özelliği spesifikasyonların çalıştırılabilir formda olmasıdır. Ancak, biçimsel özellikleri doğrudan dil anlambilimiyle eşleştiren bildirici bir stil kullanılırken , spesifikasyonları çalıştırılabilir formda ayrı bir şekilde ifade etmek bile mümkün , bu değer katıyor mu?
Birim testlerin daha belirgin yönü, statik analiz yoluyla ortaya çıkarılamayan hataları takip etmektir. Tip güvenli fonksiyonel kodun, statik analizörünüzün anladığına çok yakın kodlamak için iyi bir araç olduğu göz önüne alındığında, çok fazla güvenliği statik analize doğru kaydırabilirsiniz. Ancak kodunuzda (her ikisi de koordinat olmak
x
yerine) kullanmak gibi basit bir hatay
ele alınamaz. Test kodu yazarken OTOH böyle bir hata da ortaya çıkabilir, bu yüzden çabaya değip değmeyeceğinden emin değilim.Birim testleri artıklık getirir, yani gereksinimler değiştiğinde bunları uygulayan kod ve bu kodu kapsayan testlerin de değiştirilmesi gerekir. Elbette bu yük sabittir, bu yüzden gerçekten önemli olmadığı iddia edilebilir. Aslında, Ruby gibi dillerde gerçekten faydalarla karşılaştırılamaz, ancak statik olarak tipik fonksiyonel programlamanın zemin ünitesi testlerinin birçoğunu nasıl kapsadığı düşünüldüğünde, cezalandırılmadan basit bir şekilde azaltılabilen sabit bir ek yük gibi hissedilir.
Bundan, ünite testlerinin bu programlama tarzında biraz eskimiş olduğunu söyleyebilirim. Elbette böyle bir iddia sadece dini savaşlara yol açabilir, bu yüzden bunu basit bir soruya kaynatmama izin verin:
Böyle bir programlama stili kullandığınızda, birim testlerini hangi kapsamda kullanıyorsunuz ve neden (kodunuz için hangi kaliteyi kazanmayı umuyorsunuz)? Ya da başka bir yolla: statik analizör tarafından kapsanan ve dolayısıyla birim test kapsamına ihtiyaç duymadan, statik olarak tiplendirilmiş bir fonksiyonel kod birimini niteleyebileceğiniz kriterleriniz var mı?