L'automatisation des tests peut échouer pour de nombreuses raisons. Aujourd'hui, nous allons nous pencher sur une cause récurrente de ces échecs, un mauvais choix d'outil.
Choisir un outil adapté à notre contexte est essentiel pour réussir l'automatisation des tests
Automatiser ou ne pas automatiser ses tests, quand on travaille en Agile, est rarement une question mais plutôt une nécessité. Afin de répondre à ce besoin, de nombreux outils existent... Chacun avec ses points forts, ses points faibles mais aussi les compétences et les environnements nécessaires à son utilisation !
Les risques les plus courants liés au choix d'un outil de test d'automatisation inadapté sont les suivants :
- L'impossibilité de tester tout ou partie de l'application. Les outils ne peuvent pas nécessairement tester toutes les technologies. De même, certains objets peuvent ne pas être reconnus par certains outils. Les résultats des tests deviennent peu fiables ou les tests de régression ne sont pas gérés correctement.
- Des compétences nécessaires non adaptées aux compétences de l'équipe. Cet aspect est parfois négligé lors du choix d'un outil, alors qu'il est essentiel. Les personnes qui vont utiliser l'outil ont-elles les connaissances techniques nécessaires pour l'utiliser correctement ? Connaissent-elles le cadre d'automatisation ?
- La rentabilité de l'outil n'est pas au rendez-vous. Un outil peut être capable de tester l'ensemble de notre application à partir de cas de tests mais avec un coût d'implémentation et de maintenance tellement élevé que l'automatisation n'est pas intéressante financièrement. Ce problème peut venir de l'architecture de l'automate mais aussi du fait que l'outil était trop "tordu" pour répondre à nos besoins. Gardez à l'esprit que le coût d'un outil n'est pas uniquement basé sur le coût de la licence !
Sans étude préalable, il est très probable que vous tombiez sur un "mauvais outil". Par "mauvais outil", nous n'entendons pas un "mauvais outil" en tant que tel. Non, un "mauvais outil" est un outil qui n'est pas approprié à notre contexte.
Des outils tels que Cypress ou Selenium sont conçus pour effectuer des tests Web et sont reconnus comme de "bons outils". Cependant, si vous voulez faire des tests d'applications lourdes, ces outils sont inefficaces et donc de "mauvais outils". De même, si les personnes qui écrivent, exécutent et maintenir les tests ne sont pas des techniciens, Cypress et Selenium seront également classés comme "mauvais outils".
Dans les deux cas (application lourde et équipe pas très technique) Agilitest est un outil qui peut répondre au besoin, c'est donc, de ce point de vue, un meilleur outil que Cypress et Selenium.
Comment s'assurer de la sélection d'un bon outil ?
Les enjeux liés à la sélection d'un outil d'automatisation sont généralement connus et pour faire le bon choix, il faut d'abord faire le point sur ses besoins :
- Que dois-je automatiser ?
- Quel est le budget ?
- Quelles sont les compétences techniques de l'équipe ? Qui est en mesure d'aider ?
- Peut-il être intégré dans notre environnement de développement et de test ?
- ...
Après cette étape nécessaire, il est alors possible de faire une étude des outils répondant à notre besoin.
Exemple de recherche d'un outil d'automatisation des tests
J'ai besoin d'un outil qui puisse tester différentes applications lourdes et web. Il y a des compétences techniques dans l'équipe mais la moitié de mes testeurs ont un profil plutôt fonctionnel.
Suite à mes recherches, j'ai trouvé 3 outils qui pouvaient répondre à mes besoins : XXX, YYYY et ZZZ, un outil offrant une grande flexibilité et travaillant par mots-clés.
Cette étude nous permet de faire une première sélection en ne mettant en avant que les outils intéressants pour notre contexte. Néanmoins, cette étude, bien qu'indispensable, n'est pas suffisante. En effet, même si, sur le papier, un outil semble parfait et meilleur que tous les autres, rien ne remplace une situation réelle et la mise en place d'un projet pilote.
Pour cela, il est préférable de sélectionner les 2 ou 3 outils qui semblent les plus pertinents et de commencer à automatiser (pendant quelques semaines) avec eux afin de voir comment ils s'intègrent et sont utilisés par l'équipe. Cette expérience permet de choisir plus facilement l'outil qui correspond le mieux à nos besoins parmi les outils testés (note : il est également possible de n'en sélectionner aucun et de tester les autres).
Seule une situation réelle et un pilote réel peuvent garantir que l'outil sélectionné répond réellement à nos besoins.
Reprenons l'exemple précédent :
XXX et YYY ont été sélectionnés.
Le projet pilote le montre :
- XXX est moins cher que YYY et ZZZ
- XXX et YYY peuvent automatiser nos tests sur toutes nos applications.
- XXX est assez complexe et nécessite plus de formation pour l'équipe que YYY.
- Les testeurs moins techniques écrivent des tests plus rapidement et plus efficacement avec YYY, ils ne peuvent pas utiliser l'outil ZZZ.
- YYY est plus coûteux, mais produit finalement des tests qui nécessitent peu de maintenance, ce qui réduit le coût global des licences + le temps de l'équipe par rapport à la solution XXX.
- ZZZ est gratuit mais peu adapté au projet et difficile à maîtriser.
Au final, l'équipe choisit YYY pour des raisons ergonomiques mais aussi pour des raisons de coût (la différence de coût de licence étant compensée par une formation moindre et une meilleure productivité des profils fonctionnels).
Conclusion
Le choix du bon outil est essentiel pour une automatisation réussie. Tout d'abord, vous devez savoir ce dont vous avez besoin. Ensuite, lancez une étude de marché pour mener un projet pilote. Testez les outils qui semblent le plus correspondre à vos besoins. Mais gardez à l'esprit que les outils évoluent, les applications aussi. Le contexte peut s'en trouver modifié. Exécuter des tests qui ne sont pas totalement dépendants de l'outil d'automatisation est un vrai plus dans notre monde moderne.