L’automatisation des tests est un sujet très large dans lequel il est risqué de se lancer les yeux fermés. Avant d’enclencher la machine, il est donc préférable de se poser quelques questions pour ne pas perdre en milieu de course tout ce qui a été créé au début du projet d’automatisation. Les retours en arrière sont souvent très coûteux et difficiles (voire impossible sans repartir de 0) en matière d’automatisation.
C’est la première question à se poser ! Si l’on n’a aucun intérêt à le faire, autant rester sur des tests manuels qui présentent l’avantage d’être exécutés par un être humain. Ce qui permettra de s’adapter en temps réel et éviter ainsi les erreurs ou retards de mise à jour/maintenance des tests automatisés. Toutefois, il existe de nombreuses bonnes raisons de vouloir/devoir automatiser ses tests. Celles-ci peuvent se regrouper en 3 catégories qui découlent les unes des autres :
Les tests automatisés permettent de couvrir la non régression pendant que les tests manuels peuvent se concentrer sur les nouvelles fonctionnalités du sprint, les fonctionnalités non automatisables ou des cas de tests bien spécifiques.
En testant plus souvent un périmètre plus important, la stabilité du code et des développements s’en retrouvent de meilleure qualité.
Les tests automatisés étant effectués plus rapidement que les manuels, et pouvant être exécutés simultanément ou en horaire décalé, il devient possible de couvrir plus rapidement le périmètre des tests nécessaires à la Definition of Done (DoD) des US (User Story).
Vous l’aurez donc compris, l’automatisation des tests est donc une stratégie très intéressante dans une organisation agile (Scrum, Kanban…) où il est nécessaire de tester plus souvent et plus rapidement. Ainsi, elle permet d’alléger la charge des tests manuels sur un scope qui est de plus en plus large.
L’automatisation devient même quasiment obligatoire dans les approches du type BDD (Behavior Driven Development), TDD (Test Driven Development) ou ATDD (Acceptance test Driven Development) puisqu’elle fait partie de l’ADN de la méthodologie. En effet, ces tests sont automatisés dès leur première exécution lorsque les conditions le permettent. Cette étape d’automatisation des tests est aussi bénéfique dans la relation entre le QA agile et le développeur. Ces derniers communiqueront en permanence pour créer et anticiper les difficultés de maintenance des tests.
Attention, tous les tests ne sont pas automatisables ! En effet, les tests automatisés sont un parfait complément aux tests manuels, mais ils ne peuvent pas totalement les remplacer. Il existe certains freins à l’automatisation :
S’il est nécessaire d’insérer une carte bancaire dans un TPE, l’automate de test ne pourra pas réaliser cette action par exemple. De manière générale, ce frein est rencontré lorsque le jeu de données à utiliser pour le test ne peut pas être créé ou réalisé de manière automatisée.
Un automate de test ne pourra jamais réaliser des tests qui se veulent par définition non scriptés. Les tests manuels ne pourront donc jamais être remplacés sur ce type de test.
Il n’existe pas de formule magique dans l’automatisation des tests. Chaque projet aura sa propre formule de réussite. Toutefois, il existe des critères sur lesquels tu peux te baser pour la sélection des cas de test à automatiser. Ceux-ci ont tous pour objectif de satisfaire le calcul du ROI (Return On Investment) du projet d’automatisation.
En effet, ce ratio détermine le bénéfice attendu par rapport au capital investi. On va donc chercher à automatiser les tests les plus rentables. Pour cela, on va donc se baser sur les critères suivants :
Si ces 3 précédents critères sont purement financiers. Des critères liés au projet sont également à prendre en compte :
Les bonnes pratiques liées à cette pyramide sont généralement les suivantes :
Plus les tests sont à la base de la pyramide :
Pour conclure, pour optimiser sa stratégie de test, il est donc recommandé d’automatiser en priorité tous les tests unitaires, puis les tests d’intégration, puis les tests d’API avant de terminer par les tests d’IHM beaucoup plus complexes à automatiser et maintenir.
Ce qu'il faut retenir sur l'automatisation des tests
Avant de commencer un projet d’automatisation, il faut :