9 meilleurs frameworks de tests automatisés pour PHP
Avez-vous déjà passé de longues heures à déboguer votre code PHP? Pour la plupart des programmeurs, ce n'est probablement pas le défi le plus fascinant, mais il existe une solution qui peut nous aider à raccourcir cette tâche fastidieuse.. Test automatisé peut considérablement améliorer le flux de travail du développement PHP en permettre aux tests pré-écrits de piloter le processus de développement.
Dans ce post nous allons essayer de comprendre pourquoi les tests automatisés sont si cool, comment ça marche et quels sont les meilleurs frameworks de test vous pouvez commencer avec.
Pourquoi les tests sont importants
Les développeurs PHP novices ont tendance à ne pas écrire de tests pour leur code. La plupart d'entre nous ont commencé leur carrière en testant une à une les nouvelles fonctionnalités que nous venons d'écrire dans la fenêtre du navigateur. Lorsque quelque chose n'allait pas, nous ne savions pas quoi faire..
Écrire des tests pour notre code peut vous faire économiser un temps précieux de débogage et des heures de maux de tête. Lorsque du code non testé entrera en production, les critiques que nous obtiendrons ne seront probablement pas aussi agréables. Alors, que pouvons-nous faire?
La meilleure idée est probablement de établir un flux de travail de test productif dans lequel nous devons écrire notre propre code de test qui vérifie si notre code d'application fonctionne correctement.
Le truc c'est que le code de test doit être écrit avant le code de l'application. De cette façon, nous pouvons dès le début nous assurer que le code que nous écrivons fonctionne correctement. Le code de test ira dans des fichiers séparés. Si par la suite nous rencontrons des erreurs dans notre application PHP, nous n'avons rien d'autre à faire: il suffit d'exécuter nos tests qui, espérons-le, donnez-nous des indications sur les problèmes.
Outre le gain de temps et la préparation adéquate de notre application pour la production, les tests présentent de nombreux autres avantages, tels que:
- code plus maintenable
- refactoring facilité
- moins de problèmes de sécurité
- base de code moins gonflée (adapter le code de l'application au code de test pré-écrit nous fera oublier les parties superflues)
- meilleure performance
Qu'est-ce qu'un test automatisé??
Bien sûr, nous pouvons écrire nos tests manuellement, mais après un certain temps, cela peut être fastidieux et prendre beaucoup de temps avec de nombreuses tâches répétitives. Les tests manuels peuvent être remplacés par des tests automatisés dans lesquels nous utilisons des logiciels spécifiques qui font le travail fastidieux pour nous, et nous pouvons passer plus de temps à créer la logique du code de test..
Heureusement, PHP est un langage de programmation très populaire. Il existe donc de nombreux frameworks de tests automatisés parmi lesquels choisir..
Développement piloté par les tests (TDD) vs développement dirigé par les comportements (BDD)
Le développement piloté par les tests (TDD) et le développement piloté par le comportement (BDD) sont les deux principales approches utilisées par les frameworks de tests automatisés. Dans les deux cas, le processus de développement est piloté par des tests, ce qui signifie que les tests sont écrits avant le code de l'application..
La principale différence entre les tests basés sur les tests et les tests basés sur le comportement réside dans la syntaxe du code de test: TDD utilise le code PHP approprié dans les fichiers de test, tandis que BDD utilise des phrases lisibles par l'homme décrivant le comportement de chaque caractéristique et pouvant être compris par les parties prenantes non techniques.
Un test TDD ressemble à ceci dans l'éditeur de code, il s'agit simplement d'un code PHP standard orienté objet:
Un test BDD est similaire à ceci, les non-programmeurs peuvent aussi le comprendre:
10 cadres de tests automatisés PHP
Dans cet esprit, examinons 10 puissants frameworks de tests automatisés. Pour PHP, vous pouvez utiliser.
1. PHPUnit
PHPUnit est le framework de test le plus connu pour l'écriture de tests unitaires pour les applications PHP. Les tests unitaires prennent de petites portions de code appelées unités et les testent une par une. Avec l’aide de PHPUnit, nous pouvons mener un développement basé sur des tests..
Il peut être utilisé via le ligne de commande, et il nous fournit un classe pratique TestCase que nous pouvons étendre selon nos besoins. PHPUnit permet également aux développeurs d'utiliser méthodes d'assertion pré-écrites pour affirmer que l'application se comporte d'une certaine manière.
2. Codeception
Codeception nous permet non seulement d’écrire des tests unitaires, mais également des tests fonctionnels et d’acceptation. Ces deux derniers testent l’application PHP dans son ensemble avec toutes les fonctionnalités liées ensemble, et non comme des unités. Codeception nous permet d'activer et de configurer différents modules en fonction de nos besoins de développement.
Il est intégré à de nombreux frameworks de développement PHP tels que Symfony2, Laravel4, Yii, Phalcon et le framework Zend. Cela signifie que nous pouvons utiliser ensemble un framework de test d'automatisation PHP et un framework de développement PHP pour établir un flux de travail de développement extrêmement efficace..
3. Behat
Behat est un framework de test PHP populaire basé sur le comportement. Les tests que nous pouvons écrire avec Behat semblent plutôt comme des histoires que du code. Behat utilise le sous-type StoryBDD du développement basé sur le comportement (l'autre sous-type est SpecBDD).
Le framework a été inspiré par le projet Cucumber, un framework de test du langage de programmation Ruby..
4. PHPSpec
PHPSpec suit également l’approche de test axée sur le comportement, mais son autre sous-type appelé SpecBDD. Avec PHPSpec, nous devons écrivez d'abord les spécifications décrivant le comportement du code de l'application. Il a également été inspiré par un framework de test Ruby appelé RSpec.
5. Storyplayer
Storyplayer est un framework de test complet qui permet de: écrire des tests de bout en bout pour une plate-forme entière. Storyplayer a un support pour création et destruction d'environnements de test à la demande. Il suit l'approche de test TDD et nous permet d'écrire des tests fonctionnels permettant de vérifier une application dans son ensemble..
6. péridot
Peridot est un framework de test léger et extensible pour PHP. Il comporte un architecture événementielle qui permet aux testeurs de facilement personnaliser le framework via des plugins et des reporters.
Péridot utilise le décris le syntaxe pour établir un langage de test clair et lisible décrivant clairement le comportement de notre code d'application.
7. Atoum
Atoum est un framework de test PHP intuitif et moderne qui nous permet d'exécuter des tests unitaires. Il simplifie le développement de tests et, comme il s’agit d’un framework jeune, il utilise certaines nouvelles fonctionnalités introduites dans PHP 5.3 (il peutne pas être utilisé avec les anciennes versions de PHP) pour nous fournir un processus de test rapide et facile à comprendre.
Atoum assure une haut niveau de sécurité pendant l'exécution du test, car il isole chaque méthode de test dans son propre processus PHP.
8. Kahlan
Kahlan est un framework de test BDD complet qui permet d’écrire des tests unitaires à l’aide de la décris le syntaxe. Il adopte le principe de conception KISS (Keep It Simple, Stupid). Kahlan nécessite au moins PHP 5.5.
Il a une petite base de code, on dit qu'il est environ 10 fois plus petit que PHPUnit, et il a des tas de fonctionnalités qui nous fournissent un flux de travail de test extensible et personnalisable..
9. sélénium
Selenium est un framework de test sophistiqué qui automatise les navigateurs. Cela signifie qu'il est possible d'écrire des tests d'acceptation utilisateur qui examiner l'ensemble de l'application dans son ensemble.
Selenium est un outil robuste doté de sa propre API WebDriver, qui permet de gérer un navigateur de manière native. bien qu'un utilisateur réel l'utilise soit localement, soit sur une machine distante. Selenium est un excellent outil pour tester des applications Web plus matures..
Dernières pensées
Les frameworks de tests automatisés nous permettent d'écrire du code PHP de meilleure qualité, et en raison de la popularité du langage, nous avons beaucoup de choix, nous pouvons donc choisir celui qui répond le mieux à nos besoins de développement..
Il y a cependant une chose importante que nous devons toujours garder à l'esprit. Les tests automatisés peuvent être puissants, mais ils peuvent ne remplace jamais les tests bêta - tests effectués par de vrais humains qui seront les futurs utilisateurs de l'application.