Test verilerini uygulamak, otomatik testlerin önemli bir yönüdür ve test senaryoları için ortam, veriler ve bağımlılıkların hazırlanmasını sağlar.
Konu Tarihi Test verileri, otomatik testlerde testlerin yürütülmesinden önce ortamın önceden yapılandırılması ve temizlenmesi için merkezi bir yönetim aracı olarak belirmiştir. Bununla, ekipler testlerin tutarlılığını ve öngörülebilirliğini sağlamakta başarılı olmuşlardır; bu, kodun sürekli değiştiği durumlarda özellikle önemlidir.
Sorun Doğru test verileri olmadan otomatik testler istikrarsız hale gelir, birbirlerine bağlı olurlar, paralel çalışmada birbirlerine engel olurlar ve ayrıca teknik borcu artırırlar (çünkü kurulum/temizlik mantığı tekrarlanır ve büyür).
Çözüm
Test çerçeveleri tarafından sağlanan standart test verisi mekanizmalarını kullanın (örneğin, @BeforeAll, @BeforeEach JUnit'te veya conftest.py pytest'te). Test verilerini esnek ve izole hale getirmeye çalışın:
Ana özellikler:
Bir testte test verisi oluşturan nesneleri değiştirmek mümkün mü? Eğer bunlar sonraki testler için gerekli ise?
Hayır, bu şekilde testler birbirine bağımlı olacaktır: bir testte yapılan değişiklikler diğerini bozabilir. Her test için taze nesneler kullanmak veya her yürütmeden sonra değişiklikleri geri almak daha iyidir.
Otomatik testlerin başlatılmasında tüm veritabanını "bir seferde" yüklememek neden hızlandırıcı bir yöntem değildir?
Bu yaklaşım, istikrarsız testlere ve zor anlaşılır hatalara yol açabilir. Veriler testler arasında "takılabilir" ve onların yürütülme sırası kritik hale gelebilir.
Tüm test kümesi için tek bir küresel test verisi kullanmak mümkün mü?
Hayır, küresel test verileri yalnızca tamamen bağımsız testler için kabul edilebilir. Bu genellikle testlerin karşılıklı etkisini sağlamakta ve analiz ve bakımını zorlaştırmaktadır.
Projede zaman tasarrufu sağlamak ve her testten sonra değişiklikleri geri almayarak otomatik testleri tek bir veritabanında çalıştırma kararı alındı. Aynı verileri değiştiren testler ortaya çıkınca, dalgalı hatalar meydana geldi: testler, yürütme sırasına bağlı olarak birbiri ardına "düştü".
Artıları:
Eksileri:
Fabika-test verileri kullanıldı: her test, verilerini üretir, tamamlandıktan sonra siler. Eski hatalar artık tekrarlanmıyor, testlerin sırası önemsiz hale geldi.
Artıları:
Eksileri: