Birim Testi başarısızlık desenleri bulma

1 Cevap php

Ben Birim Testi için yeni değilim, ben sadece test suit bina rutin içine alıyorum. Ben baştan testleri inşa etmek isteyen oldukça büyük bir proje olacak ne var.

Ben test suit bina için genel stratejiler ve kalıpları anlamaya çalışıyorum. Eğer bir sınıf baktığınızda, birçok testler nedeniyle sınıfın doğası açıkça size gelir. Iyi CRUD - bir veritabanı tablosuna ilgili olan temel CRUD operasyonları ile bir "kullanıcı hesabı" sınıfına, Say, biz test etmek isteyecektir.

  • bir nesne oluşturma ve var olup olmadığını görme
  • özelliklerini sorgulamak
  • bazı özelliklerini değiştirmek
  • bazı özelliklerini değiştirmek to incorrect values
  • ve tekrar silin.

: Şeyleri kırmak için nasıl gibi, en CRUD sınıfları için ortak testler gibi "başarısız" vardır

  • Geçersiz giriş veri tipleri
  • Seçilen veri türü aralığını aşan ID anahtarı olarak bir sayı
  • Yanlış bir karakter kodlaması ile giriş
  • Çok uzun Girdi

Ve böylece vb.

Dosya işlemleri ile ilgili bir birim test için, "kırılma şey" listesi olabilir

  • Dosya adı geçersiz karakterler
  • Dosya adı çok uzun
  • Dosya adı yanlış protokol veya yol kullanır

Bir anda üzerinde çalıştığı birim test ötesinde uygulanabilir - - denenmektedir en birimleri için bulunabilir ben eminim benzer modeller değilim.

Şimdi benim soru:

  • Böyle "kırılma desenleri" görme düzeltmek muyum? Veya Birim testi hakkında tamamen yanlış bir şey alıyorum, ve ben doğru yaptım, bu hiç bir sorun olmaz? Birim Testi gitmek için doğru yolu mümkün olduğunca birim kırmak için birçok yollar bulma süreci olarak mı?

  • Ben doğru isem: Orada mevcut tanımların, listeleri, bu tür kalıpları için hile yaprak mı?

  • Bu tür kalıpları otomatikleştirmek için (yani çerçeve gibi ben çalışıyorum ağırlıklı PHPUnit olarak) herhangi hükümler var mı?

  • Kontrol listeleri, veya yazılım biçiminde - - tam testler yazılı olarak yardımcı olmak için herhangi bir yardım var mı?

1 Cevap

Bu temelde doğru. Muhtemelen şifre kırabilir yollarını arıyor önemli bir parçasıdır ve birim test beceridir. Ancak, TDD uygulanan birim test biraz farklı çalışır. TDD ilk bu test geçiş yapmak için kodu oluşturmak, sonra işlevselliği yeni bir parça için bir test yazmak. Böylece vurgu sonuç benzer olsa da, burada farklıdır.

TDD, sürekli bir "şapka değiştirir" - test, kodlama biraz biraz. Yani bu yöntemde, test bir automatable parçası değil, ama neredeyse bu yaratıcı süreç için önemli olduğunu söyleyebiliriz. Testleri yazarken, aynı zamanda birim arayüzü tasarımı ve (gelecekteki) müşterilerin bakış açısından düşünme vardır - onlar ne bekleyebilirsiniz, ve sağladıkları için ne gerekiyor? Sonra şapka geçiş ve bu beklentileri yerine getirmek için ünitenin içeri.

Yani bu sadece bir liste öğeleri kontrol ederek değiştirilebilir hissetmiyorum. Eğer gerçek ünite test fikirler tükendi kez Tabii ki, böyle bir listesini kontrol etmek asla acıyor. Doğaları gereği Ancak bu sayfaları okunur veya belirli bir proje ve test etmek için belirli bir sınıf için geçerli olmayabilir genellemeleri içerebilir. Ama görünüşe göre :-) zaten özel birimler için iyi bir test durumları bulmak için deneyim ve zihniyet var