Note de lecture : The Cucumber for Java Book, par Seb Rose, Matt Wynne & Aslak Hellesoy

Note 7 ; Mieux qu’un simple livre sur l’outil !

Voilà un livre qui trainait depuis bien trop longtemps sur ma pile de livres à lire ! C’est une bonne surprise à plus d’un titre. D’abord parce qu’il aborde bien ce qu’il est sensé aborder, à savoir l’outil Cucumber. Il faut dire que l’un des auteurs, Aslak Hellesoy est l’un des comitters initiaux. Mais surtout parce qu’il aborde le sujet de la bonne façon, à savoir par son usage. Les auteurs s’efforcent ainsi de mettre l’accent sur l’expressivité des tests au fil des chapitres. L’ouvrage a même droit à un traitement de faveur, il est imprimé en couleur.

Au total, le texte compte 290 pages sur 6 chapitres. L’ensemble est structuré en 3 parties. La première d’entre-elle a trait aux fondamentaux de Cucumber et couvre 6 chapitres soit 115 pages. Le premier d’entre-eux est vraiment très succinct et donne juste quelques clés sur Gherkin (le langage d’expression de Cucumber) et la façon dont Cucumber l’interprète et sur la nature des tests d’acceptation. Les 18 pages du second chapitre vont directement dans le concret : comment écrire une feature et l’implémenter par l’exemple. Par contre le partie « build » est franchement bricolée. Il faudra attendre un moment pour voir les auteurs mettre cela dans Maven. Mais l’intro est bien réussie.

Le chapitre 3 est un approfondissement : on voit les éléments de syntaxe de Gherkin, à l’exception des tableaux. Il clarifie certainement les éléments d’écriture, mais c’est plutôt un chapitre de transition. Le chapitre suivant aborde un élément essentiel : la syntaxe d’expression régulière et surtout les groupes de capture. Très bon boulot !

La vingtaine de pages du chapitre 5 est consacrée à l’expressivité, mais c’est en fait d’optimisation d’écriture dont il est question. D’abord en traitant de la factorisation des scénarios dans la section « background », mais surtout avec les « data tables » et les « scénarios outlines ». Ces derniers sont des éléments essentiels et les explications sont limpides. On termine en beauté cette première partie avec un chapitre consacrés aux anti-patterns d’utilisation de Cucumber. Les auteurs nous gratifient ici de leur expérience en nous livrant des solutions soit directement, soit via des pointeurs renvoyant plus loin dans l’ouvrage. Bravo !

La seconde partie est consacrée à un exemple en grandeur réelle. Il faut compter 140 pages sur 7 chapitre pour cette partie qui est la plus longue. Le chapitre 7 ouvre le bal avec une vingtaine de pages sur la construction « basique » des scénarios. Par rapport à ce que l’on a vu au début, il est question ici de construction émergente du modèle du domaine et de traduire les inputs Gherkin dans ce vocabulaire à l’aide des Transfomers et de partage d’états entre étapes.

Comment localiser les bugs et refactorer en s’appuyant sur Cucumber ? C’est ce dont il est question au chapitre 8, mais pas seulement. Les 28 pages de ce chapitre auraient pu aussi bien être coupées en 2, car la seconde moitié a trait au test d’application Web en couplant les WebDrivers Selenium aux steps Cucumber. Par contre, j’attendais plus du chapitre 9 qui s’attaque aux queues. Tout d’abord, on s’arrête à des pseudo-queues sur système de fichier, ensuite les auteurs nous proposent 2 méthodes assez rustiques de traitement de l’asynchronisme qui me laissent un peu sur ma faim…

Sujet important pour le chapitre 10, avec l’interfaçage aux bases de données. Le sujet couvre un peu plus de 15 pages. Disons qu’il fait le boulot, mais l’usage de ActiveJDBC est pour le moins exotique et on y évoque aussi Liquibase que je n’aime guère. Aujourd’hui il est presque fatal d’aborder l’injection de dépendance. Cela signifie en général Spring, mais pas ici ! Le chapitre 11 qui s’étend sur 18 page met en avant Picocontainer ! Il faut dire que l’un des auteurs est aussi le créateur de ce framework qui s’interface bien avec Cucumber ! Mais bon, Spring est également couvert.

Près d’une vingtaine de pages sont (encore) consacrées aux applications Web au chapitre 12, ce qui complète ce qui a été vu au chapitre 8. Ici il est question de timeout, de cookies et de mieux télécommander l’application, y compris dans des contextes Ajax et avec du Json. Le chapitre 13 fait la transition avec différents environnements : comment partitionner les tests grâce aux tags ou comment créer des éléments de steps spécifiques aux environnements.

La dernière parties est aussi la plus courte. Elle complète le panorama avec quelques technique avancée. Ce sont 3 chapitres sur une trentaine de pages. Le chapitre 14 compte une douzaine de pages pour couvrir les options de la ligne de commande et l’intégration avec une plateforme d’intégration continue. Le premier sujet est correctement couvert, mais pas le second, hélas !

A propos d’être mal traité, c’est aussi le cas des Web Services Rest au chapitre 15 : la dizaine de pages qui lui sont consacré font le minimum syndical. C’est bien dommage, le sujet m’intéresse particulièrement ! Enfin le dernier chapitre referme le livre en évoquant le test d’application legacy. L’effort est assez réduit, car il ne couvre que 6 pages et n’est guère convainquant. Mais au moins les auteurs ont essayé.

Le livre n’est pas parfait, mais dans l’ensemble il fait le boulot, même mieux que je n’espérais. Les exemples sont bien développés et on est pris par la main pour mettre en place nos tests du début à la fin. Un très bon livre et un incontournable pour travailler avec Cucumber !

The Cucumber for Java Book

Référence complète : The Cucumber for Java Book – Seb Rose, Matt Wynne & Aslak Hellesoy – Pragmatic Bookshelf 2015 – ISBN : 978 1 94122 229 4

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.