10 instrumente de testare PHP pentru pluginuri WordPress

Publicat: 2022-08-05

Niciun software nu este lipsit de erori. Aceasta este o axiomă care se aplică fiecărui limbaj de programare și fiecărei aplicații.

Când acele erori sunt implementate pe site-ul dvs. în producție, puteți suferi consecințe adverse de diferite severitate. Acestea sunt câteva exemple, de la enervant la dăunătoare din punct de vedere economic:

  • Ușoară: un utilizator nu poate face clic pe un link întrerupt.
  • Serios: Butonul „Trimite” al unui formular de contact nu funcționează, pe care utilizatorul îl descoperă numai după ce și-a compus mesajul.
  • Grav: un gateway de plată nu este configurat corespunzător, ceea ce face ca utilizatorii să nu poată cumpăra produse din magazinul dvs. de comerț electronic, abandonând astfel site-ul.

Nici un singur instrument nu este suficient pentru a gestiona toate aspectele testării unei aplicații... dar cu puțin ajutor din acest ghid, puteți construi o stivă pentru următorul dvs. proiect Faceți clic pentru a Tweet
Nici un singur instrument nu este suficient pentru a gestiona toate aspectele testării unei aplicații din toate unghiurile posibile. Într-adevăr, pe lângă găsirea erorilor, este vital să executați teste suplimentare pentru a valida alte funcții ale aplicației, cum ar fi:

  • Accesibilitate și utilizare
  • Performanță acceptabilă
  • Traficul și manipularea încărcăturii


În acest articol, vom trece în revistă 10 instrumente create de comunitatea open source care pot ajuta la alcătuirea unei stive pentru testarea codului PHP în pluginurile WordPress. Unele dintre aceste instrumente au fost concepute special pentru testarea codului PHP; altele sunt menite pentru a testa codul WordPress; și alte câteva instrumente au fost create pentru a gestiona unele funcționalități generice care sunt utile pentru testare.

1. DevKinsta

Detalii pentru un site WordPress local în DevKinsta.
Detalii pentru un site WordPress local în DevKinsta.

DevKinsta este o suită de dezvoltare locală pentru site-uri WordPress. Doar oferind câteva detalii de bază, o instanță locală a unui site WordPress este instalată imediat și vine la pachet cu mai multe instrumente de dezvoltare utile, cum ar fi o căsuță de e-mail, un manager de baze de date și înregistrare pentru o depanare mai ușoară.

DevKinsta este utilizat în mod normal de dezvoltatori și designeri atunci când își creează temele și pluginurile WordPress. Dar poate fi folosit și ca server web local pentru executarea testelor de integrare și funcționalitate. Acest lucru se realizează în tandem cu un instrument HTTP care vă ajută să verificați conținutul răspunsului și anteturile sunt corecte.

Caracteristicile de top ale DevKinsta sunt:

  • Este ușor să creați un nou mediu WordPress și să îl ștergeți odată ce nu mai este necesar
  • Permite testarea oricărei versiuni acceptate de PHP și WordPress și orice combinație a acestora
  • Se integrează perfect cu MyKinsta, unde utilizatorii pot crea o copie de rezervă externă a site-urilor și datelor lor

2. PHPUnit

Sigla PHPUnit.
Sigla PHPUnit.

PHPUnit este un cadru de testare orientat spre programator pentru PHP. Este cel mai popular cadru pentru executarea testelor unitare în cod PHP, având ca obiectiv validarea unităților individuale de cod sursă.

Testele PHPUnit permit dezvoltatorilor să găsească probleme cât mai devreme posibil în cadrul ciclului de dezvoltare, ajutând să se asigure că nu au fost introduse regresii de cod (adică modificările aduse unor fragmente de cod nu au cauzat probleme în altă parte).

Principalele caracteristici ale PHPUnit sunt:

  • Testare de funcții noi
  • Validarea codului recent refactorizat
  • Poate fi complet automatizat și executat în cadrul procesului de integrare continuă la alegere
  • Depanare
  • Documentare automată privind utilizarea așteptată prin invocarea funcționalității și constrângeri
  • Permite abordarea Test-Driven Development (TDD) în care dezvoltatorii creează mai întâi teste, apoi funcționalități

