Ik heb onlangs de kans gehad om Chris Hartjes bij te praten, of, zoals sommigen van jullie hem kennen, "" The Grumpy Programmer. "Omdat hij onlangs een nieuw e-boek over testgedreven ontwikkeling in PHP uitbracht, wilde ik zijn hersens uitkiezen een beetje!
Ik ben niet echt zo knorrig in het echte leven. Oké, misschien een beetje.
Hoewel ik behoorlijk chagrijnig ben als ik achter een computercodering zit, is 'The Grumpy Programmer' meer een merk; een marketingtool meer dan iets anders. Toen ik ervaring opdeed als programmeur, wilde ik mijn ideeën delen om andere mensen en mezelf tegelijkertijd te helpen. Ik voelde dat een van de manieren om dat te realiseren was om mijn eigen merk op te bouwen, vandaar de geboorte van The Grumpy Programmer.
Natuurlijk moet je een aantal vaardigheden hebben om een back-up te maken wanneer je online begint te spelen wat eigenlijk een cartoonversie van jezelf is. Ik zou niet zo hard over al dit testwerk schreeuwen als ik niet echt wist hoe ik het moest doen.
Ik ben niet echt zo knorrig in het echte leven. Oké, misschien een beetje.
Naarmate ik dieper in de wereld van testen in PHP stapte, ontdekte ik dat er informatie ontbrak over het feitelijk schrijven van code die je kon testen. Er zijn veel dingen te doen over het schrijven van tests, maar dat maakt niet uit of je toepassing een puinhoop is.
Het schrijven van code die is ontkoppeld en waarmee je afhankelijkheden kunt injecteren, is niet bijzonder moeilijk, het kost alleen tijd en discipline. Die dingen zijn tegenwoordig schaars in de programmeerwereld.
"Ik heb geen tijd om te testen" is een refrein dat gesproken wordt door de overgrote meerderheid van programmeurs in de PHP-wereld.
Python-programmeurs geven om hoe hun code eruitziet en de Zen van Python wordt rechtstreeks in de tolk geschreven.
Rubyisten zijn sinds de eerste release van Ruby on Rails blootgesteld aan het concept van testgestuurde ontwikkeling.
PHP laat je nog steeds je request handling, databasetoegang en HTML-output in één bestand vernietigen dat kan worden ingezet in meer omgevingen dan alle andere talen gecombineerd.
Ik denk dat het vrij duidelijk is waarom TDD nog steeds een harde verkoop is in PHP.
"Ik heb geen tijd om te testen" is een refrein dat gesproken wordt door de overgrote meerderheid van programmeurs in de PHP-wereld. Ik denk dat ze de tijd hebben om 's avonds laat te werken aan het debuggen van hun applicaties in plaats van die problemen eerder te vangen. Het wordt echter beter. Elk belangrijk PHP-framework heeft uitgebreide testsuites en elke dag hoor ik van iemand op Twitter dat ze zijn begonnen met het schrijven van tests voor hun PHP-code. Dat geeft me een goed gevoel.
Ik test mijn applicaties zodat ik weet dat ze correct werken in plaats van te raden (of hopen) dat ze correct werken.
Ik gebruik PHPUnit voor het schrijven van eenheidstests en Behat (samen met Mink en verschillende webbrowserstuurprogramma's) voor gebruikersacceptatietests.
Er zijn een aantal andere eenheid / integratie / functionele testtools die er zijn, maar PHPUnit is mijn favoriete tool omdat zoveel andere tools er heel goed mee integreren.
Ik ben al sinds 2003 bezig met het testen van code. Toen ik SimpleTest zag en werd voorgesteld aan TDD, klikte er iets in mijn hoofd en ik begreep de waarde van deze praktijken..
Testende evangelist zijn, is een eenzame, frustrerende baan. Mensen realiseren zich pas de waarde van tests totdat ze deze hebben geïnstalleerd en zien hoe gemakkelijk het was om wat nieuwe functionaliteit toe te voegen en te ontdekken dat ze iets anders braken voordat hun klanten erachter kwamen.
Ik denk dat je iemand kunt leren programmeren met TDD, maar PHP is misschien niet de beste tool daarvoor. Het ontbreken van een goede ingebouwde Read-Evaluate-Print Loop (REPL) betekent dat er veel meer instellingswerk vereist is om een omgeving te creëren waarin mensen kunnen schrijven en testen uitvoeren in.
Python en Ruby, niet geboren op het web, maken het een stuk eenvoudiger om modules te importeren die testen aankunnen en experimenteren op de opdrachtregel.
Elke taal zuigt op zijn eigen manier. Houd je niet van PHP? Gebruik het niet. Werk niet op plaatsen die het gebruiken. Gebruik talen en hulpmiddelen die bij u resoneren.
De mensen die ik bewonder in de wereld van programmeren gebruiken meerdere talen en meerdere tools omdat ze worden geïnvesteerd in het oplossen van problemen, niet het dragen van hun taalvoorkeur als een goedkope tatoeage.
Natuurlijk moedig ik mensen aan om een exemplaar van mijn boek te kopen, dat beschikbaar is op http://grumpy-testing.com. Ik overweeg momenteel een volledig nieuwe tweede editie van het boek, of een boek over het gebruik van PHPUnit en Behat om je PHP-applicaties te testen. Misschien zal ik de twee combineren!
Als je het leuk vindt om vermaakt te worden, stel ik voor dat je me volgt op Twitter. Ook blog ik hier.
Nogmaals bedankt aan Chris voor het chatten met ons. Dus nu is het voor jou, John Q. Reader. Wat denk je over testen? Een vereiste voor de ontwikkeling van webtoepassingen of een over-hyped tijdverspiller?