Nasıl Web Kodunu Test için?

oy
11

Herkes devlete ağır bir bağımlılık olduğu yerde veritabanı arka uç gelişimi için test kodu yazmak için bazı iyi ipuçları var mı?

Özellikle, ben veritabanından kayıtları almak kodu için testler yazmak istiyorum, ama cevaplar veritabanında veri (zamanla değişebilir olan) bağlı olacaktır.

herhangi bir işlevi her zaman tam aynı sonuç kümesini döndürmesi gerektiğini nedenle insanlar genellikle 'donmuş' veritabanı ile ayrı bir gelişme sistemini yapıyor musunuz?

Ben başkalarının deneyimlerinden öğrenmek çok ilgi olacağını, böylece bu, yeni bir mesele değildir oldukça eminim.

Bu genel olarak web tabanlı geliştirme bu konuyu görüşmek orada iyi haberler var mı?

Genellikle PHP kod yazmak, ama bütün bu konular büyük ölçüde dil ve çerçeve agnostiktir beklenebilir.

Oluştur 05/08/2008 saat 22:58
kaynak kullanıcı
Diğer dillerde...                            


10 cevaplar

oy
5

Sen DBUnit içine bakmak, ya da (orada bir tane olmalıdır) bir PHP eşdeğer bulmaya çalışmalısınız. Eğer test verilerini temsil belirli bir veri seti ile veri tabanını hazırlamak için kullanabilirsiniz ve böylece her test artık veritabanı ve bazı mevcut durumuna bağlı olacaktır. Bu şekilde, her test kendi kendine yeten ve ayrıca veritabanı kullanımı sırasında kopmayacaktır.

Güncelleme: Hızlı google arama bir gösterdi DB birim uzantısını PHPUnit için.

Cevap 05/08/2008 saat 23:03
kaynak kullanıcı

oy
3

: Eğer veri katmanı test ile çoğunlukla endişeleniyorsanız, bu kitabı kontrol etmek isteyebilirsiniz xUnit Testi Kalıpları: Refactoring Testi Kodu . Her zaman kendime bu konuda emin değildi, ama bu kitap performansı, tekrarlanabilirlik, vb gibi endişeleri numaralandırmak yardımcı olmak için büyük bir iş yapar

Cevap 06/08/2008 saat 05:14
kaynak kullanıcı

oy
2

Biz bir bellek içi veritabanı (: HSQL kullanmak http://hsqldb.org/ ). (Hazırda http://www.hibernate.org/ bize onlar yıldırım gibi hızlı çalıştırmanızı avantaj ile, test db bizim birim testleri işaret etmek için) kolaylaştırır ..

Cevap 10/09/2008 saat 13:02
kaynak kullanıcı

oy
2

Bence kullandığınız hangi veritabanı bağlıdır tahmin ama Red Kapısı (www.red-gate.com) SQL Veri Jeneratör denilen bir araç yapmak. Bu mantıklı görünümlü test verileri ile veritabanı doldurmak için yapılandırılabilir. senin 'rastgele' veri her zaman aynıdır böylece de her zaman rasgele sayı üreteci aynı tohum kullanmak için bunu söyleyebilirim.

Daha sonra, bu güvenilir ve tekrarlanabilir veri kullanımı için birim testleri yazabilirsiniz.

Şeylerin web tarafını test gelince, Şu anda selenyum (selenium.openqa.org) araştırıyorum. Bu size test işlevlerini yardımcı olacak bir çapraz tarayıcı yetenekli test paketi olarak görünmektedir. Ancak, bu web sitesi testi tüm araçları olduğu gibi, bunlar ne kadar iyi test etmek hiçbir gerçek yolu yoktur bakmak üzerlerinden bir insan gözü döküm olmadan tarayıcıların tümünde!

Cevap 06/08/2008 saat 14:44
kaynak kullanıcı

oy
1

Genel olarak ben Peter ile ancak oluşturma ve doğrudan SQL kullanmak değildir deney verilerinin silinmesi için kabul ediyorum. Ben mümkün olduğunca üretimine benzer şekilde verileri oluşturmak için üründe kullanılan bazı CRUD API kullanmayı tercih ...

Cevap 10/09/2008 saat 12:31
kaynak kullanıcı

oy
1

Üç veritabanlarını kullanmayı teklif ederim. Bir üretim veritabanı (her geliştirici için bazı anlamlı verilerle dolu) bir gelişme veritabanı ve (belki boş tablo ve her zaman ihtiyaç vardır birkaç satır ile) bir test veritabanı.

Veritabanı kodunu test etmenin yoludur:

  1. devlet başlatmak için (SQL kullanarak) bir kaç satır ekle
  2. Test etmek istediğiniz işlevi çalıştırın
  3. Gerçek sonuçlarla beklenen karşılaştırın. Burada normal birim test çerçeve kullanabilirsiniz
  4. değiştirildi satırları temizleyin (dolayısıyla bir sonraki çalıştırma önceki koşmak görmez)

Temizleme ile (tabii ki, sadece test veritabanında) standart bir şekilde yapılabilir DELETE * FROM table.

Cevap 19/08/2008 saat 19:40
kaynak kullanıcı

oy
1

İşte benim stratejisi (ben JUnit kullanıyorum ama PHP eşdeğer yapmanın bir yolu var eminim) var:

Belirli bir DAO sınıf için Birim Testlerinin tüm önce çalışır bir yöntem var. Bu bilinen bir duruma dev veritabanı koyar (tüm test verilerini vb ekler). Ben testler gibi, ben bilinen durumuna eklenen tüm verilerin takip. Bu veriler, her bir test sonunda temizlenir. sınıfının tüm testler yayınlandıktan sonra, diğer bir yöntem, testlerin önce olduğu halde bırakarak dev veritabanındaki tüm test verileri siler. Tüm bu iş yapacak biraz, ama benim DAO testi sınıfların hepsini alabilirsiniz nerede genellikle DBTestCommon sınıfında yöntemlerini yazın.

Cevap 11/08/2008 saat 14:30
kaynak kullanıcı

oy
1

Sen deneyebilirsiniz http://selenium.openqa.org/ o GUI testi yerine bir veri katmanı test uygulaması için daha fazla ama daha sonra farklı platformlarda test otomatik hale getirmek için geri çalınabilir eylemleri kaydetmek gelmez.

Cevap 06/08/2008 saat 13:06
kaynak kullanıcı

oy
1

Kurulum testleri çalışan ve sonunda yıkmak önce bilinen bir miktarla veritabanı, o zaman birlikte çalıştığınız hangi verilerin bileceksiniz Eğer.

Sonra kolayca ve belirli kayıtların varlığı geri veritabanından çekilen algılamak (web tabanlı burada, ama orada diğer UI-tatlar UI test araçlarının bir yeri vardır varsayarak) UI'dan test etmek Selenyum gibi bir şey kullanabilirsiniz.

Bu veritabanının test sürümünü ya kurma kesinlikle değer - veya test komut testlerin bir parçası olarak bilinen verilerle veritabanı doldurmak olun.

Cevap 05/08/2008 saat 23:08
kaynak kullanıcı

oy
1

Benim iş ile aynı sorun var ve en iyi fikir veritabanını yeniden oluşturmak için bir PHP komut dosyası ve ben onu kırar olmadığını görmek için ona deli verileri atmak, sonra ayrı bir senaryo olması bulmak.

Şimdiye kadar herhangi Birim test kullanmadıysanız ya çalışır ya üzgün değilse benzeri yüzden diyemeyiz.

Cevap 05/08/2008 saat 23:03
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more