Ne ünite testleri ve neden bakım gerekir?

8 Cevap php

Tamam, PHP ve JavaScript web uygulamaları geliştirmek ve bir çok kez burada yığın taşması ben sözcüğü unit test geçirerek gördük, ama hiçbir yerde web sitesinde ben tatmin edici bir cevap buldu mümkün olmuştur ne tam bir birim testtir.

Peki ünite testleri ve gereken ben, bir PHP ve JavaScript programcısı, bakım, ya da sadece 'gerçek' programlama dilleri nelerdir?

8 Cevap

Birim testleri korumak istediğiniz herhangi bir kodu vardır.

Özetle, fikir izolasyon çalıştırılabilir her biri pek çok küçük testler, yazma ve kod tabanı (genellikle bireysel sınıflar veya bireysel fonksiyonları) mümkün olan en küçük parçası test etmektir. Ben bu fonksiyonu beklediği giriş verirseniz, ben bekliyoruz çıktı çıkmıyor? Eğer varsa, bu uygulamanın geri kalanı oldukça fazla çalışıyor kabul anlamına gelir. Eğer bu olmuyorsa, ben değil benim uygulama bütünlüğü aracılığıyla iz çalışırken daha küçük, basit, izole birim test işlevi hatayı yakalamak istiyorum.

Tabii ki, bu aynı zamanda bireysel fonksiyonları veya onları test etmek sınıfları izole etmek mümkün olmalı hem çünkü, ve de, testler kendilerini yazmayın, çünkü, size kod yazmak nasıl oldukça disiplinli olmak gerekir. Bunu yapmak zorundayız. ;)

Gördüğüm PHP kod çoğunun kalitesi göz önüne alındığında, birim test definitely PHP toplumda yeri var diyebilirim. Daha çok aslında hemen hemen başka hiçbir dil, daha. ;)

Bir birim test yazdığınız kod küçük bir kısmının bir testtir. Eğer bu kod bölümü çalıştığından emin olmak için sistem geri kalanından izole test.

Bu kod küçük porsiyonlarda bir sürü sınamak onlar çalışmalarını sağlamak, ve sonra onları değil, bir bütün olarak sistemin test daha, birlikte çalışma test etmek daha kolaydır.

Bu birim test ve otomatik birim test ayırt etmek önemlidir. Her zaman birim kodu ile test edilmelidir. Ancak, ünite testleri otomatize bir bütün diğer konudur.

Zaten cevaplanması gereken ne ek olarak, kodunuzu kapsayan testler durumlarda sahip olmak Refactoring (onun gözlemlenebilir davranışlarını değiştirmeden kod tasarım geliştirmeye) devam etmek için izin verir.

Unit test frameworks for PHP ihtiva PHPUnit ve SimpleTest o olmuştur compared on StackOverflow.

Gördüğüm php çoğunda birim test yapmak neredeyse imkansızdır.

Eğer ilgileniyorsanız Wikipedia birim test ilgili bir makale var.

Eğer herhangi bir açıklama bir uygulama yazarsanız, ünite testleri düşünmelisiniz. Düzgün yapılmazsa, onlar sizin kullanıcılara teslim edilir kod kalitesi hakkında düşünmeye zorlar. Burada var sorun, birim test kodu ve otomatik birim test arasındaki fark olduğunu düşünüyorum. Birim test sadece bir dizi test yazmak ve sonra el bunlar aracılığıyla çalışan olarak yapılabilir.

Otomatik birim test, diğer taraftan, bazı çalıştırmak için uygulama / koşum biçimini ve tekrar çalıştırın testler sahip dayanır. Otomatik birim testler ile sadece bir düğmeye basarak testleri yeniden çalıştırabilirsiniz. Peki neden bu kadar önemli bir deneyi tekrar edilir? Basitçe söylemek gerekirse, bir kez onlara testler uygulamaları yazmak ve sonra onlardan uzak yürümek değildir. Ayrık küçük çalışır kodunuzu egzersiz ve geliştirme süreci boyunca onları çalıştırmak böylece testleri yazmak. Testlerin iyi yazılmış bir dizi ile, bu yaparak, yükseltmeleri tarafından kırılmış oldu kod tanımlamanın çok daha iyi bir şansı.

