Vous n'avez pas besoin de connaître son code en détail pour tester fonctionnellement une application. C'est donc un test dit "boîte noire".
OK d’accord… mais concrètement, c’est quoi un test fonctionnel ?
Un test fonctionnel est le test qui servira à tester automatiquement toutes les fonctionnalités de votre application. "Toutes", ça veut dire : les fonctionnalités demandées dans le cahier des charges du projet (ou autres spécifications).
Par exemple, vous pouvez avoir à tester qu'un membre peut bien s'inscrire, se connecter, se déconnecter…
Voici la liste des étapes qu'il faut respecter au minimum pour effectuer un test fonctionnel:
Créer un client HTTP.
Effectuer une requête HTTP sur la page que nous devons tester.
S'assurer que les éléments sur la page testée sont bien présents (écrire des assertions).
Il est également possible d'établir un scénario d'utilisation pour arriver à un résultat attendu… En fait, il faut le faire : vous allez chercher à imiter le comportement d'un utilisateur lorsque celui-ci teste une fonctionnalité. Dans tous les cas, les assertions qu'il faudra écrire seront toujours liées aux besoins exprimés avant le développement.
Comprenez l’intérêt des tests fonctionnels
L'écriture de tests fonctionnels amène logiquement à connaître le fonctionnement d'une application. Au-delà de la connaissance du code, vous devrez connaître le contenu attendu de la réponse HTTP (ce qui sera affiché sur la page).
Allez, faisons une mise en situation.
Disons que vous arrivez sur un projet sur lequel on vous demande de travailler. L'une des premières étapes pour commencer à contribuer est de découvrir l'ensemble des pages web de ce site.
Dans le meilleur des cas, des tests fonctionnels ont été écrits, et cela vous permet d'avoir une documentation précise à disposition !
Dans le cas contraire, c'est une excellente raison d'établir une documentation.
Par ailleurs, au fur et à mesure que vous ferez évoluer l'application, les tests fonctionnels permettront de s'assurer que ces modifications n'impactent pas les autres fonctionnalités du site. Il n'y a rien de plus chronophage que d'avoir à afficher l'ensemble des pages d'un site web à la main pour s'assurer que ce que nous venons d'écrire n'a rien cassé !
Un test fonctionnel est un test automatisé. Vous allez tester une fonctionnalité et vous assurer à chaque lancement de l'ensemble des tests que celle-ci n'est pas altérée et qu'elle correspond bien aux besoins exprimés.
Comprenez comment mettre place des tests fonctionnels
Dans ce cours, nous allons écrire nos tests fonctionnels dans le cadre d'une application Symfony. Nous allons vous fournir une application déjà développée, ne vous inquiétez pas. Et nous allons vous expliquer comment la tester fonctionnellement.
Les étapes pour écrire un test fonctionnel simple sont les suivantes :
Créer un client HTTP.
Émettre une requête HTTP à l'aide du client HTTP sur une page que vous souhaitez tester.
Récupérer la réponse HTTP.
Tester si le contenu attendu est bien présent.
De la même manière que pour les tests unitaires, vous pouvez implémenter les tests fonctionnels à différents moments du projet :
avant d'implémenter une nouvelle fonctionnalité (TDD) ;
juste après avoir implémenté une nouvelle fonctionnalité ;
au moment où vous découvrez une anomalie ;
au moment où vous découvrez une fonctionnalité que vous ne connaissiez pas jusque-là.
En résumé
Vous pouvez tester votre code sans avoir à le connaître en détail, juste ce que les fonctions font de manière fonctionnelle.
Les tests permettent de gagner un temps précieux à ne pas tester toutes les pages d’une application.
Vous pouvez, comme pour les tests unitaires, les écrire au moment voulu (les bonnes pratiques indiquent plutôt de commencer par les tests).
Rendez-vous au prochain chapitre pour implémenter vos premiers tests fonctionnels !