thetalkingwalnut soruyor:
Şüpheci geliştiricileri birime Ünite Testinin değeri konusunda ikna etmenin iyi yolları nelerdir?
Buradaki herkes, birim testinin iyi olmasının nedenini maviden çıkaracak. Bununla birlikte, birisini bir şeyden ikna etmenin en iyi yolunun argümanlarını dinlemek ve bunu nokta nokta ele almak olduğunu görüyorum . Endişelerini sözlü olarak dinlemeye ve onlara yardımcı olursanız, her birine hitap edebilir ve belki de onları bakış açınıza dönüştürebilirsiniz (veya en azından onları ayakta durmadan bırakabilirsiniz). Kim bilir? Belki de birim testlerin durumunuza neden uygun olmadığını ikna edeceklerdir. Muhtemel değil, ama mümkün. Belki de argümanlarını birim testlerine karşı yayınlarsanız, karşı değişkenlerin tanımlanmasına yardımcı olabiliriz.
Argümanın her iki tarafını da dinlemek ve anlamak önemlidir. İnsanların kaygılarına bakmadan birim testlerini gayretle benimsemeye çalışırsanız, dini bir savaş (ve muhtemelen gerçekten değersiz birim testleri) ile sonuçlanacaksınız. Yavaşça benimser ve en düşük maliyetle en fazla yararı göreceğiniz yere uygulayarak başlarsanız, birim testlerin değerini gösterebilir ve insanları ikna etme şansınız daha yüksek olabilir. Bunun göründüğü kadar kolay olmadığını anlıyorum - ikna edici bir argüman oluşturmak için genellikle biraz zaman ve dikkatli metrikler gerektirir.
Birim testleri, diğerleri gibi bir araçtır ve faydaların (böcek yakalama) maliyetlerden (bunları yazma çabası) ağır basacak şekilde uygulanmalıdır. Anlamsız ve nerede olduklarını kullanmayın ve bunların sadece araç cephaneliğinizin bir parçası olduklarını hatırlayın (örn. Denetimler, iddialar, kod analizörleri, biçimsel yöntemler, vb.). Geliştiricilerime söylediklerim şudur:
Neden gerekli olmadığına dair iyi bir argümanları varsa (örneğin buna değer olmak için çok basit veya buna değer olmak çok zor) ve yöntemin başka türlü nasıl doğrulanacağını (örneğin, denetim, iddialar) bir yöntem için test yazmayı atlayabilirler. , biçimsel yöntemler, etkileşimli / entegrasyon testleri). Teftişler ve resmi kanıtlar gibi bazı doğrulamaların bir noktada yapıldığını ve üretim kodu her değiştiğinde tekrarlanması gerektiğini düşünürken, birim testleri ve iddiaları regresyon testi olarak kullanılabilir (bir kez yazılır ve daha sonra tekrar tekrar yürütülür) ). Bazen onlara katılıyorum, ancak daha sıklıkla bir yöntemin gerçekten çok basit mi yoksa birim testi yapmak için çok mı zor olduğu hakkında tartışacağım.
Bir geliştirici, bir yöntemin başarısız olmayacak kadar basit olduğunu iddia ederse, bunun için 5 satırlık basit bir birim testi yazmak için gerekli 60 saniyeyi almaya değmez mi? Bu 5 kod satırı her gece (her gece inşa edersiniz, değil mi?) Gelecek yıl veya daha fazla süreyle çalışacak ve tanımlanması 15 dakika veya daha uzun sürmüş bir sorunu yakalamak için bir kez bile olsa çabaya değer olacaktır. ve hata ayıklama. Ayrıca, kolay birim testlerinin yazılması, geliştiricinin iyi görünmesini sağlayan birim testlerinin sayısını artırır.
Öte yandan, bir geliştirici bir yöntemin test edilmesi için çok zor göründüğünü (gerekli olan önemli çabaya değmez) savunuyorsa, belki de bu, kolay parçaları test etmek için yöntemin bölünmesi veya yeniden düzenlenmesi gerektiğinin iyi bir göstergesidir. Genellikle bunlar, tek tonlar, geçerli saat veya veritabanı sonuç kümesi gibi dış kaynaklara dayanan alışılmadık kaynaklara dayanan yöntemlerdir. Bu yöntemlerin genellikle kaynağı alan bir yönteme (örneğin, getTime () işlevini çağırır) ve kaynağı bağımsız değişken olarak alan bir yönteme (örneğin, zaman damgasını parametre olarak alır) dönüştürülmesi gerekir. Ben kaynak alır yöntemi test atlamak izin ve bunun yerine şimdi bir bağımsız değişken olarak kaynak alır yöntemi için bir birim sınama yazın. Bu, genellikle birim testinin yazılmasını çok daha basit ve bu nedenle yazmaya değer hale getirir.
Geliştiricinin, birim testlerinin ne kadar kapsamlı olması gerektiğine dair bir "kum çizgisi" çizmesi gerekir. Daha sonra geliştirmede, bir hata bulduğumuzda, daha kapsamlı birim testlerinin sorunu yakalayıp yakalamayacağını belirlemelidirler. Eğer öyleyse ve bu tür hatalar tekrar tekrar ortaya çıkarsa, "satırı" ileride daha kapsamlı birim testleri yazmaya doğru hareket ettirmeleri gerekir (geçerli hata için birim testinin eklenmesi veya genişletilmesi ile başlayarak). Doğru dengeyi bulmaları gerekiyor.
Birim testleri gerçekleştirmek için onun önemli bir gümüş kurşun değildir ve orada olduğunu çok fazla birim test diye bir şey. İşyerimde öğrendiğimiz dersleri her yaptığımızda kaçınılmaz olarak "daha fazla birim test yazmamız gerekiyor" sözlerini duyuyorum. Yönetim başını salladı çünkü "birim testleri" == "iyi" başlarını çarptım.
Bununla birlikte, "daha fazla birim testi" nin etkisini anlamamız gerekir. Bir geliştirici yalnızca haftada ~ N kod satırı yazabilir ve bu kodun yüzde kaçının üretim kodu ile birim kod arasında olması gerektiğini bulmanız gerekir. Bir gevşek işyeri, birim testleri olarak kodun% 10'una ve üretim kodu olarak kodun% 90'ına sahip olabilir, bu da çok (çok hatalı olsa da) özelliklere sahip ürünle sonuçlanır (MS Word'ü düşünün). Öte yandan,% 90 birim testleri ve% 10 üretim koduna sahip katı bir dükkanda çok az özelliğe sahip kaya gibi sağlam bir ürün olacaktır ("vi" deyin). İkinci ürünün çöküşüyle ilgili raporları asla duyamayabilirsiniz, ancak bunun, kodun kalitesiyle olduğu kadar çok iyi satış yapmamasıyla da ilgili olması muhtemeldir.
Daha da kötüsü, belki de yazılım geliştirmedeki tek kesinlik "değişim kaçınılmazdır" dır. Sıkı mağazanın (% 90 birim testleri /% 10 üretim kodu) tam olarak 2 özelliğe sahip bir ürün oluşturduğunu varsayın (üretim kodunun% 5'i = = 1 özellik olduğu varsayılarak). Müşteri gelir ve özelliklerden 1'ini değiştirirse, bu değişiklik kodun% 50'sini (birim testlerin% 45'i ve üretim kodunun% 5'i) çöker. Lax shop (% 10 birim testleri /% 90 üretim kodu) 18 özelliğe sahip bir ürüne sahiptir ve hiçbiri çok iyi çalışmaz. Müşterileri 4 özelliğinin gereksinimlerini tamamen yeniler. Değişiklik 4 kat daha büyük olmasına rağmen, kod tabanının sadece yarısı çöpe atılır (~% 25 = ~% 4.4 ünite testleri + üretim kodunun% 20'si).
Demek istediğim, çok az ve çok fazla birim testi arasındaki dengeyi anladığınızı, aslında sorunun her iki tarafında da düşündüğünüzü belirtmeniz gerekiyor. Eğer akranlarınızı ve / veya yönetiminizi ikna edebilirseniz, güvenilirlik kazanırsınız ve belki de onları kazanma şansınız daha yüksektir.