Dezvoltare prin testare (tdd)

Testarea codului este enervantă, dar este folositoare atunci când lucrați la un proiect. Astăzi, vom folosi TDD pentru a scrie și testa codul mai eficient.







Ce este TDD?

De la începutul erei computerelor, programatorii și erorile au luptat pentru excelență. Acesta este un fenomen inevitabil. Fiecare programator a devenit o victimă a erorilor. Codul nu este sigur. De aceea facem teste.

Dezvoltarea prin testare (dezvoltarea bazată pe teste) este o tehnică de programare în care testele unității pentru un program sau fragmentul acestuia sunt scrise în program (dezvoltarea primului test) și, în esență, controlează dezvoltarea acestuia.

Cum funcționează?

Dezvoltarea prin testare sau TDD este un ciclu de dezvoltare repetat scurt:

  1. Înainte de a scrie orice cod, mai întâi trebuie să scrieți un test automat pentru codul dvs. În momentul în care ați scris testul, trebuie să luați în considerare toate datele posibile de intrare, erori și ieșiri în browser
  2. După aceasta, puteți începe să scrieți codul. Trebuie să faceți modificări până când codul trece automat testele
  3. Odată ce codul a trecut testul, puteți începe curățarea codului (refactoring)

Dezvoltare prin testare (tdd)

Mare, dar cum este mai bine decât testarea regulată?

Nu ați testat programul din mai multe motive:

  • ați simțit că a fost o pierdere de timp, deoarece au existat corecții minore ale codului
  • nu ai avut timp suficient pentru test, deoarece managerul de proiect a vrut să obțină produsul cât mai repede posibil
  • l-ai lăsat mâine

De mult timp nu se întâmplă nimic și ați transferat produsul în producție. Dar, uneori, după ce produsul este transferat la producție, totul merge prost.


TDD elimină greșelile noastre. Când programul a fost dezvoltat utilizând dezvoltarea prin testare, vă permite să efectuați modificări și să efectuați teste mai eficient și rapid. Tot ce trebuie să facem este să executați testele. Dacă codul trece toate testele, atunci poate fi aplicat, așa că am făcut greșeli împreună cu modificările. Știind care parte a testelor a eșuat, este mai ușor să elimini erorile.

Cum se efectuează testele?

Există multe cadre pentru testarea scripturilor PHP. Una dintre cele mai utilizate pe scară largă este PHPUnit.

PHPUnit este un cadru excelent de testare pe care îl puteți integra cu ușurință în proiectele dvs. sau în alte proiecte create utilizând cadre PHP populare.

În exemplul nostru, nu vom avea nevoie de multe funcții pe care le oferă PHPUnit. Prin urmare, vom folosi un sistem simplu de testare numit SimpleTest.

Luați în considerare dezvoltarea și testarea cărții de oaspeți, în care fiecare utilizator poate adăuga și vizualiza mesaje. Să presupunem că marcarea a fost deja făcută și facem doar o clasă care conține logica cărții de oaspeți, care include citirea și scrierea din baza de date. Metoda de a citi această clasă este ceea ce vom dezvolta și vom testa.







Pasul 1. Configurarea testului SimpleTest

Descărcați SimpleTest aici și despachetați-l în orice dosar. Totul ar trebui să arate astfel:

Dezvoltare prin testare (tdd)

Index.php se va conecta la guestbook.php și va apela metoda de ieșire a înregistrărilor. În directorul de clase va fi guestbook.php, iar în dosarul de testare este despachetat SimpleTest.

Pasul 2. Planificați acțiunile

Cel de-al doilea pas este cel mai important, deoarece în ea începem să ne formăm testul. Pentru a face acest lucru, trebuie să planificați ce va face funcția dvs., ce intrare va primi și care o va returna în scenariu. Acest pas este similar cu un joc de șah - trebuie să știți totul despre adversar (programul), inclusiv toate slăbiciunile sale (erori posibile) și punctele forte (ce se întâmplă dacă programul funcționează cu succes).

Să stabilim schema de lucru pentru cartea noastră de oaspeți:

Pasul 3. Scrieți un test

