SORU
28 EYLÜL 2008, Pazar


'un hangi birim-test için en iyi strateji temelli veritabanı uygulamaları?

Arka uç üzerinde karmaşıklığı değişen veritabanları tarafından yürütülen internet uygulamalarını çok çalışıyorum. Tipik olarak, ORM bir iş katmanı ve sunum mantığı ayrı. Bu birim test iş mantığı oldukça basit hale getirir; şeyler ayrık modülleri uygulanabilir ve herhangi bir veri test için gerekli nesne alay yoluyla sahte olabilir.

Ama ORM ve veritabanı testleri her zaman sorunlar ve tavizler ile dolu olmuştur.

Yıllar içinde, hiçbiri tam olarak beni tatmin birkaç strateji, denedim.

  • Bilinen veri ile bir test veritabanı yük. Bu ORM karşı testler ve doğru verileri geri geliyor onaylayın. Dezavantajı burada test DB uygulama veritabanında herhangi bir şema değişiklikleri takip etmek zorunda olduğunu ve senkronizasyon dışında olabilir. Ayrıca yapay veri dayanır, ve aptal kullanıcı girişi sebebiyle meydana gelen hatalar getirebilir. Eğer test veritabanı küçük ise son olarak, eksik bir dizin gibi verimsizlikler meydana çıkarmaz. (TAMAM, bu sonuncusu birim test için kullanılmalıdır şey değil, ama zarar vermez.)

  • Buna karşı üretim veritabanı ve testin bir kopyasını yükleyin. Burada sorun, herhangi bir zamanda üretim DB ne olduğu hakkında bir fikrim olabilir; testlerinizi veri zamanla değişirse yeniden yazılması gerekebilir.

Bazı insanlar bu stratejilerin her ikisi de belirli verilere bağlı olduğunu belirtti ve birim test işlevselliği test etmelidir. Bu amaçla, önerilen gördüm:

  • Alay veritabanı sunucusunu kullanmak ve ORM verilen bir yöntem çağrısı yanıt doğru sorgulama göndermek olduğunu kontrol edin.

Ne stratejileri varsa veritabanı odaklı uygulamalar test etmek için kullanılan, değil mi? Sizin için en iyi çalıştı ne var?

CEVAP
28 EYLÜL 2008, Pazar


Aslında sorunlarını çözecek sanırım bu biraz farklı bir yönden oldukça başarılı, ancak ilk yaklaşım kullandım:

  1. Herkes bir kontrolden sonra geçerli veritabanı şeması oluşturmak, kaynak kontrolü yaratmak için tüm şema ve komut dosyalarını tutmak. Buna ek olarak, inşa sürecinin bir parçası tarafından yüklenir veri dosyaları ve örnek veri tutmak. Hatalara neden olan veri keşfetmek gibi, örnek veri hataları tekrar ortaya olmadığını kontrol etmek için ekleyin.

  2. Sürekli entegrasyon sunucusu veritabanı şeması oluşturmak, örnek verileri yüklemek ve testleri çalıştırmak için kullanın. Bu sync (her testi de yeniden inşa) test veri tabanımızda devam ediyoruz. Ama bunu gerektirdiğini CI sunucu erişim ve mülkiyet kendi özel veritabanı örneği, diyorum ki o bizim db şema inşa 3 kez bir gün bir şekilde yardım bulmak hataları muhtemelen olmazdı bulunmuş kadar önce teslim (en geç). Ben şemayı önce her yeniden işlemek söyleyemem. Duyan var mı? Bu yaklaşım ile (belki de biz iyi, ama eğer birisi unutursa onun büyük bir anlaşma değil) olmayacak.

  3. Benim grup için, kullanıcı giriş bu standart birim testleri ile test uygulama düzeyi (db) yapılır.

Üretim Veritabanı Kopyasını Yükleme:
Bu son işimde kullanılan yaklaşım oldu. Bir kaç sorunu büyük bir acıya neden oldu:

  1. Kopya üretim versiyonu güncel olsun istiyorum
  2. Değişiklikler kopya şema verileceğini ve üretim sistemlerine bulaşan olmaz. Bu noktada farklı şemalar zorunda kalırız. Eğlenceli değil.

Veritabanı Sunucusu Alay:
Biz de şu anki işim de bu. Her commit sonrası alay db set enjekte ettiğini uygulama kurallarına aykırı birim testleri uyguluyoruz. Üç kez bir gün sonra tam db oluşturmak yukarıda açıklanan idam edeceğiz. Ben kesinlikle her iki yaklaşım öneririz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • kndx

    kndx

    11 Mart 2006