Ünite testi? Entegrasyon testi? Regresyon Testi? Kabul Testi?


102

TDD veya birim testi yaparken ayırt etmekte zorlandığım için bu test seviyelerini açıkça tanımlayabilen biri var mı? Lütfen bunların nasıl, ne zaman uygulanacağını açıklayabilecek biri varsa?



Yanıtlar:


133

Kısaca:

Birim testi - Her bir kod parçasını birim test edersiniz. Her dosyayı veya sınıfı düşünün.

Entegrasyon testi - Etkileşimli birkaç birimi bir araya getirirken, bu birimleri bir araya getirmenin herhangi bir hataya yol açmadığından emin olmak için Entegrasyon testi yapmanız gerekir.

Regresyon testi - bütünleştirdikten (ve belki düzelttikten) sonra birim testlerinizi tekrar çalıştırmalısınız. Bu, daha fazla değişikliğin halihazırda test edilmiş herhangi bir birimi bozmamasını sağlamak için yapılan regresyon testidir. Zaten yaptığınız birim testi, regresyon testi için tekrar tekrar çalıştırılabilen birim testleri üretti.

Kabul testleri - bir kullanıcı / müşteri / işletme işlevselliği aldığında, onlar (veya test departmanınız) işlevselliğin gereksinimlerini karşıladığından emin olmak için Kabul testleri gerçekleştirecektir.

Beyaz kutu ve kara kutu testlerini de araştırmak isteyebilirsiniz. Ayrıca, performans ve yük testleri ve dikkate alınması gereken "hastalıkların" testleri de vardır.


Bilginize, Birim testinde , test edilen birimler çeşitli boyutlarda olabilir. Örneğin bir grup sınıfı, tek bir yöntemi veya hatta tek bir yöntemi birim olarak test edebilirsiniz. Kaynak: BlueJ bölüm 9.3 "BlueJ içinde birim testi".
Sebastian Nielsen

Yani Regresyon Testleri yazmıyoruz, daha ziyade sistemin olması gerektiği gibi çalışıp çalışmadığını kontrol etmek için bir değişiklik yaptıktan sonra (yeni özellik veya hata düzeltme) Ünite Testleri ve Entegrasyon Testlerini çalıştırmanın birleşimi mi? Son zamanlarda bir Hata Düzeltmesi uyguladım (uygulanandan farklı bir mantıkla) ancak daha sonra birçok Birim Testi başarısız oldu. Testleri yeni mantığa uyarlamak uygun mudur yoksa mantığın Testlere uygun olması gerekir mi (Testler başarılı bir şekilde çalıştığı sürece uygulama)?
hız

119

Birim testi: Başarısız olduğunda, kodunuzun hangi parçasının düzeltilmesi gerektiğini size söyler.

Entegrasyon testi: Başarısız olduğunda, uygulamanızın parçalarının beklendiği gibi birlikte çalışmadığını söyler.

Kabul testi: Başarısız olduğunda, uygulamanın müşterinin yapmasını beklediği şeyi yapmadığını söyler.

Regresyon testi: Başarısız olduğunda, uygulamanın artık eskisi gibi davranmadığını söyler.


19

Aşağıda, bahsedilen testlerin her biri ve ne zaman uygulanabilecekleri için basit bir açıklama yer almaktadır:

Birim Testi Bir birim testi, bağımsız bir birimde (genellikle bir sınıf veya yöntem) gerçekleştirilir ve bir birim uygulandığında veya bir birimin güncellenmesi tamamlandığında gerçekleştirilmelidir.

Bu, bir sınıf / yöntem yazdığınızda, bir hatayı düzelttiğinizde, işlevselliği değiştirdiğinizde çalıştığı anlamına gelir ...

Entegrasyon Testi Entegrasyon testi, birkaç birimin birbiriyle ne kadar iyi etkileşime girdiğini test etmeyi amaçlar. Bu tür bir test, birimler arasında yeni bir iletişim biçimi kurulduğunda veya etkileşimlerinin doğası değiştiğinde gerçekleştirilmelidir.

Bu, yeni yazılmış bir birim sistemin geri kalanına entegre edildiğinde veya diğer sistemlerle etkileşime giren bir birim güncellendiğinde (ve birim testlerini başarıyla tamamladığında) çalıştırıldığı anlamına gelir.

Regresyon Testi Regresyon testleri, sistemde herhangi bir değişiklik yapıldığında, yeni hataların ortaya çıkmadığını kontrol etmek için gerçekleştirilir.

Bu, tüm yamalardan, yükseltmelerden, hata düzeltmelerinden sonra çalıştığı anlamına gelir. Regresyon testi, birleşik birim testi ve entegrasyon testinin özel bir durumu olarak görülebilir.

