Comment faire des tests fonctionnels ?

Développer une application web de manière itérative sur de longues années et en gardant une compatibilité ascendante maximum n'est pas chose aisée sans faire de régression. Je me demandais déjà il y a quelques années comment ne pas faire de régressions fonctionnelles. Sans forcément faire du développement piloté par les tests (ce qui me semble pourtant toujours aussi intéressant), le choix d'un outil n'est pas chose aisé.

Pendant longtemps, j'ai utilisé symfony (dans sa première mouture) qui venait avec ses outils "maison" permettant de faire des tests unitaires mais aussi des tests fonctionnels, en simulant notamment un navigateur. C'était très bien. Je suis depuis passé à la version 2 et il n'y a pas d'équivalent. De plus les tests de symfony sont fait avec PHPUnit et je n'ai jamais réussi à me faire à ce framework et je ne m'y fais toujours pas.

Je n'ai pas trouvé d'équivalent à simpletest (un peu vieillisant pour rester gentil) ou sfBrowser

J'ai ce besoin aussi bien pour des développements nouveaux mais aussi pour faire évoluer des applications où aucun test n'a été écrit. L'idée est d'alors de tester l'application de l'extérieur, en boîte noire. En cherchant à droite à gauche, je me suis finalement décidé à utiliser Behat, même si ce n'est pas forcément sa vocation première. Behat est un framework permettant de faire du développement piloté par le comportement - BDD. Dit autrement, on écrit des tests correspondant aux fonctionnalités de l'application. Le gros avantage de Behat est que les tests sont écrits en langage naturel. Cela ressemble à ça :

Fonctionnalité: Avoir un compte bancaire
   Afin d'offrir aux utilisateurs la possibilité d'avoir un compte bancaire
   Etant donné que je suis inscrit
   Je dois être capable d'ajouter ou de retirer de l'argent sur mon compte

J'ai bien sûr une idée derrière la tête en expliquant tout cela. Depuis quelques semaines, j'essaie tant bien que mal de couvrir le périmètre fonctionnel de piwigo. L'idée est de pouvoir ensuite faire revivre le support de PostgreSQL. Oui oui quand j'ai une idée... Les quelques tests que j'ai écrit sont déjà disponibles : mon dépôt github.

Haut de page