Note : 4 ; Une guide d’utilisation de Mountebank par son créateur. Bien écrit, mais assez basique
Mountebank est un framework de test (encore un) bien adapté au test des microservices, utilisant comme l’auteur nous le développera, le principe de l’imposture ! Malheureusement pour moi, la bête s’utilise avec du code JavaScript (avec du Node.js pour être précis), un obstacle que je n’avais pas anticipé. Cela a certainement impacté la note, dommage car le principe de ce moteur de test qui permet de simuler les services environnant au runtime ouvre nombre de perspectives.
Reprenons au départ : le volume se présente sous forme d’un texte de près de 220 pages découpé en 3 parties totalisant 10 chapitres. La première partie « premières étapes » ne compte que 2 chapitres sur 40 pages. Le premier chapitre « testing microservices » campe le décor. Il positionne clairement cet outil sur le volet « end to end » et introduit les notions de prédicats et d’imposteurs qui seront clé par la suite. Le second chapitre est le « hello world » … mais il s’avère rapidement être plus que cela. Il commence doucement en requêtes curl et en json, mais bascule rapidement sur le JavaScript ! L’auteur brûle un peu les étapes.
La seconde partie compte 6 chapitres et s’étend sur 130 pages. C’est le gros de la troupe et il est d’ailleurs sobrement intitulé « using Mountebank ». Il s’ouvre au chapitre 3 par le concept de réponses préfabriquées (canned responses), ce qui nous amène aussi à évoquer les prédicats. C’est plutôt clair et bien illustré. Les prédicats sont justement le sujet du chapitre 4. On les aborde en commençant par les expressions régulières pour terminer avec le JSonpath en passant par les champs multivalués. Le chapitre est riche et clair la plupart du temps.
Le « record-replay » est une fonctionnalité précieuse, spécialement dans le cadre de la remise sous contrôle d’un code legacy. Le chapitre tente de décrire les différentes facettes de cette fonctionnalité complexe, mais j’aurais préféré une approche pas à pas car je m’y perds un peu. Le chapitre 6 sur la programmation avec Mountebank pique un peu : d’abord c’est du JavaScript. Ensuite, le chapitre présuppose la connaissance de Node.js, car aucun mot n’est dit sur le déploiement du JavaScript sur Mountebank (ou si peu) et enfin les exemples ne sont pas exactement triviaux.
Le chapitre 7 traite de l’ajout de comportements sur les réponses. S’appuyant sur le pattern décorateur, le chapitre est rendu compréhensible par des extraits ciblés de code et de nombreux diagrammes. C’est un aspect avancé de l’outil de test qu’aborde le chapitre 8 : le support des protocoles ! L’auteur illustre cela avec le support de .Net et tente une approche pas à pas. Tout n’est pas facile à suivre, mais au moins peut-on suivre les grandes lignes.
La dernière partie ne compte que 2 chapitres qui forment une quarantaine de pages. C’est de la place de Mountebank dans l’intégration continue qu’explore le chapitre 9. Un chapitre plutôt bien fait qui donne sa place aux tests « end to end » dans le pipeline de déploiement. Le chapitre 10, lui, nous donne quelques clés pour utiliser Mountebank pour les tests de performance. Disons que c’est une introduction car c’est vraiment léger.
L’auteur connait son sujet : il est l’auteur de Montebank ! J’avoue avoir eu régulièrement du mal à le suivre, mais l’écosystème JavaScript n’est pas mon monde d’origine. Cela dit le style de l’auteur est agréable, ses analogies plaisantes et il ne manque pas d’humour. Il est simplement dommage que la structure d’ensemble ne soit pas celle d’un tutorial, l’agrément d’ensemble en souffre.
Référence complète : Testing Microservices with Mountebank – Brandon Byars – Manning 2019 – ISBN : 978 1 61729 477 8