Jeg har nylig hatt sjansen til å fange opp med Chris Hartjes, eller, som noen av dere kanskje kjenner ham, "" The Grumpy Programmer. "Fordi han nylig lanserte en ny eBok om testdrevet utvikling i PHP, ønsket jeg å hente sin hjerne litt!
Jeg er egentlig ikke så gretten i det virkelige livet. Ok, kanskje litt.
Mens jeg er ganske gretten når jeg sitter foran en datakoding, er "The Grumpy Programmerer" mer av et merke; et markedsføringsverktøy mer enn noe annet. Da jeg fikk erfaring som programmerer, ønsket jeg å dele mine ideer for å hjelpe andre mennesker og meg selv samtidig. Jeg følte en av måtene å få det til å skje var å bygge opp mitt eget personlige merke, dermed fødselen til The Grumpy Programmer.
Selvfølgelig må du ha noen ferdigheter til å ta deg selv tilbake når du begynner å spille hva som egentlig er en tegneserieversjon av deg selv online. Jeg ville ikke rope så høyt om alt dette teste ting hvis jeg egentlig ikke visste hvordan jeg skulle gjøre det.
Jeg er egentlig ikke så gretten i det virkelige livet. Ok, kanskje litt.
Da jeg gravd dypere inn i testningsverdenen i PHP, oppdaget jeg at det som manglet, var informasjon om hvordan man faktisk skrev kode som du kunne teste. Det er mange ting der ute på hvordan du skriver tester, men det betyr ikke noe om søknaden din er et rot.
Skrive kode som er koblet fra og lar deg injisere avhengigheter i det er ikke spesielt vanskelig, det tar bare tid og disiplin. Disse tingene er mangelvare i programmeringsverdenen disse dager.
"Jeg har ikke tid til å teste" er en refrain som snakkes av de aller fleste programmerere i PHP-verdenen.
Python programmerere bryr seg om hvordan koden ser ut og Zen of Python er skrevet rett inn i tolken.
Rubyists har blitt utsatt for begrepet testdrevet utvikling siden den første utgivelsen av Ruby on Rails.
PHP lar deg fortsatt kaste forespørselshåndtering, databasetilgang og HTML-utgang til en fil som kan distribueres i flere miljøer enn alle andre språk kombinert.
Jeg synes det er ganske tydelig hvorfor TDD fortsatt er vanskelig å selge i PHP.
"Jeg har ikke tid til å teste" er en refrain som snakkes av de aller fleste programmerere i PHP-verdenen. Jeg antar at de har tid til å jobbe sent på kvelden ved å feilsøke deres applikasjoner i stedet for å fange disse problemene tidligere. Det blir imidlertid bedre. Hvert stort PHP-rammeverk har omfattende testpakker, og hver dag hører jeg fra noen på Twitter at de har begynt å skrive tester for deres PHP-kode. Det får meg til å føle meg bra.
Jeg tester mine applikasjoner, slik at jeg vet at de fungerer riktig i stedet for å gjette (eller håper) at de fungerer riktig.
Jeg bruker PHPUnit til å skrive enhetstester og Behat (sammen med Mink og forskjellige nettleserdrivere) for brukernes aksepttest.
Det finnes noen andre enheter / integrering / funksjonelle testverktøy der ute, men PHPUnit er mitt foretrukne verktøy fordi mange andre verktøy integrerer seg med det veldig bra.
Jeg har spilt rundt kantene til testkoden siden 2003. Da jeg så SimpleTest og ble introdusert til TDD, klikkte noe i hodet mitt og jeg forsto verdien av disse praksisen.
Å være en test evangelist er en ensom, frustrerende jobb. Folk innser ikke verdien av testene før de har dem på plass og ser hvor lett det var å legge til ny funksjonalitet og oppdage at de brøt noe annet før kundene deres fant ut.
Jeg tror at du kan lære noen programmering ved hjelp av TDD, men PHP er kanskje ikke det beste verktøyet for det. Mangelen på en god innebygd Read-Evaluate-Print Loop (REPL) betyr at det er mye mer oppsettarbeid som kreves for å skape et miljø for at folk kan skrive og kjøre tester i.
Python og Ruby, som ikke har blitt født på nettet, gjør det mye enklere å importere moduler som håndterer testing og eksperiment på kommandolinjen.
Hvert språk suger på sin egen måte. Liker ikke PHP? Ikke bruk den. Ikke bruk på steder som bruker den. Bruk språk og verktøy som resonerer med deg.
De menneskene jeg beundrer i programmeringsverdenen bruker flere språk og flere verktøy som de er investert i å løse problemer, og bruker ikke deres språkvalg som en billig tatovering.
Selvfølgelig oppfordrer jeg folk til å kjøpe en kopi av boken min, som er tilgjengelig på http://grumpy-testing.com. Jeg vurderer for tiden en helt ny andre utgave av boka, eller en bok om hvordan du bruker PHPUnit og Behat for å teste dine PHP-applikasjoner. Kanskje jeg vil kombinere de to!
Hvis du liker å bli underholdt, foreslår jeg at du følger meg på Twitter. Også, jeg blogger her.
Takk igjen til Chris for å chatte med oss. Så nå er det overfor deg, John Q. Reader. Hva er dine tanker om testing? Et krav til webapplikasjonsutvikling, eller en overhypet tidsavbrudd?