3. Maimuța creierului

Logo-ul Brain Monkey.
Logo-ul Brain Monkey.

Brain Monkey este un utilitar de testare pentru PHP și WordPress. Oferă instrumente agnostice de cadru care vă permit să redefiniți metodele PHP și să testați comportamentul oricărei aplicații PHP. De asemenea, oferă instrumente specifice pentru testarea codului WordPress.

Caracteristicile de top ale Brain Monkey sunt:

  • Permite testelor unitare să interacționeze cu biblioteci externe, descărcate
  • Permite invocarea funcțiilor WordPress fără a fi nevoie să încărcați mediul WordPress
  • Poate afirma că funcțiile WordPress (cum ar fi add_filter sau do_action ) invocă funcționalitatea conform așteptărilor

4. Brain Faker

Brain Faker pe GitHub.
Brain Faker pe GitHub.

Brain Faker folosește Faker (o bibliotecă PHP populară pentru generarea de date false) și Brain Monkey pentru a oferi o generare ușoară de obiecte WordPress false și funcții conexe pe care le puteți testa, inclusiv:

  • WP_Post și funcționează simulate de funcții legate, cum ar fi get_post și get_post_field
  • WP_User și funcții similare simulate, cum ar fi get_userdata , get_user_by , user_can și multe altele
  • WP_Term și funcționări similare, cum ar fi get_term și get_term_by
  • WP_Comment
  • WP_Site și funcționări similare, cum ar fi get_site
  • WP_Post_Type și funcțiuni legate de simulare precum get_post_type_object și post_type_exists
  • WP_Taxonomy și funcțiuni legate de simulare, cum ar fi get_taxonomy și taxonomy_exists
  • WP_Error

Principalele caracteristici ale Brain Faker sunt:

  • Injectează date WordPress false, dar realiste în testul unitar — accesarea datei modificate a unei postări false se va comporta ca o dată (de exemplu 2022-04-17T13:06:58+00:00 ), numele unui utilizator se va potrivi (de exemplu, "John Smith" ), o instanță de postare falsă este creată de o instanță de utilizator falsă și așa mai departe
  • Datele false pot fi furnizate în prealabil sau generate aleatoriu
  • Extensibil – dezvoltatorii pot să bată joc de clase și funcții din propriile lor pluginuri WordPress

5. Batjocură

Batjocură pe GitHub.
Batjocură pe GitHub.

Mockery este un cadru de obiecte simulat PHP simplu, dar flexibil, menit să fie utilizat împreună cu PHPUnit, PHPSpec sau orice alt cadru de testare unitară. Oferă un cadru dublu de testare capabil să definească toate operațiunile și interacțiunile posibile cu obiecte folosind un limbaj specific domeniului (DSL) care poate fi citit de om.

Principalele caracteristici ale batjocoriei sunt:

  • Permite generarea flexibilă de obiecte simulate și stub-uri (care oferă răspunsuri predefinite predefinite la anumite apeluri efectuate în timpul testelor)
  • Îmbunătățește capacitățile de izolare a testelor PHPUnit
  • API flexibil pentru a exprima așteptările batjocorite, imitând cât mai mult posibil o descriere în limbaj natural (de exemplu $mock->shouldReceive('myMethod')->once()->andReturn('Hello world!'); )
  • Teste unitare folosind obiecte simulate din memorie pentru a evita necesitatea de a accesa sisteme mai lente (cum ar fi baze de date, sisteme de fișiere sau servicii externe)
  • Poate batjocori atât comportamentul determinist, cât și non-determinist

6. Instrumentul de export nativ WordPress

Instrumentul de export WordPress.
Instrumentul de export WordPress.

Instrumentul nativ de export WordPress descarcă datele WordPress ale site-ului pe dispozitivul dvs. ca fișier XML, inclusiv postări, pagini, tipuri de postări personalizate, comentarii, câmpuri personalizate, categorii, etichete, taxonomii personalizate, utilizatori și media. Fișierul XML are un format personalizat (numit WordPress eXtended RSS sau fișier WXR) care poate fi importat în orice site WordPress.

