10 outils de test PHP pour les plugins WordPress
Publié: 2022-08-05Aucun logiciel n'est exempt de bugs. C'est un axiome qui s'applique à tous les langages de programmation et à toutes les applications.
Lorsque ces bogues sont déployés sur votre site Web en production, vous pouvez subir des conséquences néfastes de gravité variable. Voici quelques exemples, allant de gênants à économiquement dommageables :
- Léger : un utilisateur ne peut pas cliquer sur un lien brisé.
- Grave : Le bouton « Envoyer » d'un formulaire de contact ne fonctionne pas, ce que l'utilisateur ne découvre qu'après avoir composé son message.
- Grave : une passerelle de paiement mal configurée, empêchant les utilisateurs d'acheter des produits dans votre boutique en ligne, abandonnant ainsi le site.
Aucun outil n'est suffisant pour gérer tous les aspects du test d'une application sous tous les angles possibles. En effet, en plus de trouver des bugs, il est indispensable d'exécuter des tests supplémentaires pour valider d'autres fonctions de l'application, telles que :
- Accessibilité et convivialité
- Performances acceptables
- Trafic et manutention de charges
Dans cet article, nous passerons en revue 10 outils créés par la communauté open source qui peuvent aider à constituer une pile pour tester le code PHP dans les plugins WordPress. Certains de ces outils ont été spécifiquement conçus pour tester le code PHP ; d'autres sont destinés à tester le code WordPress ; et quelques autres outils ont été créés pour gérer certaines fonctionnalités génériques utiles pour les tests.
1. Dev Kinsta
DevKinsta est une suite de développement local pour les sites WordPress. En fournissant simplement quelques détails de base, une instance locale d'un site WordPress est installée immédiatement, et elle est livrée avec plusieurs outils de développement utiles comme une boîte de réception de courrier électronique, un gestionnaire de base de données et une journalisation pour un dépannage plus facile.
DevKinsta est normalement utilisé par les développeurs et les concepteurs lors de la création de leurs thèmes et plugins WordPress. Mais il peut également être utilisé comme serveur Web local pour exécuter des tests d'intégration et de fonctionnalité. Ceci est accompli en tandem avec un outil HTTP qui vous aide à vérifier que le contenu et les en-têtes de votre réponse sont corrects.
Les principales fonctionnalités de DevKinsta sont :
- Créez facilement un nouvel environnement WordPress et supprimez-le une fois qu'il n'est plus nécessaire
- Permet de tester toute version prise en charge de PHP et WordPress, et toute combinaison de celles-ci
- S'intègre de manière transparente à MyKinsta où les utilisateurs peuvent créer une sauvegarde externe de leurs sites et données
2. PHPUnit
PHPUnit est un framework de test orienté programmeur pour PHP. C'est le framework le plus populaire pour exécuter des tests unitaires dans du code PHP, dans le but de valider des unités individuelles de code source.
Les tests PHPUnit permettent aux développeurs de trouver les problèmes le plus tôt possible dans le cycle de développement, aidant à s'assurer qu'aucune régression de code n'a été introduite (c'est-à-dire que les modifications apportées à un morceau de code n'ont pas causé de problèmes ailleurs).
Les principales fonctionnalités de PHPUnit sont :
- Test de nouvelles fonctionnalités
- Validation du code nouvellement refactorisé
- Peut être entièrement automatisé et exécuté dans le cadre du processus d'intégration continue de votre choix
- Débogage
- Documentation automatique sur l'utilisation prévue grâce à l'invocation des fonctionnalités et aux contraintes
- Permet l'approche Test-Driven Development (TDD) dans laquelle les développeurs créent d'abord les tests, puis les fonctionnalités
3. Singe Cerveau
Brain Monkey est un utilitaire de test pour PHP et WordPress. Il fournit des outils indépendants du framework qui vous permettent de redéfinir les méthodes PHP et de tester le comportement de n'importe quelle application PHP. Il fournit également des outils spécifiques pour tester le code WordPress.
Les principales fonctionnalités de Brain Monkey sont :
- Permet aux tests unitaires d'interagir avec des bibliothèques externes non chargées
- Permet l'invocation des fonctions WordPress sans avoir besoin de charger l'environnement WordPress
- Peut affirmer que les fonctions WordPress (telles que
add_filter
oudo_action
) invoquent la fonctionnalité comme prévu
4. Faucheur de cerveau
Brain Faker utilise Faker (une bibliothèque PHP populaire pour générer de fausses données) et Brain Monkey pour fournir une génération facile de faux objets WordPress et des fonctions associées que vous pouvez tester, notamment :
-
WP_Post
et fonctions liées fictives telles queget_post
etget_post_field
-
WP_User
et fonctions liées fictives telles queget_userdata
,get_user_by
,user_can
, etc. -
WP_Term
et fonctions liées fictives telles queget_term
etget_term_by
-
WP_Comment
-
WP_Site
et fonctions liées fictives telles queget_site
-
WP_Post_Type
et fonctions simulées telles queget_post_type_object
etpost_type_exists
-
WP_Taxonomy
et fonctions liées fictives telles queget_taxonomy
ettaxonomy_exists
-
WP_Error
Les principales fonctionnalités de Brain Faker sont :
- Injecte des données WordPress fausses mais réalistes dans le test unitaire - l'accès à la date modifiée d'un faux message se comportera comme une date (par exemple
2022-04-17T13:06:58+00:00
), le nom d'un utilisateur conviendra (par exemple"John Smith"
), une fausse instance de publication est créée par une fausse instance d'utilisateur, et ainsi de suite - Les fausses données peuvent être pré-fournies ou générées aléatoirement
- Extensible — les développeurs peuvent se moquer des classes et des fonctions de leurs propres plugins WordPress
5. Moquerie
Mockery est un framework d'objets factices PHP simple mais flexible destiné à être utilisé avec PHPUnit, PHPSpec ou tout autre framework de test unitaire. Il offre un cadre de test double capable de définir toutes les opérations et interactions d'objets possibles à l'aide d'un langage spécifique de domaine (DSL) lisible par l'homme.
Les principales fonctionnalités de Mockery sont :
- Permet la génération flexible d'objets fictifs et de stubs (qui fournissent des réponses prédéfinies prédéfinies à des appels spécifiques effectués pendant les tests)
- Améliore les capacités d'isolation de test de PHPUnit
- API flexible pour exprimer des attentes simulées, imitant autant que possible une description en langage naturel (par exemple
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - Tests unitaires utilisant des objets fictifs en mémoire pour éviter d'avoir à accéder à des systèmes plus lents (tels que des bases de données, des systèmes de fichiers ou des services externes)
- Peut se moquer des comportements déterministes et non déterministes
6. Outil d'exportation natif WordPress
L'outil d'exportation natif de WordPress télécharge les données WordPress du site sur votre appareil sous forme de fichier XML, y compris les publications, les pages, les types de publication personnalisés, les commentaires, les champs personnalisés, les catégories, les balises, les taxonomies personnalisées, les utilisateurs et les médias. Le fichier XML présente un format personnalisé (appelé fichier WordPress eXtended RSS ou WXR) qui peut être importé dans n'importe quel site WordPress.
Cet outil n'est pas spécifiquement conçu pour les tests. Cependant, son utilité vient de la possibilité de créer des instantanés de la base de données WordPress contenant un ensemble de données approprié, qui peut ensuite être utilisé pour les tests. Cela signifie que le site WordPress en production, qui contient des données réelles, peut être exporté et importé dans une instance de développement ou de préproduction pour tester de nouvelles fonctionnalités.
Les principales fonctionnalités de l'outil d'exportation WordPress sont :
- Création de données de test à l'aide d'un site WordPress réel
- Fichier d'exportation partageable de toute la base de données
- Utile à la fois pour l'intégration et les tests unitaires
7. Buvez
Guzzle est un client HTTP PHP qui facilite l'envoi de requêtes HTTP et l'intégration aux services Web.
Guzzle est un outil générique, les tests ne sont donc qu'un de ses cas d'utilisation possibles. Avec un serveur Web local tel que DevKinsta, Guzzle permet d'exécuter des tests d'intégration : vous pouvez utiliser Guzzle pour envoyer une requête HTTP contre le serveur Web de développement, puis transmettre la réponse à un test unitaire dans PHPUnit qui vérifie le contenu et les en-têtes. sont définis comme prévu.
Les principales fonctionnalités de Guzzle sont :
- Satisfait à la recommandation standard PHP "PSR-7" (pour les interfaces de message HTTP), excluant le verrouillage du fournisseur
- Simple et rapide
- Les tests sont exécutés sur un site WordPress réel, ce qui augmente la fiabilité
- Peut être exécuté depuis PHPUnit pour plus de facilité et de rapidité
- Les tests d'intégration peuvent être automatisés et ajoutés au processus d'intégration continue
8. WP-CLI
WP-CLI est l'interface de ligne de commande pour WordPress. Avec lui, vous pouvez mettre à jour les plugins, configurer des installations multisites et bien plus encore, sans utiliser de navigateur Web.
WP-CLI n'est pas spécifiquement un outil de test, mais le test fait partie de ses nombreux cas d'utilisation. Par exemple, après avoir lancé un nouveau serveur Web de développement, vous pouvez exécuter un script bash contenant des commandes WP-CLI pour importer des données de test sur le site WordPress, créer les utilisateurs avec les rôles et capacités appropriés, installer les plugins tiers nécessaires et autres tâches de ce type.
Comme le script avec les commandes WP-CLI peut être stocké dans votre référentiel Git, le processus d'exécution des tests d'intégration peut ensuite être automatisé et intégré dans votre processus d'intégration continue :
- Utilisez l'outil d'exportation WordPress pour générer des données de test réelles et stockez-les dans le référentiel Git.
- Utilisez DevKinsta pour lancer un serveur Web avec une nouvelle instance WordPress.
- Utilisez WP-CLI pour importer les données de test dans le site WordPress (DevKinsta peut être exploité via WP-CLI).
- Créez un test unitaire dans PHPUnit en demandant à Guzzle d'exécuter une requête HTTP sur le serveur Web pour vérifier le contenu et les en-têtes de votre réponse.
Les principales fonctionnalités de WP-CLI sont :
- Permet l'exécution à distance de commandes sur une instance WordPress via une interface de ligne de commande
- Extensible avec d'autres outils
- Améliore les capacités de la pile de test
- Permet une automatisation complète du processus
9. XDebug
XDebug est une extension pour PHP qui fournit une gamme de fonctionnalités pour améliorer l'expérience de développement PHP, y compris le débogage, les améliorations du rapport d'erreurs PHP, le traçage, le profilage et l'analyse de la couverture du code.
XDebug ne vous aidera pas à tester votre code, mais vous aidera à trouver où se trouve le bogue. Combiner XDebug avec PHPUnit est particulièrement efficace : si un test échoue et que vous ne trouvez pas la source du problème, vous pouvez utiliser XDebug pour ajouter des points d'arrêt dans le code du test unitaire. Lors de la réexécution du test unitaire, le script PHP sera mis en pause à chacun de ces points d'arrêt, vous permettant d'inspecter l'état actuel de l'exécution (pile d'appels, valeurs de propriété et d'objet, etc.) et de tenter de découvrir ce qui ne va pas.
Les principales fonctionnalités de XDebug sont :
- Comprend des intégrations pour les éditeurs PHP populaires, y compris VS Code, PHPStorm et Sublime
- Profils combien de temps est passé dans chaque appel de fonction et combien de mémoire il consomme
- Beaucoup plus puissant que d'utiliser simplement
var_dump
pour déboguer le code - Permet la modification des valeurs des variables à la volée lors de la pause sur les points d'arrêt
10. PHP Stan
PHPStan est un outil d'analyse statique pour PHP, conçu pour trouver des bogues dans le code avant même d'écrire des tests.
L'objectif de PHPStan est de réduire le nombre de tests que les développeurs doivent écrire. Cet outil est le premier exécuté dans la pile de tests, capturant de manière préventive autant de bogues que possible. Seuls les bugs qui ne peuvent pas être déduits de l'analyse statique (par exemple ceux avec une logique défectueuse) doivent être validés via des tests unitaires.
PHPStan fonctionne en analysant l'ensemble de la base de code et en recherchant les incompatibilités. Par exemple, la valeur de réponse d'une fonction qui renvoie un flottant ne peut pas être affectée à un paramètre de fonction de type entier. Chaque fois que le code contient une telle occurrence, c'est un bogue potentiel, et PHPStan vous en avertira pendant la phase de développement, juste au moment où vous écrivez le code de l'application.
Les principales fonctionnalités de PHPStan sont :
- Automatisation et intégration dans votre processus d'intégration continue existant
- Localise de nombreux bogues délicats, tels que les incompatibilités de type
- Scanne l'ensemble de la base de code, trouvant des bogues dans des portions de code rarement exécutées
- Organisé en niveaux de complexité croissante pour permettre une intégration progressive
- Comprend des extensions pour les frameworks PHP et les CMS les plus populaires, notamment Symfony, Laravel, Doctrine, Nette et WordPress
Sommaire
Le coût de voir des bogues passer inaperçus dans votre application en production peut être préjudiciable à votre réputation et à vos revenus, vous devez donc tenter de les éradiquer avant qu'ils n'affectent vos utilisateurs.
Dans les applications complexes, il est presque impossible d'être sûr à 100 % qu'il ne contiendra aucun bogue. Pour cette raison, vous devez mettre en place un processus pour rechercher et supprimer autant de bogues que possible au cours du cycle de développement initial.
Avec une boîte à outils de test bien conçue, vous pouvez réduire considérablement les risques que votre application se comporte de manière inattendue. La communauté open source a créé et mis à disposition de nombreux outils pour tester les différents aspects d'une application, ce que vous pouvez — et devriez ! - utiliser pour créer une pile de tests complète.
Dans cet article, nous avons passé en revue 10 outils pour vous aider à atteindre vos objectifs de test de code PHP dans un plugin WordPress.
Lequel de ces outils avez-vous utilisé pour votre dernier projet ? Faites-nous savoir ce que vous avez construit avec dans la section commentaires ci-dessous!