Büyük alay verilerini korumak zor ve gerçekçi değil. Veri tabanı yapısı değişime uğradığında daha da zordur.
Yanlış.
Birim testi "büyük" sahte veri gerektirmez. Senaryoları test etmek için yeterince sahte veriye ihtiyaç var ve daha fazlasını değil.
Ayrıca, gerçekten tembel olan programcılar konu uzmanlarından çeşitli test vakalarının basit elektronik tablolarını oluşturmalarını ister. Sadece basit bir elektronik tablo.
Sonra tembel programcı, elektronik tablo satırlarını birim test durumlarına dönüştürmek için basit bir komut dosyası yazar. Gerçekten çok basit.
Ürün geliştiğinde, test senaryolarının elektronik tabloları güncellenir ve yeni birim testleri oluşturulur. Her zaman yap. Gerçekten çalışıyor.
MVVM ve GUI'yi test etme becerisiyle bile, GUI senaryosunu yeniden oluşturmak çok fazla kod alır.
Ne? "Yeniden"?
TDD'nin amacı, Test Edilebilirlik için şeyler tasarlamaktır (Test Sürüşü Geliştirme). Eğer GUI bu kadar karmaşıksa, daha basit ve daha test edilebilir olması için yeniden tasarlanması gerekir. Daha basit, daha hızlı, daha sürdürülebilir ve daha esnek demektir. Ancak çoğunlukla daha basit, daha test edilebilir demektir.
TDD'nin basit bir iş mantığıyla sınırlarsanız iyi çalıştığını biliyorum. Bununla birlikte, karmaşık iş mantığını test etmek zordur, çünkü test kombinasyonunun sayısı (test alanı) çok fazladır.
Bu doğru olabilir.
Bununla birlikte, konu uzmanlarından çekirdek test vakalarını basit bir biçimde (bir elektronik tablo gibi) sağlamalarını istemek gerçekten yardımcı olur.
Elektronik tablolar oldukça büyük olabilir. Ama sorun değil, elektronik tabloları test senaryolarına dönüştürmek için basit bir Python betiği kullandım.
Ve. E-tablolar eksik olduğu için bazı test durumlarını manuel olarak yazmak zorunda kaldım.
Ancak. Kullanıcılar "hatalar" bildirdiğinde, elektronik tabloda hangi test durumunun yanlış olduğunu sordum.
O anda, konu uzmanları elektronik tabloyu düzeltecek veya ne olması gerektiğini açıklamak için örnekler ekleyecekti. Hata raporları - çoğu durumda - açıkça bir test durumu sorunu olarak tanımlanabilir. Gerçekten de, deneyimlerime göre, hatayı kırık bir test durumu olarak tanımlamak tartışmayı çok daha basit hale getirir.
Uzmanların dinlemesinden ziyade, süper karmaşık bir iş sürecini açıklamaya çalışmak yerine, uzmanlar sürecin somut örneklerini üretmek zorunda.
TDD, gereksinimlerin% 100 doğru olmasını gerektirir. Bu gibi durumlarda, testlerin yaratılması sırasında çelişkili şartların yakalanması beklenebilir. Ancak sorun şudur ki, karmaşık senaryoda bu böyle değildir.
TDD kullanmamak kesinlikle gereksinimlerin% 100 doğru olmasını zorunlu kılar. Bazıları, TDD'nin tamamlanmamış ve değişen gereklilikleri tolere edebileceğini, TDD dışı bir yaklaşımın eksik şartlarla çalışamayacağını iddia ediyor.
TDD kullanmazsanız, çelişki uygulama aşamasında geç bulunur.
TDD kullanıyorsanız , kod bazı testleri geçip diğer testleri geçemediğinde çelişki daha önce bulunur . Aslında, TDD size , uygulamadan çok önce (ve kullanıcı kabul testi sırasındaki argümanlar) işlemin başındaki çelişkilerin kanıtını verir .
Bazı testleri geçen ve bazılarında başarısız olan bir kodunuz var. Sadece bu testlere bakarsınız ve çelişkiyi bulursunuz. Uygulamada gerçekten çok iyi sonuç veriyor çünkü kullanıcılar artık çelişki hakkında tartışmalı ve istenen davranışa dair tutarlı, somut örnekler üretmelidir.