Acest instrument nu este conceput special pentru testare. Cu toate acestea, utilitatea sa provine din posibilitatea de a crea instantanee ale bazei de date WordPress care conțin un set de date adecvat, care poate fi apoi folosit pentru testare. Aceasta înseamnă că site-ul WordPress aflat în producție, care conține date reale, poate fi exportat și importat într-o instanță de dezvoltare sau de staging pentru a testa o nouă funcționalitate.

Principalele caracteristici ale instrumentului de export WordPress sunt:

  • Crearea datelor de testare folosind un site WordPress real
  • Fișier de export partajabil al întregii baze de date
  • Util atât pentru integrare, cât și pentru testarea unitară

7. Guzzle

Logo Guzzle.
Logo Guzzle.

Guzzle este un client HTTP PHP care facilitează trimiterea de solicitări HTTP și integrarea cu serviciile web.

Guzzle este un instrument generic, așa că testarea este doar unul dintre posibilele cazuri de utilizare. Împreună cu un server web local, cum ar fi DevKinsta, Guzzle face posibilă executarea de teste de integrare: Puteți utiliza Guzzle pentru a trimite o solicitare HTTP către serverul web de dezvoltare, apoi treceți răspunsul la un test unitar în PHPUnit care verifică conținutul și anteturile sunt setate conform așteptărilor.

Caracteristicile de top ale lui Guzzle sunt:

  • Îndeplinește recomandarea standard PHP „PSR-7” (pentru interfețele de mesaje HTTP), excluzând blocarea furnizorului
  • Simplu și rapid
  • Testele sunt executate pe un site WordPress real, sporind fiabilitatea
  • Poate fi executat din PHPUnit pentru ușurință și viteză
  • Testele de integrare pot fi automatizate și adăugate la procesul de integrare continuă

8. WP-CLI

Sigla WP-CLI.
Sigla WP-CLI.

WP-CLI este interfața de linie de comandă pentru WordPress. Cu acesta, puteți actualiza pluginuri, configura instalări multisite și multe altele, fără a utiliza un browser web.

WP-CLI nu este în mod specific un instrument de testare, dar testarea este printre numeroasele sale cazuri de utilizare. De exemplu, după ce ați creat un nou server web de dezvoltare, puteți executa un script bash care conține comenzi WP-CLI pentru a importa datele de testare pe site-ul WordPress, a crea utilizatori cu rolurile și capabilitățile adecvate, a instala pluginurile terță parte necesare și alte astfel de sarcini.

Deoarece scriptul cu comenzile WP-CLI poate fi stocat în depozitul dumneavoastră Git, procesul de executare a testelor de integrare poate fi apoi automatizat și integrat în procesul dumneavoastră de integrare continuă:

  1. Utilizați instrumentul de export WordPress pentru a genera date reale de testare și stocați-le în depozitul Git.
  2. Utilizați DevKinsta pentru a lansa un server web cu o nouă instanță WordPress.
  3. Utilizați WP-CLI pentru a importa datele de testare pe site-ul WordPress (DevKinsta poate fi operat prin WP-CLI).
  4. Creați un test unitar în PHPUnit, astfel încât Guzzle să execute o solicitare HTTP împotriva serverului web pentru a verifica conținutul răspunsului și anteturile dvs.

Caracteristicile de top ale WP-CLI sunt:

  • Permite executarea de la distanță a comenzilor împotriva instanței WordPress printr-o interfață de linie de comandă
  • Extensibil cu alte instrumente
  • Îmbunătățește capacitățile stivei de testare
  • Permite automatizarea completă a procesului

9. XDebug

Logo-ul XDebug.
Logo-ul XDebug.

XDebug este o extensie pentru PHP care oferă o serie de caracteristici pentru a îmbunătăți experiența de dezvoltare PHP, inclusiv depanare, îmbunătățiri ale raportării erorilor PHP, urmărire, profilare și analiza acoperirii codului.

