J'ai récemment eu l'occasion de rattraper Chris Hartjes ou, comme certains d'entre vous le connaissent peut-être, "" Le programmeur grincheux. "Puisqu'il a récemment publié un nouvel ebook sur le développement piloté par les tests en PHP, je voulais choisir son cerveau. un peu!
Je ne suis pas si grincheux dans la vie réelle. D'accord, peut-être un peu.
Bien que je sois assez grincheux lorsque je suis assis devant un ordinateur codant, "The Grumpy Programmer" est plus une marque; un outil de marketing plus que toute autre chose. En acquérant de l'expérience en tant que programmeur, je voulais partager mes idées pour aider les autres et moi-même en même temps. Je pensais que l'un des moyens d'y parvenir consistait à développer ma propre marque personnelle, d'où la naissance de The Grumpy Programmer..
Bien sûr, vous devez avoir certaines compétences pour vous soutenir lorsque vous commencez à jouer en ligne ce qui est essentiellement une version bande dessinée de vous-même. Je ne crierais pas si fort à propos de tous ces tests si je ne savais pas comment le faire..
Je ne suis pas si grincheux dans la vie réelle. D'accord, peut-être un peu.
En approfondissant mes recherches sur le monde des tests en PHP, j'ai découvert que ce qui manquait, c'était des informations sur la manière d'écrire du code que vous pouviez tester. Il y a beaucoup de choses sur la façon d'écrire des tests, mais peu importe si votre application est en désordre..
Écrire un code découplé et qui vous permet d'injecter des dépendances n'est pas particulièrement difficile, il faut juste du temps et de la discipline. Ces choses sont rares dans le monde de la programmation ces jours-ci.
"Je n'ai pas le temps de tester" est un refrain parlé par la grande majorité des programmeurs du monde PHP.
Les programmeurs Python se soucient de l'apparence de leur code et le zen de Python est écrit directement dans l'interpréteur.
Les rubyists ont été exposés au concept de développement piloté par les tests depuis la première version de Ruby on Rails.
PHP vous permet toujours de regrouper vos requêtes, votre accès à la base de données et votre sortie HTML dans un fichier pouvant être déployé dans plus d'environnements que toutes les autres langues combinées..
Je pense que c'est assez évident pourquoi TDD est toujours difficile à vendre en PHP.
"Je n'ai pas le temps de tester" est un refrain parlé par la grande majorité des programmeurs du monde PHP. Je suppose qu’ils ont le temps de travailler tard le soir à déboguer leurs applications au lieu de résoudre ces problèmes plus tôt. Cela va mieux, cependant. Chaque infrastructure PHP majeure dispose de suites de tests complètes et chaque jour, quelqu'un de Twitter m'informe qu'il a commencé à écrire des tests pour son code PHP. Ça me fait du bien.
Je teste mes applications pour que je sache qu'elles fonctionnent correctement au lieu de deviner (ou d'espérer) qu'elles fonctionnent correctement.
J'utilise PHPUnit pour l'écriture de tests unitaires et Behat (avec Mink et divers pilotes de navigateur Web) pour les tests d'acceptation utilisateur.
Il existe d’autres outils de tests unitaires / d’intégration / fonctionnels, mais PHPUnit est mon outil préféré, car de nombreux autres outils s’y intègrent très bien..
Je fouille les limites du code de test depuis 2003. Quand j'ai vu SimpleTest et que j'ai été initié à TDD, quelque chose dans ma tête a cliqué et j'ai compris la valeur de ces pratiques..
Être évangéliste test est un travail solitaire et frustrant. Les utilisateurs ne réalisent pas la valeur des tests tant qu’ils ne les ont pas mis en place et ne constatent pas à quel point il était facile d’ajouter de nouvelles fonctionnalités et de découvrir qu’ils avaient cassé autre chose avant que leurs clients ne le découvrent..
Je pense que vous pouvez enseigner à quelqu'un la programmation utilisant TDD, mais PHP n'est peut-être pas le meilleur outil pour cela. L'absence d'une bonne boucle intégrée de lecture-évaluation-impression (REPL) signifie que beaucoup plus de travail de configuration est nécessaire pour créer un environnement dans lequel les personnes peuvent écrire et exécuter des tests..
Python et Ruby n'étant pas nés sur le Web, il est beaucoup plus facile d'importer des modules qui gèrent les tests et les expériences en ligne de commande..
Chaque langue est nulle à sa manière. Vous n'aimez pas PHP? Ne l'utilisez pas. Ne travaillez pas dans des endroits qui l'utilisent. Utilisez des langages et des outils qui résonnent avec vous.
Les personnes que j'admire dans le monde de la programmation utilisent plusieurs langues et plusieurs outils, car elles sont investies dans la résolution de problèmes et ne portent pas leur préférence de langue comme un tatouage pas cher..
Bien sûr, j'encourage les gens à acheter une copie de mon livre, disponible sur http://grumpy-testing.com. J'envisage actuellement une toute nouvelle deuxième édition du livre, ou un livre sur l'utilisation de PHPUnit et Behat pour tester vos applications PHP. Peut-être que je vais combiner les deux!
Si vous aimez vous divertir, je vous suggère de me suivre sur Twitter. Aussi, je blogue ici.
Merci encore à Chris d'avoir discuté avec nous. Alors, à vous maintenant, John Q. Reader. Quelles sont vos pensées sur les tests? Une exigence pour le développement d'applications Web ou un gaspillage de temps excessif?