Voici l’une des questions les plus fréquentes lorsqu’on fait du développement front-end: on teste quoi, pourquoi et comment s’assurer de ne pas en faire trop?
Voici l’une des questions les plus fréquentes lorsqu’on fait du développement front-end: on teste quoi, pourquoi et comment s’assurer de ne pas en faire trop?
Évidemment, les deux extrêmes sont à éviter. Ne pas tester est une très mauvaise idée, par contre, le “over-testing” est aussi un problème auquel on peut faire face lorsque l’on manque d’expériences ou de connaissances.
Pour avoir expérimenté les deux extrêmes, le “over-testing” a été un problème lorsque mon équipe a intégré Cypress pour tester nos interfaces sans savoir ce qu’on devait tester exactement. Ce type de test est très long à exécuter et très lourd à développer.
Les tests trop longs à exécuter ont fini par décourager notre équipe, ou même être ignorés, et créer une dette technique. Mais qui veut rouler 20 minutes de tests pour finalement faire un Commit?
Face à ce problème, on s’est demandé comment on pouvait avoir une bonne couverture de test sans pour autant avoir de lourds tests UI. Il se trouve qu’on utilisait nos tests UI comme des tests d’acceptances, et que par la surutilisation de ce genre de test, nous avons inversé la pyramide de test en ayant beaucoup plus de tests UI que de tests de composants.
Mais comment tester une logique d'affaires déclenchée par une interaction, tel un clic sur un bouton, sans tests UI ?
Avec les frameworks récents comme VueJs et React, nous avons utilisé des technologies comme Jest et Mocha déjà en place pour faire des tests unitaires pour aussi faire des tests d’acceptance. Ainsi, on peut éviter les tests qui chargent des interfaces avec des tests rapidement exécutables, et ce, à l’aide de tests de composantes. Nous avons appris qu’un type de test ne correspond pas nécessairement à une portée. Dans cette logique, un test d’acceptance peut donc être petit.
Par la suite, les tests UI étaient seulement utilisés pour des cas où on ne pouvait pas tester avec Jest et Mocha. Ainsi, leur utilisation a drastiquement diminué, ce qui nous a permis d’être beaucoup plus efficaces sur notre développement.
Et vous, avez-vous déjà fait face à une situation similaire ?