XDebug nu vă va ajuta să vă testați codul, dar vă va ajuta să aflați unde este eroarea. Combinarea XDebug cu PHPUnit este deosebit de eficientă: dacă un test eșuează și nu puteți găsi sursa problemei, puteți utiliza XDebug pentru a adăuga puncte de întrerupere în codul testului unitar. Când rulați din nou testul unitar, scriptul PHP va fi întrerupt la fiecare dintre acele puncte de întrerupere, permițându-vă să inspectați starea curentă a execuției (stiva de apeluri, valorile proprietăților și obiectelor etc.) și să încercați să descoperiți ce este greșit.

Caracteristicile de top ale XDebug sunt:

  • Include integrări pentru editorii PHP populari, inclusiv VS Code, PHPStorm și Sublime
  • Profilează cât timp este petrecut în fiecare apel de funcție și câtă memorie o consumă
  • Mult mai puternic decât simpla utilizare a var_dump pentru a depana codul
  • Permite modificarea valorilor variabilelor din mers la pauză la punctele de întrerupere

10. PHPStan

Sigla PHPStan.
Sigla PHPStan.

PHPStan este un instrument de analiză statică pentru PHP, conceput pentru a găsi erori în cod chiar înainte de a scrie teste.

Scopul PHPStan este de a reduce numărul de teste pe care dezvoltatorii trebuie să le scrie. Acest instrument este primul executat în stiva de testare, prinzând preventiv cât mai multe erori posibil. Doar acele erori care nu pot fi deduse din analiza statică (de exemplu, cele cu o logică defectuoasă) trebuie validate prin teste unitare.

PHPStan funcționează prin scanarea întregii baze de cod și căutând nepotriviri. De exemplu, valoarea răspunsului de la o funcție care returnează un float nu poate fi atribuită unui parametru de funcție de tip întreg. Ori de câte ori codul conține o astfel de apariție, acesta este o eroare potențială, iar PHPStan vă va avertiza despre aceasta în timpul etapei de dezvoltare, chiar în timp ce scrieți codul aplicației.

Caracteristicile de top ale PHPStan sunt:

  • Automatizare și integrare în procesul dumneavoastră existent de Integrare continuă
  • Localizează multe erori complicate, cum ar fi nepotrivirile de tip
  • Scanează întreaga bază de cod, găsind erori în porțiuni de cod executate rar
  • Organizat la niveluri de complexitate crescândă pentru a permite integrarea treptată
  • Include extensii pentru cele mai populare cadre PHP și CMS-uri, inclusiv Symfony, Laravel, Doctrine, Nette și WordPress

rezumat

Costul ca erorile să treacă neobservate în aplicația dvs. în producție poate fi dăunătoare pentru reputația și veniturile dvs., așa că trebuie să încercați să le eradicați înainte ca acestea să vă afecteze utilizatorii.
Consultați aceste 10 instrumente utile care vă pot ajuta să construiți o stivă puternică pentru testarea codului PHP în pluginurile WordPress Faceți clic pentru a Tweet
În aplicațiile complexe, este aproape imposibil să aveți încredere 100% că nu va conține erori. Din acest motiv, trebuie să configurați un proces pentru a găsi și elimina cât mai multe erori posibil în timpul ciclului inițial de dezvoltare.

Cu un set de instrumente de testare bine conceput, puteți minimiza foarte mult șansele ca aplicația dvs. să se comporte în moduri neașteptate. Comunitatea open source a creat și a pus la dispoziție o mulțime de instrumente pentru a testa diferitele aspecte ale unei aplicații, pe care le puteți – și ar trebui! — utilizați pentru a produce o stivă cuprinzătoare de testare.

În acest articol, am analizat 10 instrumente care vă vor ajuta să vă îndepliniți obiectivele de testare a codului PHP într-un plugin WordPress.

Pe care dintre aceste instrumente le-ați folosit pentru cel mai recent proiect al dvs.? Spune-ne ce ai construit cu el în secțiunea de comentarii de mai jos!