Kabul Testi Kabul testleri, bir alt sistemin (muhtemelen tüm sistemin) tüm spesifikasyonlarını karşılayıp karşılamadığının kontrol edilmesi gerektiğinde gerçekleştirilir.

Bu, esas olarak yeni bir teslimatı bitirmeden veya daha büyük bir görevin tamamlandığını duyurmadan önce çalıştırıldığı anlamına gelir. Müşteriye / patrona koşmadan ve zaferi ilan etmeden önce hedeflerinizi gerçekten tamamladığınızı görmek için bunu son kontrolünüz olarak görün.

En azından bu şekilde öğrendim, ancak başka muhalif görüşler olduğundan eminim. Her iki durumda da yardımcı olacağını umuyorum.


Regresyon testi ile birim testi arasında gerçekten ayrım yapamıyorum. Demek istediğim, her değişiklik / işlemden sonra hala birim testleriniz çalıştırılır ... ve yeni kodun getirdiği hataları yakalayabilirler. Sağ?
Bal

@Honey Şey, regresyon testi paketi çoğunlukla ünite ve entegrasyon testlerinizin bir kısmının veya tamamının bir seçimidir. Bu bir politika meselesi, ne kadar regresyon testi yapmak istediğiniz. Ana fark, Birim testlerinin aktif geliştirmede yapılmasıdır, gerileme testleri ise daha çok önceki projelerin geri dönüp yama yaptığınızda bozulmadığını kontrol etmek için kullandığınız bir şeydir.
Agentlien

AFAIK, aslında birim test yöntemleri yapmamalısınız. Sınıfı test ederseniz, onu bir bütün olarak ele almalısınız, böylece sınıfın genel arayüzünü test edersiniz, uygulama ayrıntılarını değil. Bağımsız işlevi birim testi yapabilmenize rağmen, sorun değil.
Qback

14

Deneyeceğim:

  1. Birim testi: bir geliştirici, tek bir bileşeni veya sınıfı test etmek için bir tane yazacaktır.
  2. Entegrasyon testi: işbirliği yapması gereken birkaç bileşen veya paketi içeren daha kapsamlı bir test
  3. Gerileme testi: Bir uygulamada tek bir değişiklik yapmak, sizi TÜM testleri yeniden çalıştırmaya ve TÜM işlevselliği kontrol etmeye zorlar.
  4. Kabul testi: Son kullanıcılar veya KG, bir başvurunun teslimini kabul etmek için imzalamadan önce bunları yapar. "Uygulama, gereksinimlerimi karşıladı" yazıyor.

14

Birim Testi: Tek yöntemim doğru çalışıyor mu? (Bağımlılık veya bağımlılık alay konusu YOK)

Entegrasyon Testi: Ayrı ayrı geliştirilmiş iki modülüm bir araya getirildiğinde doğru çalışıyor mu?

Regresyon Testi: Yeni kodu değiştirerek / yazarak herhangi bir şeyi kırdım mı? (her kaydetme ile birim / entegrasyon testleri çalıştırmak teknik olarak (otomatikleştirilmiş) regresyon testidir). Daha çok QA bağlamında kullanılır - manuel veya otomatik.

Kabul Testi : Müşteri tarafından yapılan ve teslim edilen SW'yi "kabul ettiği" test


0

Yorum yapılamıyor (itibar düşük: - |) bu yüzden ...

@Andrejs, her test türüyle ilişkili ortamlar arasındaki farklılıklar konusunda iyi bir noktaya işaret ediyor.

Birim testleri, tipik olarak geliştiricilerin makinesinde (ve muhtemelen CI oluşturma sırasında) diğer kaynaklara / sistemlere bağımlılıklarla alay edilerek çalıştırılır.

Tanım gereği entegrasyon testleri (bir dereceye kadar) bağımlılıkların kullanılabilirliğine sahip olmalıdır; çevrenin daha temsili olduğu için diğer kaynaklar ve sistemler çağrılmaktadır. Test verileri alay konusu olabilir veya gerçek üretim verilerinin küçük bir karmaşık alt kümesi olabilir.

UAT / Kabul testi, gerçek dünya deneyimini QA'ya ve yazılımı kabul eden iş ekiplerine temsil etmelidir. Bu nedenle, gerçekçi performans ve son kullanıcı deneyimi sunmak için tam entegrasyon ve gerçekçi veri hacimlerine ve tam maskelenmiş / gizlenmiş veri setlerine ihtiyaç vardır.

Diğer "hastalıkların" da üretim deneyimini simüle etmek için ortamın mümkün olduğunca gerçeğe yakın olmasına ihtiyaç duyması muhtemeldir; örneğin performans testi, güvenlik, ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.