Acum putem scrie primul test. Mai întâi, creați un fișier numit guestbook_test.php în dosarul de testare.

Apoi, să implementăm cerința noastră de la pasul 2.

După cum puteți vedea aici, verificăm rezultatele cărții de oaspeți cu intrări și fără. Verificăm dacă aceste două funcții îndeplinesc criteriile stabilite în etapa 2. Fiecare dintre funcțiile noastre de testare începe cu cuvântul "test". Am făcut acest lucru pentru că SimpleTest va căuta funcții începând cu cuvântul "test" la pornirea acestei clase și lansarea acesteia.

În clasa noastră de testare am folosit câteva metode de validare: assertTrue, assertIsA și assertEquals. Funcția assertTrue verifică dacă valoarea este adevărată. assertIsA verifică tipul variabilei. În cele din urmă, funcția assertEquals verifică dacă variabila este egală cu o anumită valoare.

Există și alte metode de verificare furnizate de SimpleTest:

Eșec dacă $ x == false

Pasul 4. Pierdere

După ce terminați scrierea codului, executați testul. Primul test ar eșua. Dacă nu se întâmplă acest lucru, testul dvs. nu verifică nimic.

Pentru a rula testul, trebuie să deschideți guestbook_test.php în browserul dvs. Veți vedea:

Din moment ce nu am creat încă clasa noastră de cărți de oaspeți, am eșuat. Pentru a rezolva acest lucru, creați un fișier guestbook.php în folderul clase. Clasa va conține metodele pe care le-am planificat, dar ele nu vor conține nimic. Rețineți că scriem teste înainte de a scrie codul produsului.
Din moment ce nu am creat încă clasa noastră de cărți de oaspeți, am eșuat. Pentru a rezolva acest lucru, creați un fișier guestbook.php în folderul clase. Clasa va conține metodele pe care le-am planificat, dar ele nu vor conține nimic. Rețineți că scriem teste înainte de a scrie codul produsului.

Când executați testul data viitoare, veți vedea:

Când executați testul data viitoare, veți vedea:

După cum vedem, codul nostru încă nu trece testul, vom rezolva acest lucru în pasul următor.

Pasul 5. Scrierea codului produsului

Acum că avem un test, putem începe să scriem cod. Deschideți fișierul guestbook.php și începeți să scrieți:

În clasa guestbook.php, există câteva erori pe care le-am făcut în mod intenționat, acum vom verifica dacă codul nostru trece testul sau nu:

Verificarea ne arată că testul conține erori. Cu ajutorul mesajelor de diagnoză, este ușor să determinați locul verificării, ceea ce provoacă o eroare:

Acest lucru ne spune că matricea returnată nu are cheia corectă. Pe baza acestui fapt, știm care parte din codul nostru nu funcționează:

Acum, când conducem testul, vedem:

Pasul 6. Refactorizarea și îmbunătățirea codului

Din moment ce codul pe care l-am testat a fost simplu, testele și erorile de fixare nu au durat mult. Dar dacă ar fi o aplicație mai voluminosă, atunci ar trebui să faceți o modificare multiplă a codului dvs., să o clarificați, îmbunătățind astfel suportul de cod mai târziu. Problema este că modificările suplimentare generează erori suplimentare. După ce ați făcut modificările, trebuie să efectuăm din nou testul.

Pasul 7. Repetați

În cele din urmă, atunci când sunt necesare noi funcții, va trebui să scrieți noi teste. Este ușor! Repetați toți pașii de la pasul 2 (deoarece fișierul dvs. SimpleTest trebuie să fie deja setat) și începeți ciclul din nou și din nou.

concluzie

Am examinat utilizarea SimpleTest pentru dezvoltarea produsului. Nu am acoperit toate funcționalitățile SimpleTest. Informații suplimentare pot fi găsite utilizând documentația (engleză) sau articolul Wikipedia (engleză).

Testarea este o parte integrantă a ciclului de dezvoltare, dar, de obicei, acesta este primul lucru care este scurtat cu termeni de dezvoltare strânși. Sperăm că, după ce ați citit acest articol, veți aprecia dezvoltarea prin testare.







Articole similare

Trimiteți-le prietenilor: