Série Terraform-Terratest - Implémentation des exigences fonctionnelles (4/4)
Finalisation du développement de notre module
Entamons la phase finale de notre module (et donc de notre série), à savoir l’implémentation des exigences fonctionnelles.
Dans les trois premiers articles, nous avons défini le cahier des charges, initialisé un module vierge, définit les tests fonctionnels en lien avec le cahier des charges. Dans ce dernier article, nous passons (enfin) à l’implémentation de ces exigences permettant de passer et valider les tests fonctionnels développés précédemment.
1 Implémentation des exigences fonctionnelles
Pour réaliser l’implémentation, je vous propose de nous laisser guider par les résultats du test Terratest.
1.1 Première tentative
Exécutons Terratest :
|
|
Le résultat est le suivant :
|
|
Ici, Terratest nous spécifie que la variable your_name_here
est manquante dans notre module.
Ajoutons donc dans un premier temps cette variable your_name_here
:
|
|
1.2 Deuxième tentative
Re-jouons le test :
|
|
Le résultat est le suivant :
|
|
L’erreur This object does not have an attribute named "hello_world"
nous spécifie que le module ne renvoie pas d’output hello_world
. Ajoutons-le :
|
|
1.3 Troisième tentative
Re-jouons le test :
|
|
Le résultat est le suivant :
|
|
L’erreur ici nous spécifie que le contenu de la variable hello_world
ne correspond pas à l’attendu. Spécifions-le :
|
|
1.4 Quatrième tentative
Re-jouons le test :
|
|
|
|
Cette fois, c’est bon 🎉 ! Notre module correspond maintenant aux spécifications fonctionnelles définit dans le cahier des charges.
2 Conclusion
Cette implémentation clôture la série d’articles sur les tests de module Terraform avec Terratest.
Je reconnais que l’intérêt des tests Terratest dans le cadre de cas d’usage n’est pas évident de prime abord. Cependant, rappelons que l’exemple choisit était volontairement simpliste.
Dans le cas d’un module plus complexe, l’intérêt des tests est beaucoup plus évident. En effet, ils permettent de détecter rapidement des différences de comportement lors du développement de nouvelles features ou bien simplement lors de l’upgrade des versions de providers (dans le cas de breaking changes notamement).
Enfin, le dernier intérêt de ces tests Terratest est que nous disposons ici d’un exemple testé qui peut être exposé directement aux utilisateurs dans le README.md
grace à des outils comme terraform-docs (cf. ce commit)
J’espère vous avoir convaincu de l’intérêt des tests avec Terratest ainsi que la simplicité de mise en place de ceux-ci.