Bir programın davranışının doğruluğunu onaylamak için testler yazıyoruz.
Gözlerinizi kullanarak çıktı ifadelerinin içeriğini inceleyerek bir programın davranışının doğruluğunu onaylamak bir kılavuzdur veya daha spesifik olarak görsel bir süreçtir.
Bunu tartışabilirsin
görsel inceleme işe yarıyor , bu senaryolar için kodun yapması gerekeni yaptığını kontrol ediyorum ve doğru olduğunu anladığımda gitmemiz iyi olur.
Şimdi ilk olarak, kodun doğru çalışıp çalışmadığıyla ilgilenmeniz harika. Bu iyi birşey. Eğrinin önündesin! Ne yazık ki, bununla ilgili bir yaklaşım olarak sorunlar var.
Görsel incelemeyle ilgili ilk sorun, kodunuzun doğruluğunu bir daha asla kontrol edemeyeceğiniz için kötü bir kaynak kazası olmanızdır.
İkinci sorun, kullanılan göz çiftinin, göz sahibinin beyniyle sıkı bir şekilde birleşmesidir. Kodun yazarı da görsel inceleme sürecinde kullanılan gözlere sahipse, doğruluğu doğrulama süreci, görsel denetçinin beyninde içselleştirilen program hakkındaki bilgiye bağımlıdır.
Yeni bir çift gözün içeri girip kodun doğruluğunu doğrulaması zordur çünkü bunlar orijinal kodlayıcının beyniyle ortaklaşa çalışmazlar. İkinci göz çiftinin sahibi, söz konusu kodu tam olarak anlamak için kodun orijinal yazarıyla görüşmek zorunda kalacaktır . Bilgiyi paylaşmanın bir yolu olarak konuşma, herkesin bildiği gibi güvenilmezdir. Orijinal Kodlayıcı yeni çift gözler için mevcut değilse tartışmalı bir nokta. Bu durumda, yeni göz çiftinin orijinal kodu okuması gerekir.
Başkalarının birim testleri tarafından kapsanmayan kodunu okumak, ilişkili birim testleri olan kodu okumaktan daha zordur. En iyi ihtimalle diğer insanların kodunu okumak zor bir iştir, en kötü ihtimalle bu, yazılım mühendisliğindeki en ağır görevdir. İşverenlerin boş iş ilanlarını ilan ederken, bir projenin yeşil alan (veya yepyeni) olduğunu vurgulamasının bir nedeni vardır. Sıfırdan kod yazmak, mevcut kodu değiştirmekten daha kolaydır ve bu nedenle reklamı yapılan işin potansiyel çalışanlar için daha çekici görünmesini sağlar.
Birim testi ile kodu bileşen parçalarına ayırıyoruz. Her bileşen için daha sonra programın nasıl davranması gerektiğini belirterek durağımızı koyarız . Her birim testi, programın bu bölümünün belirli bir senaryoda nasıl davranması gerektiğine dair bir hikaye anlatır. Her birim testi, müşteri kodunun bakış açısından ne olması gerektiğini açıklayan bir sözleşmedeki bir madde gibidir.
Bu daha sonra gözlerin yeni çifti sahip olduğu anlamına gelir iki ipliklerini canlı ve doğru söz konusu kod belgelere.
İlk önce kodun kendisine, uygulamaya, kodun nasıl yapıldığına ; ikinci olarak, orijinal kodlayıcının, bu kodun nasıl davranması gerektiğinin hikayesini anlatan bir dizi resmi ifadede tanımladığı tüm bilgilere sahipler .
Birim testleri, orijinal yazarın sınıfı uygularken sahip olduğu bilgileri yakalar ve resmen açıklar. Bir müşteri tarafından kullanıldığında o sınıfın nasıl davrandığına dair bir açıklama sağlarlar.
Bunu yapmanın faydasını sorgulamakta haklısınız çünkü işe yaramaz, söz konusu kodun tamamını kapsamayan, eskimiş veya geçerliliğini yitirmiş birim testleri yazmak mümkündür. Bilgili, vicdanlı bir yazarın çalışma zamanında kodlarının çıktı ifadelerini görsel olarak inceleyen birim testlerinin yalnızca taklit etmesini değil, aynı zamanda sürecini geliştirmesini nasıl sağlayabiliriz? Önce birim testini yazın, ardından bu testi geçmesi için kodu yazın. Bitirdiğinizde, bırakın bilgisayarlar testleri çalıştırsınlar, hızlıdırlar ve işe ideal olarak uygun oldukları tekrarlayan görevleri yerine getirmede harikadırlar.
Test ettikleri koda her dokunduğunuzda bunları gözden geçirerek test kalitesini sağlayın ve her derleme için testleri çalıştırın. Bir test başarısız olursa hemen düzeltin.
Projenin her derlemesini yaptığımızda testler çalıştırılacak şekilde çalıştırma sürecini otomatikleştiriyoruz. Ayrıca, testler tarafından kapsanan ve uygulanan kod yüzdesini ayrıntılarıyla açıklayan kod kapsamı raporlarının oluşturulmasını otomatik hale getiriyoruz. Yüksek yüzdeler için çalışıyoruz. Bazı şirketler, koddaki davranıştaki herhangi bir değişikliği açıklamak için yeterli birim testleri yazılmamışsa, kod değişikliklerinin kaynak kod kontrolüne eklenmesini önleyecektir. Tipik olarak ikinci bir çift göz, değişikliklerin yazarı ile birlikte kod değişikliklerini gözden geçirecektir. İncelemeyi yapan kişi, değişikliklerin anlaşılır olmasını ve testler tarafından yeterince kapsanmasını sağlamak için değişikliklerden geçecektir. Dolayısıyla inceleme süreci manueldir, ancak testler (birim ve entegrasyon testleri ve muhtemelen kullanıcı kabul testleri) bu manuel inceleme sürecini geçtiğinde, otomatik oluşturma sürecinin bir parçası haline gelir. Bunlar, her değişiklik kontrol edildiğinde çalıştırılır.Sürekli entegrasyon sunucu, bu görevi, oluşturma sürecinin bir parçası olarak gerçekleştirir.
Otomatik olarak çalıştırılan testler, kodun davranışının bütünlüğünü korur ve kod tabanında gelecekte yapılacak değişikliklerin kodu bozmasını önlemeye yardımcı olur .
Son olarak, testler sağlamak, kodu agresif bir şekilde yeniden faktörlendirmenize olanak tanır çünkü değişikliklerinizin mevcut testleri bozmayacağını bilerek büyük kod iyileştirmelerini güvenli hale getirebilirsiniz.
Test Odaklı Geliştirme için bir uyarı var ve bu, test edilebilir hale getirmek için bir gözle kod yazmanız gerektiğidir. Bu, arayüzlere kodlamayı ve işbirliği yapan nesneleri örneklemek için Bağımlılık Ekleme gibi teknikleri kullanmayı içerir. TDD'yi çok iyi tanımlayan Kent Beck'in çalışmasına göz atın . Yukarı bak arayüzleri kodlama ve çalışmatasarım desenleri