Discuție cu Programatorul PHP Grumpy

Recent am avut șansa de a mă prinde cu Chris Hartjes sau, așa cum unii dintre voi îl știți, "" Programatorul nenorocit ". Deoarece a lansat recent o nouă carte electronică privind dezvoltarea bazată pe test în PHP, am vrut să-i aleg creierul putin!


Sunteți cunoscuți sub numele de "Programatorul nenorocit". Cum a ajuns acest titlu?

Nu sunt cu adevarat atat de grumpy in viata reala. Bine, poate puțin.

În timp ce sunt destul de grumpy atunci când stau în fața unui cod de calculator, "The Grumpy Programmer" este mai mult de un brand; un instrument de marketing mai mult decât orice altceva. Deoarece am câștigat experiență ca programator, am vrut să împărtășesc ideile mele pentru a ajuta pe alți oameni și pe mine în același timp. Am simțit că una dintre modalitățile de a face acest lucru a fost să îmi construiesc propria marcă personală, de unde și nașterea Programatorului Grumpy.

Desigur, trebuie să aveți niște abilități care să vă sprijineți atunci când începeți să jucați ceea ce este în esență o versiune de desene animate a dvs. online. Nu aș fi strigat atât de tare despre toate aceste lucruri de testare dacă nu știam cum să o fac.

Nu sunt cu adevarat atat de grumpy in viata reala. Bine, poate puțin.


Q Ați publicat recent "Ghidul Programatorului Grumpy pentru a construi aplicații testabile". Ce te-a făcut să dorești să scrie acest titlu specific?

Pe măsură ce am săpat mai adânc în lumea de testare în PHP, am descoperit că ceea ce lipsea era informații despre cum să scrieți codul pe care l-ați putea testa. Există o mulțime de chestii despre cum să scrieți teste, dar acele lucruri nu contează dacă cererea dvs. este o mizerie.

Scrierea unui cod care este decuplat și care vă permite să injectați dependențele în el nu este deosebit de greu, ci doar nevoie de timp și de disciplină. Aceste lucruri sunt în curs de aprovizionare în lumea programării în aceste zile.


Q De ce credeți că TDD-ul, în general, nu a devenit la fel de omniprezent în comunitatea PHP ca în alte limbi, cum ar fi Ruby și Python? Crezi că începe să se schimbe?

"Nu am timp să testez" este un refren vorbit de marea majoritate a programatorilor din lumea PHP.

Programatorii Python sunt atenți la modul în care arată codul lor, iar Zenul Python este scris chiar în interpret.

Rubyistii au fost expusi conceptului de dezvoltare bazat pe teste de la prima lansare a lui Ruby on Rails.

PHP vă permite încă să vă spargeți manipularea cererilor, accesul la baze de date și ieșirea HTML într-un fișier care poate fi implementat în mai multe medii decât celelalte limbi combinate.

Cred că este destul de evident de ce TDD este încă o vânzare foarte greu în PHP.

"Nu am timp să testez" este un refren vorbit de marea majoritate a programatorilor din lumea PHP. Cred că au timp să lucreze nopțile târzii depanandu-și cererile în loc să le prindă mai devreme. Totuși, totul devine mai bun. Fiecare cadru PHP major are suită de teste comprehensive și în fiecare zi aud de la cineva pe Twitter că au început să scrie teste pentru codul PHP. Asta mă face să mă simt bine.


Q După părerea dvs., care este cel mai mare avantaj unic pentru testarea aplicațiilor?

Îmi testez aplicațiile, așa că știu că funcționează corect, în loc să ghicească (sau speră) că funcționează corect.


Q Utilizați exclusiv PHPUnit sau preferați unele dintre alternativele mai mici, cum ar fi Behat?

Folosesc PHPUnit pentru testarea unităților de testare și Behat (împreună cu Mink și diferiți drivere de browser web) pentru testele de acceptare a utilizatorilor.

Există și alte unelte / instrumente de integrare / testare funcțională acolo, dar PHPUnit este instrumentul meu preferat deoarece multe alte instrumente se integrează foarte bine cu acesta.


Aplicațiile de testare Q sunt puțin ciudate, deoarece, în ansamblu, ideea este una simplă. În mod ironic, totuși, începerea cu aceasta necesită o curbă destul de abruptă de învățare. A existat un articol sau un videoclip specific, care deodată te-a făcut să-i "primești" toți acei ani în urmă?

Am încercat în jurul valorii de marginea codului de testare din 2003. Când am văzut SimpleTest și am fost introdus la TDD, ceva în capul meu a făcut clic și am înțeles valoarea acestor practici.

A fi un evanghelist de testare este o slujbă singură, frustrant. Oamenii nu își dau seama de valoarea testelor până când le au în loc și văd cât de ușor a fost să adăugați noi funcționalități și să descoperim că au rupt altceva înainte ca clienții lor să afle.


Q Ați recomanda ca noii veniți în lumea dezvoltării să se scufunde în testare sau să așteptați un timp înainte de a afla cum să faceți acest lucru? Cred că merităm ambele argumente. Poate că, dacă ați furișa "medicamentul în hrana pentru câini" de la început, nu vor avea niciun concept de niciodată nu testarea aplicațiilor!

Cred că puteți învăța pe cineva care utilizează TDD, dar PHP ar putea să nu fie cel mai bun instrument pentru asta. Lipsa unei bune buclă încorporată Read-Evaluate-Print (REPL) înseamnă că sunt necesare mult mai multe lucrări de configurare pentru a crea un mediu pentru ca oamenii să scrie și să execute teste în.

Python și Ruby, care nu s-au născut pe web, fac mult mai ușor să importe module care se ocupă de testare și experimentare pe linia de comandă.


Q Care sunt gandurile tale despre vitriol spre PHP in ultimul timp - referindu-te la diferite posturi virale de blog pe acest subiect? Este justificată?

Fiecare limbă suge în felul lor. Nu-mi place PHP? Nu o folosiți. Nu lucrați în locuri care o folosesc. Utilizați limbile și instrumentele care rezonează cu dvs..

Persoanele pe care le admir în lumea programării folosesc mai multe limbi și mai multe instrumente, deoarece sunt investite în rezolvarea problemelor, fără a-și purta preferințele de limbă ca un tatuaj ieftin.


Q Unde putem merge pentru a ține pasul cu ceea ce este nou de la tine?

Desigur, încurajez oamenii să cumpere o copie a cărții mele, disponibilă la http://grumpy-testing.com. În prezent mă gândesc la o nouă ediție a cărții sau la o carte despre utilizarea PHPUnit și Behat pentru a testa aplicațiile dvs. PHP. Poate voi combina cele două!

Dacă îți place să fii distractiv, îți sugerez să mă urmezi pe Twitter. De asemenea, am blog-ul aici.


Vă mulțumim din nou lui Chris pentru că a vorbit cu noi. Deci, acum sa terminat cu tine, John Q. Reader. Care sunt gandurile tale despre testarea? O cerință pentru dezvoltarea aplicațiilor web sau o pierdere a timpului prea mare?

Cod