Birkaç yıl kod yazıp projeler üzerinde çalıştıktan sonra kendi soruma cevap vereceğim.
Evet, birim testleri yazmalısın. Uçtan uca testler özellikle UI bileşenlerine güveniyorlarsa yazmaları ve kırılganlıkları daha zordur.
Django veya Rails (ya da kendi özel sınıflarınız) gibi bir çerçeve kullanıyorsanız, formun geçerliliğini kaldıracak bir form sınıfınız olmalıdır. Ayrıca, oluşturulan şablonları ve formu görüntüleyip GET ve POST isteklerini işleyen sınıfları göreceksiniz.
Testi bitirmek için sonunda:
- URL'yi al
- formu geçerli verilerle doldurun
- formu URL’ye gönderin
- Veritabanının güncellendiğinden veya geçerli formun bir sonucu olarak bazı işlemlerin yapıldığından emin olmak için kontrol edin.
Çok fazla kod test ediyorsunuz ve kapsamınız oldukça iyi olacak ancak her şey yolunda giderken sadece mutlu yolu deniyorsunuz. Formun içinde doğru doğrulamanın olmasını nasıl sağlarsınız? Ya bu form birden fazla sayfada kullanılıyorsa? Testi bitirmek için başka bir son yazıyor musun?
Bunu birim testleriyle tekrar deneyelim:
- görünüm GET yöntemini test et
- Görünüm POST yöntemini sahte / sahte bir formla sınama
- formu geçerli verilerle test edin
- formu geçersiz verilerle test edin
- formun yan etkilerini test eder
Birim testlerini kullanarak, daha küçük kod parçalarını test ediyorsunuz ve testler özel ve yazması daha kolay. Bunu TDD (Test Driven Development) ile birleştirdiğinizde daha yüksek kalite kodu elde edersiniz.
Eğer bir proje üzerinde olduğunuzda çünkü birim testleri yazma kolaylığı göz ardı edilmemelidir hiçbir otomatik test, sen bir yere başlamak zorunda. Ünite testlerine başlamak daha kolay ve daha hızlıdır ve sadece mutlu yoldan ziyade hatalar için hemen teste başlamanızı sağlar.
was told by a co-worker that the reason for this is that we can rip out and change the underlying implementation at any point as long as the end-to-end tests pass.
- Bu aynı zamanda birim testleri için de geçerli. Bana, uçtan uca testlerin birim testleri yazmamak için bahane olarak kullanıldığı gibi geliyor.