why birim test ilk etapta yapılmalı, ben Barry Boehm tarafından argüman eklemek istiyorum: "keşfedildi ve birim test aşamasında düzeltilmiş bir arıza durumunda daha fazla yüz kat daha ucuz o Müşteriye teslim edildikten sonra yapılır. "

Çarpanı biraz kaba ses etmese de, ben argüman kesinlikle test haklı düşünüyorum.

A google search for "php unit testing" Bu konuda bir bilgi hazine verir. PHPUnit proje ilginç görünüyor.

Birim testleri bir kod verilmiş bir parça bunu koşullar verilen bir grubu altında ne bekliyoruz yapar olmadığını test otomatik testler vardır. İyi ünite testleri genellikle bireysel işlevleri düzeyinde, işlevsellik küçük parçalar test edin.

Birim testleri genellikle, bazı devlet kurmak, sınamak istediğiniz işlevi veya yöntemini çalıştırmak, ve sonra bu işlevin bir sonucu olarak bu işlevin çıktı, ya da diğer devlet bir değişiklik ya da iddia şekilde yapılandırılmıştır. Çoğu birim test çerçeveler gibi destekleyici ve bu yapılanma için yarar var:

  • Test cases: birlikte grup benzer testler, genellikle bu testin aynı dosya veya kod bölümüne yolları.
  • Setup/teardown functions: kurulum ve temizleme devlet birden fazla testler arasında aynı olduğunu, her testten önce denir fonksiyonları.
  • Assertion functions: bu belirli şeyler gibi bir değer olarak, doğru iddia izin işlevler başarısız olduğunda, onlar ne gösterecek bir değer, vb, doğru / yanlış olduğunu, başka beklenen değerine eşittir beklenen ve gerçek değerler vardı.
  • A test running application: başarılı her olsun veya başarısız ve başarısız hangi belirli iddialar, başarısız, ve aksine gerçek değeri ne ise size gösteren, size birbiri ardına için tüm testleri çalışan bir uygulama beklenen değer.

Birim testleri nedenlerle bir dizi için yararlıdır:

  • They ensure your code works, bunu elle test etmek zorunda kalmadan, onu yazıyoruz. Eğer bir fonksiyon yazarken, bunun hemen hataları yakalamak, nasıl çalıştığı hakkında varsayımlar test edebilirsiniz.
  • They keep working code working, siz veya bir başkası değiştirir bile. Bir fonksiyon yazılmış ve tam birim test edildiğinde, o sizin veya bir başkasının bu işlevsellik herhangi tatili, hemen bileceksiniz (yani, herşeyi onlar aslında yok olduğunu doğrulamak ünite testleri ilişkili olması yapmalıyım) ne zaman Eğer birim testi çalıştırın ve kolayca düzeltmek olabilir.
  • They help you debug. Aksine elle uygulamayı test gözlenen bir hata teşhis çalışırken kod büyük hacimleri ile bakmak yerine, birim testleri sen düşünmek gerekir karmaşıklık miktarını azaltarak, işlevsellik küçük parçaları üzerinde odaklanmanızı sağlar.
  • They document your code kod değişiklikleri gibi güncel kalır bir şekilde. Tasarım belgeleri ve yorumlar güncellemek için unutmak kolaydır. Bu güncelleme değilken Unit testleri, diğer taraftan, ara. Açıkça yazılı, onlar aslında belli bir durumda ne kodu göstermek ve size ispatlayabilirim.

Birim testleri dili ne olursa olsun, birkaç satır daha büyük olan herhangi bir kod yararlıdır. Ben kesinlikle birim bile nispeten küçük projeler için, php kodu test ettik ve ondan derhal ödülleri aldık.