JBehave, BDD et test d’acceptation/acceptance: Démo pratique en 20 min

blog_jbehave_bdd_titre1  blog_jbehave_jira_titre1b blog_bdd_titre2

 

Nous nous intéressons dans ce billet à l'utilisation des tests d'acceptation et le concept BDD (Behaviour Driven Development) implémenté par le framework JBehave.

Nous le pratiquons au cas particulier d'une entreprise morale ayant plusieurs établissements souhaitant ajuster automatiquement l'effectif global en fonction du turn-over effectif dans ses divers établissements (simpliste pour que le billet reste accessible).

Notre démo traite le scénario suivant avec un langage (naturel) d'acceptation proche de celui de la maîtrise d'ouvrage (MOA).

Voici donc les étapes du scénario inspiré de mon article sur design pattern observer.

Tests fonctionnels Symfony : exposer les exceptions de pages Symfony dans le rapport de test PHPUnit

Peut-être avez-vous déjà vécu cette situation où un ou plusieurs de vos tests fonctionnels échouent et le rapport d’erreur de PHPUnit n’est pas assez précis pour que vous sachiez ce qui se passe d’un seul coup d’oeil. Vous devez alors aller voir ce que fait votre test, reproduire le scénario depuis un navigateur pour enfin arriver au détail de l’exception, ou alors fouiller dans vos fichiers de logs. Cela peut vite devenir une perte de temps quand les erreurs se répètent.

Dans cet article, nous verrons comment, progressivement, nous pouvons arriver à une solution qui passe tout simplement par la capture du contenu de la page d’exception au sein de votre test et l’affichage de son contenu dans la sortie de PHPUnit.

TDD : Test Driven Development – Partie 1 – Principes

Le développement piloté par les tests ou TDD "Test Driven Development" nous impose de commencer par écrire les tests unitaires avant le code de la vraie classe d'implémentation.

Ce fonctionnement apporte de nombreux avantages, mais est difficile à appréhender car il change notre logique d'écriture du code.

Nous avons à écrire le contrat que doit réaliser la méthode testée AVANT d'écrire cette méthode. Ce contrat est écrit dans le test unitaire et impose le comportement d'une méthode en fonction de données de départ.

Ce post a pour objectif de vous présenter les principes du TDD ainsi que le cycle de développement en mode TDD. Un second post vous présentera une démonstration du TDD.