Kodun mükemmel olması gerektiği ve hiçbir hata olmaması gerektiği fikrini teşvik eder.
Kesinlikle hayır. Testlerinizin başarısız olmaması gerektiği, daha fazla ve daha az olmayan bir şey olduğu fikrini destekler. Testlere sahip olmanın (hatta birçoğunun) "mükemmel" veya "hiç hata" hakkında bir şey söylediğini varsaymak bir yanlışlıktır. Testlerinizin ne kadar sığ veya derin olması gerektiğine karar vermek, iyi testler yazmanın önemli bir parçasıdır ve test kategorilerini ayrı ayrı ayırmamızın nedenidir ("birim" testleri, entegrasyon testleri, salatalık anlamında "senaryolar" vb.).
Başarısız olacak ünite testlerini düşünmek belirsizdir. Ya da kesinlikle düzeltmek zor olacak birim testleri ile gelip.
Teste dayalı gelişimde, her ünite testinin ilk önce, kodlamaya başlamadan önce başarısız olması zorunludur . Bu nedenle "kırmızı-yeşil döngüsü" (veya "kırmızı-yeşil-refaktör döngüsü") denir.
- Testin başarısız olması durumunda, kodun gerçekten test tarafından test edilip edilmediğini bilmiyorsunuz. İkisi hiç ilişkili olmayabilir.
- Kod değiştirerek tam olarak daha yeşil, hiçbir şey ve hiçbir şey az kırmızıdan testi dönüş yapmak, kendi kod (ihtiyacınız asla olabilir) çok daha fazla yapmak gerekiyordu ve ne değildir yapar oldukça emin olabiliriz.
Herhangi bir zamanda tüm ünite testleri geçerse, o zaman herhangi bir zamanda yazılımın durumunun büyük bir resmi yoktur. Yol haritası / hedefi yok.
Testler daha çok bir mikro amaçtır. Test odaklı geliştirmede, programcı önce bir test (tekil) yazacak ve daha sonra bazı kodları uygulamak için net bir amacı olacak; sonra bir sonraki test vb.
Testlerin işlevi kod yazılmadan önce tam olarak orada bulunmamaktır.
Doğru yapıldığında, bir dilde ve bu yaklaşıma çok uygun bir test kütüphanesiyle, bu aslında geliştirmeyi büyük ölçüde hızlandırabilir, çünkü hata mesajları (istisnalar / yığınlar) geliştiriciyi doğrudan iş yapması gereken yere yönlendirebilir. Sonraki.
Uygulamadan önce ünite testleri yazıyor.
Bu ifadenin nasıl doğru olacağını anlamıyorum. Test yazma ideal olarak uygulamanın bir parçası olmalıdır .
Burada bir şey mi eksik? Kuruluşlar neden tüm birim testlerinin geçmesini bekliyor?
Çünkü kuruluşlar, testlerin kodla alaka düzeyine sahip olmasını bekliyor. Başarılı olan testler yazmak, başvurunuzun bir bölümünü belgelemiş olduğunuz ve uygulamanın (test) söylediklerini yaptığını kanıtladığınız anlamına gelir. Daha fazla ve daha az değil.
Ayrıca, test yaptırmanın çok büyük bir kısmı "regresyon" dur. Güvenle yeni bir kod geliştirebilmek veya yeniden değerlendirebilmek istersiniz. Çok sayıda yeşil test yaptırmanız bunu yapmanızı sağlar.
Bu örgütselden psikolojik seviyeye kadar gider. Hatalarının yüksek olasılıkla testlerle yakalanacağını bilen bir geliştirici, çözmesi gereken problemlere akıllı ve cesur çözümler bulmakta çok daha özgür olacaktır. Öte yandan, testleri olmayan bir geliştirici, bir süre sonra (korkudan dolayı) durağan bir şekilde taşlayacaktır, çünkü uygulamanın geri kalanını kırarsa asla bilemez.
Bu rüya dünyasında yaşamak değil mi?
Hayır. Teste dayalı bir uygulama ile çalışmak saf bir zevktir - başka bir soruda tartışabileceğimiz herhangi bir nedenle ("daha fazla çaba" vb.) Konseptini beğenmiyorsanız.
Ve aslında gerçek bir kod anlayışı caydırmaz mı?
Kesinlikle hayır, neden olmasın?
Testleri asıl olarak, yazılımın asıl dokümanı olarak kullanan ve testin yanı sıra, yazılımın ana dokümantasyonu olarak kullanılan çok sayıda büyük açık kaynaklı proje buluyorsunuz. ayrıca uygulama / kütüphanenin kullanıcıları veya geliştiricileri için gerçek, çalışan, sözdizimsel olarak doğru örnekler de sunar. Bu genellikle muhteşem çalışır.
Açıkçası, kötü testler yazmak kötü. Ancak bunun testlerin işleviyle ilgisi yoktur.