9 cele mai bune cadre automate de testare pentru PHP
Ai petrecut vreodata ore lungi depanand codul PHP? Ei bine, pentru majoritatea programatorilor probabil că nu este cea mai fascinantă provocare, dar există o soluție care ne poate ajuta să scurtăm această sarcină plictisitoare. Testarea automată poate îmbunătăți în mod semnificativ fluxul de lucru de dezvoltare PHP prin permițând testelor pre-scrise să conducă procesul de dezvoltare.
În acest post vom încerca să înțelegem de ce testările automate sunt atât de reci, cum funcționează și ce sunt cele mai bune cadre de testare puteți începe cu.
De ce testarea este importantă
Novice dezvoltatorii de PHP tind să nu scrie teste pentru codul lor. Cei mai mulți dintre noi și-au început cariera prin testarea noilor caracteristici și funcții pe care tocmai le-am scris în fereastra browserului unul câte unul, iar când ceva sa înșelat, am fost indiferenți despre ce să facem.
Scrierea de teste pentru codul nostru poate supraviețui timp prețios de depanare și ore de durere de cap. Când codul netestat intră în producție, recenziile pe care le vom obține probabil nu vor fi așa de plăcute. Deci ce putem face?
Probabil cea mai bună idee este să stabilească un flux de testare productiv în care trebuie să ne scriem propriul cod de testare care verifică dacă codul nostru de aplicație funcționează corect.
Chestia e asta codul de testare trebuie scris înainte de codul aplicației. În acest fel putem asigura de la bun început că codul pe care îl scriem funcționează corect. Codul de testare va fi în fișiere separate. Dacă mai târziu ne confruntăm cu erori în aplicația noastră PHP, nu trebuie să facem nimic altceva, trebuie doar să rulați testele pe care, sperăm, dați-ne indicii potrivite despre aceste probleme.
Altă decât economisirea timpului și pregătirea corectă a aplicației noastre pentru producție, testarea are și multe alte avantaje, cum ar fi:
- mai ușor de întreținut
- facilitarea refactorizării
- mai puține probleme de securitate
- baza de coduri mai puțin umflate (adaptarea codului aplicației la codul de test pre-scris ne va face să omitem piese inutile)
- performanță mai bună
Ce este testarea automată?
Desigur, putem scrie testele noastre manual, dar după un timp poate fi dificil și consumatoare de timp, cu multe sarcini repetitive. Testarea manuală poate fi înlocuită cu testarea automată în care folosim software-uri specifice care vor face munca obositoare pentru noi și vom putea petrece mai mult timp cu crearea logicii codului de testare.
PHP este, din fericire, un limbaj de programare destul de popular, deci există multe cadre automate de testare pe care le putem alege.
Dezvoltarea bazată pe dezvoltare (TDD) vs. Dezvoltarea condusă de comportament (BDD)
Cele două abordări principale pe care cadrele de testare automatizate le utilizează sunt Dezvoltarea condusă de teste (TDD) și dezvoltarea bazată pe comportament (BDD). În ambele, procesul de dezvoltare este condus de testare, ceea ce înseamnă că testele sunt scrise înainte de codul aplicației.
Principala diferență dintre testarea pe bază de test și comportamentul testat este în sintaxa codului de testare: TDD utilizează codul PHP corect în fișierele de testare, in timp ce BDD folosește propoziții care pot fi citite de om care descriu comportamentul fiecărei caracteristici și pot fi înțelese și de către părțile interesate non-tehnice.
Un test TDD arată astfel în editorul de coduri, este doar cod obișnuit cod PHP:
Un test BDD este similar cu acest lucru, non-programatorii pot face, de asemenea, sens de ea:
10 cadre automate de testare PHP
În acest sens, să aruncăm o privire la 10 cadre automate de testare automată pentru PHP pe care le puteți utiliza.
1. PHPUnit
PHPUnit este cel mai cunoscut cadru de testare pentru scrierea testelor de unitate pentru aplicațiile PHP. Testele unității iau mici porțiuni de cod numite unități și le testați unul câte unul. Cu ajutorul PHPUnit putem realiza dezvoltarea bazată pe test.
Acesta poate fi folosit prin intermediul Linie de comanda, și ne furnizează la îndemână clasa TestCase pe care le putem extinde în funcție de nevoile noastre. PHPUnit permite de asemenea dezvoltatorilor să folosească metode de afirmare pre-scrise pentru a afirma că aplicația se comportă într-un anumit mod.
2. Codeception
Codeception nu numai că ne permite să scriem teste de unitate, dar și teste funcționale și de acceptare. Aceste două din urmă testează aplicația PHP ca un întreg, cu toate caracteristicile legate între ele, nu ca unități. Codeception ne permite să permitem și să configuram diferite module în funcție de nevoile noastre de dezvoltare.
Este integrat cu multe cadre de dezvoltare PHP, cum ar fi Symfony2, Laravel4, Yii, Phalcon și Cadrul Zend. Acest lucru înseamnă că putem folosi un cadru de testare a automatizării PHP și un cadru de dezvoltare PHP împreună pentru a stabili un flux de lucru suplu.
3. Behat
Behat este un cadru popular de testare PHP bazat pe comportament. Testele pe care le putem scrie cu Behat arata mai degraba cum ar fi poveștile decât codul. Behat utilizează subtipul StoryBDD de dezvoltare bazată pe comportament (celălalt subtip este SpecBDD).
Cadrul a fost inspirat de proiectul Cucumber, care este un cadru de testare pentru limbajul de programare Ruby.
4. PHPSpec
PHPSpec urmărește, de asemenea, abordarea bazată pe comportament, dar subtipul său numit SpecBDD. Cu PHPSpec avem nevoie scrieți mai întâi specificațiile care descriu modul în care se va comporta codul aplicației. De asemenea, a fost inspirat de un cadru de testare Ruby numit RSpec.
5. Storyplayer
Storyplayer este un cadru de testare full-stack care face posibil scrieți testele end-to-end pentru o întreagă platformă. Storyplayer are suport pentru crearea și distrugerea mediilor de testare la cerere. Aceasta urmează abordarea TDD de testare și ne permite să scriem teste funcționale care pot verifica o aplicație ca un întreg.
6. Peridot
Peridot este un cadru ușor de testare extensibil pentru PHP. Dispune de un arhitectura bazată pe evenimente care permite testerelor cu ușurință personalizați cadrul prin pluginuri și reporteri.
Peridot utilizează descrie-l sintaxa pentru a stabili un limbaj de testare clar și lizibil care să descrie în mod clar modul în care ar trebui să se comporte codul nostru de aplicație.
7. Atoum
Atoum este un cadru intuitiv și modern de testare PHP care ne permite să executăm teste unitare. Ea simplifică dezvoltarea testelor și, întrucât este un cadru tânăr, face uz de unele capabilități mai noi introduse în PHP 5.3 (se poatenu se va folosi cu versiuni mai vechi de PHP) pentru a ne oferi un proces de testare rapid și ușor de înțeles.
Atoum asigură a un nivel ridicat de securitate în timpul executării testului, deoarece izola fiecare metodă de testare în propriul proces PHP.
8. Kahlan
Kahlan este un cadru complet de testare BDD care permite scrierea testelor de unitate folosind descrie-l sintaxă. Acesta cuprinde principiul de proiectare KISS (Keep It Simple, Stupid). Kahlan necesită cel puțin PHP 5.5.
Are o bază de coduri mici, se spune că este de aproximativ 10 ori mai mică decât PHPUnit și are multe caracteristici care ne oferă un flux de lucru de testare extensibil și personalizabil.
9. Seleniu
Seleniul este un cadru sofisticat de testare care automatizează browserele. Aceasta înseamnă că este posibil să se scrie teste de acceptare a utilizatorilor examina întreaga aplicație ca un întreg.
Seleniul este un instrument robust care are propriul său WebDriver API care poate conduce un browser nativ ca deși un utilizator real îl va folosi fie local, fie pe o mașină la distanță. Seleniul este un instrument excelent pentru testarea aplicațiilor web mai mature.
Gândurile finale
Cadrele de testare automate ne permit să scriem cod PHP de înaltă calitate și, datorită popularității limbajului, avem multe opțiuni, astfel încât să putem opta pentru cel care satisface nevoile noastre de dezvoltare cele mai bune.
Există un lucru important, deși întotdeauna trebuie să ne păstrăm în minte. Testarea automată poate fi puternică, dar poate niciodată nu înlocuiți testul beta - teste efectuate de oameni reali, care vor fi utilizatorii viitori ai aplicației.