samedi 27 juillet 2013

Given-When-Then comme pratique agile

Certains frameworks de test fonctionnel orientés vers BDD (Behaviour-Driven Development) implémentent nativement la séparation des étapes d'un test selon ce schéma :
Given / Étant donné [un contexte]
When / Quand [certains événements surviennent]
Then / Alors [on obtient les résultats attendus]
Given - When - Then

Par exemple, JBehave le propose dans son système d'annotations (@Given, @When, @Then), afin de composer l'écriture d'un "story test" en Java.

Mais ces mots-clés peuvent servir également à bien identifier les étapes à l'intérieur d'autres types de tests : unitaires ou d'intégration, avec JUnit par exemple. En effet, les annotations de JUnit ne sont pas toujours suffisantes : @Before (préparation), @Test (exécution + vérification) et @After (nettoyage) correspondent au cycle ci-dessous.

Tester en 4 étapes
Or, dans un test JUnit, rien ne distingue les étapes "Quand" et "Alors", sinon l'ordre d'écriture. De plus, quand une classe de test comporte plusieurs méthodes @Test, il est souvent nécessaire d'y ajouter quelques lignes supplémentaires pour finir la préparation du contexte ("Étant donné").

En tant que pratique, Given-When-Then a l'avantage de donner un guide pour mieux structurer son cas de test, d'inciter à n'écrire qu'un cas par méthode de test, ainsi que d'améliorer la lisibilité du code.



De manière à en généraliser l'usage, quoi de mieux que de l'intégrer directement dans son IDE ?

Avec Eclipse IDE, dans le menu "Windows / Preferences" :
  • accéder au sujet "Java / Editor / Templates",
  • créer un nouveau template en cliquant sur "New",
  • configurer le template comme ci-dessous :
  • dans votre méthode de test, taper tout ou partie de "givenwhenthen" et laisser l’auto-complétion faire le reste.
Il est aussi possible d'importer un template, en cliquant sur le bouton "Import" et en sélectionnant ce fichier.

Liens :

Aucun commentaire: