SORU
3 HAZİRAN 2010, PERŞEMBE


Birim testleri - sözleşme değişiklikleri ile birim testlerin yarar?

Son zamanlarda birim testleri hakkında bir meslektaşı ile ilginç bir tartışma vardı. Bakımı birim testleri sözleşmeleri değiştirmek için daha az üretken oldu, ne zaman tartışıyorduk.

Belki de kimse bu sorunu yaklaşım nasıl bana enlight. İzah edeyim:

Bu yüzden bazı şık hesaplamalar yapan bir sınıf var diyelim. Sözleşme numarası hesaplamak gerektiğini söylüyor, ya da bazı sebeplerden dolayı başarısız olduğunda -1 döndürür.

Test eden kontrat testleri var. Ve diğer bütün testleri ben şık hesap makinesi şeysi bu saplama.

Şimdi hesaplamak olamaz her sözleşme, değişiklik yani bir CannotCalculateException atmak olacak.

Sözleşme benim testler başarısız olur, ve onları uygun şekilde çözecektir. Ama, tüm alay/saplama benim nesneleri hala eski sözleşme kurallarını kullanır. Bu testler onlar değil, başarılı olacaktır!

Soru yükselir, birim testi bu inançla, ne kadar bu tür değişiklikler yerleştirilebilir... ünite testleri başarılı, ama bugs uygulamayı test ederken ortaya çıkar. Testler bu hesap makinesi kullanarak zaman maliyeti sabit olması gerekir, ve hatta bir çok kez alay./olabilir...

Nasıl bu durum hakkında ne düşünüyorsunuz? Hiç thourougly düşündüm. Benim görüşüme göre, birim testleri için bu değişiklikler kabul edilebilir. Eğer birim testleri için değil, aynı zamanda bu tür hataların test aşaması içinde (test) tarafından ortaya görürdüm. Henüz daha zaman (veya daha az) mal olacak şey için yeterince emin değilim.

Herhangi bir düşünce?

CEVAP
3 HAZİRAN 2010, PERŞEMBE


Size zam ilk sorun, sözde "hassas test" sorunu. Uygulamanız için bir değişiklik yapmak, ve testler yüzlerce bu değişiklik nedeniyle Ara. Bu durumda, bir vartasarımsorun. Testlerinizi kırılgan olması için dizayn edilmiştir. Yeterince üretim kodu ayrılmış olmamıştır. Çözüm olarak bunu tüm yazılım sorunları gibi) için bir soyutlama olduğunu decouples testlerinin üretim Kodu ve oynaklık üretim kodu gizli testler.

Kırılganlık bu tür neden olan bazı basit şeyler vardır:

  • Görüntülenen dizeleri için test. Bu dizeleri dilbilgisi veya yazım bir analist kapris değişebilir çünkü uçucudur.
  • Bir soyutlama (örneğin FULL_TİME) arkasında kodlanmış olması ayrı değerleri (örneğin 3) için test.
  • Pek çok test aynı API arıyorum. API değişiklikleri tek bir yerde değişiklik yapmak, böylece bir sınama işlevi API çağrısı almanız gerekir.

Test tasarımı genellikle TDD yeni başlayanlar tarafından ihmal edilen önemli bir konudur. Bu genellikle daha sonra acemiler TDD reddetmek neden olan kırılgan testler, sonuçlar "". verimsiz

İkinci sorunu gündeme yanlış pozitif oldu. Senin testlerin hiçbiri aslında entegre sistemi test o kadar çok alay kullanmış. Test bağımsız birimler iyi bir şey olsa da, aynı zamanda önemli sistem kısmi ve tam entegrasyon test edilebilir. TDDdeğilsadece birim testleri hakkında.

Testler aşağıdaki gibi düzenlenmelidir

  • Birim testleri de 0 kod kapsama yakın bulunur. Bağımsız birim test ediyorlar. Programcılar, sistem programlama dili kullanarak yazılmıştır.
  • Bileşen testleri sistemi ~50% kapak. İş analistleri ve QA tarafından yazılmıştır. FitNesse, Selenyum, Salatalık, vb gibi bir dilde yazılmış. Bütün bileşenleri tek tek birimleri değil test ediyorlar. Öncelikle mutlu yol durumları ve son derece görünür bazı mutsuz yolunu durumlarda test ediyorlar.
  • Entegrasyon testleri sistemi ~ 'sini kapsıyor. Tüm sistemin aksine bileşenlerin küçük meclisleri onlar test eder. Ayrıca FitNesse/yazılı/Salatalık vb Selenyum. Mimarlar tarafından yazıldı.
  • Sistem testleri sistem ~10% kapak. Tüm sistem birbirine entegre test ediyorlar. Yine FitNesse/Selenyum/Salatalık vb yazılır. Mimarlar tarafından yazıldı.
  • Keşif manuel testler. (Bkz: James Bach) Bu testler manuel ama komut dosyası. İnsan marifet ve yaratıcılık kullanırlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009