Automatisation et Tests Exploratoires
Cette série d’articles explore en 5 parties les thèmes suivantt :
- Explication du test exploratoire,
- Un guide des heuristiques pour mieux maitriser le test exploratoire (cet article),
- Comment utiliser le test exploratoire pour définir son plan de test pour un produit sans spécification ?
- Comment effecteur du test exploratoire sur des APIs ?
- Comment automatiser nos tests exploratoires ? (cet article)
L’automatisation et les tests exploratoires sont souvent perçus comme des approches opposées. D’un côté, l’exploration repose sur la curiosité humaine, l’adaptabilité et l’improvisation. De l’autre, l’automatisation cherche à standardiser et répéter des scénarios prévisibles. Mais ces deux mondes ne sont pas incompatibles, bien au contraire !
Dans cet article, nous allons voir quand et comment débuter l’automatisation pendant une session de tests exploratoires.
Quand est-il pertinent de commencer l’automatisation pendant une session exploratoire ?
Une session exploratoire est avant tout une phase de découverte, où le testeur cherche à comprendre l’application, identifier des comportements inattendus et détecter des failles potentielles. Pourtant, certaines situations peuvent justifier le lancement de l’automatisation dès cette phase exploratoire.
Voici quelques critères qui indiquent que l’automatisation peut être introduite dès la session exploratoire :
1️⃣ Quand un test devient répétitif
Si, au fil de l’exploration, vous vous retrouvez à exécuter plusieurs fois le même test avec des variations mineures (par exemple, tester différents paramètres sur une API ou naviguer toujours au même endroit dans l’UI), il peut être judicieux de l’automatiser.
👉 Exemple API : Vous testez un endpoint qui prend en charge différentes valeurs d’un paramètre (GET /products?category=shoes
). Plutôt que d’envoyer les requêtes une par une, vous pouvez écrire un script qui exécute toutes les variations en boucle.
👉 Exemple UI : Vous testez la connexion d’un utilisateur avec plusieurs rôles différents. Un script Selenium, Cypress ou Playwright pourrait facilement exécuter ces scénarios de façon automatique.
Le cas d’usage le plus pertinent est lors de session de tests exploratoires pour les APIs qui permet en générale plus rapidement la génération de scripts automatisés à la volée.
2️⃣ Quand l’automatisation peut aider à générer des données de test
Pendant l’exploration, il est courant d’avoir besoin de nombreuses données variées :
- Créer des utilisateurs avec différentes permissions.
- Générer des données de test dynamiques (ex. Faker pour générer des noms, adresses, etc.)
- Exécuter des scripts pour préremplir des formulaires ou naviguer jusqu’à un état spécifique.
Un script d’automatisation peut alors être utilisé pour accélérer cette préparation et permettre au testeur de se concentrer sur la vraie exploration.
3️⃣ Quand l’automatisation aide à capturer et analyser les résultats
Tester une application ne consiste pas seulement à envoyer des actions, mais aussi à collecter et analyser les résultats. Automatiser cette analyse peut être un gain de temps énorme.
🔹 API : Utiliser Postman ou un script Python pour comparer les réponses obtenues à des valeurs attendues.
🔹 UI : Capturer des captures d’écran automatiques lors de certaines interactions clés pour détecter les changements visuels inattendus.
🔹 Plugin Web : Capturer des captures d’écran , faciliter les URLs utilisés et la gestion des bugs (Exploratory Testing Chrome Extension ou BugMagnet)
Comment intégrer l’automatisation pendant la session exploratoire ?
L’objectif n’est pas de tout automatiser immédiatement, mais de poser les premières bases qui pourront être améliorées au fil du temps. Voici une méthode efficace en 3 étapes :
1. Identifier les tests qui en valent la peine
Tous les tests ne sont pas de bons candidats à l’automatisation. Il faut se poser les bonnes questions :
✅ Ce test est-il répété plusieurs fois ? ✅ Stabilité : Si l’API a une structure bien définie et ne change pas fréquemment. ✅ Criticité : Un endpoint essentiel à l’application (ex. authentification, paiement, CRUD d’éléments clés).
✅ Ce test a-t-il une valeur durable (l’élément testé ne change pas trop souvent) ?
✅ Ce test pourrait-il détériorer d’autres fonctionnalités s’il venait à échouer ? ✅ Facilité d’automatisation : Certains tests sont plus faciles à automatiser que d’autres (ex. tests stateless avec des réponses prévisibles).
👉 Si la réponse est OUI à plusieurs de ces questions, alors l’automatisation peut être envisagée.
2. Commencer petit avec un test simple
Plutôt que d’essayer d’automatiser un parcours complexe d’un coup, commencez par un test rapide et améliorez-le progressivement.
💡 API : Un simple script Python avec requests
ou un test Postman par exemple qui envoie des requêtes de base.
💡 UI : Un test Playwright ou Cypress qui exécute une action simple (connexion, navigation, vérification d’un élément).
3. Observer et ajuster en fonction des découvertes exploratoires
Les tests exploratoires révèlent souvent des comportements inattendus. Il est important de ne pas figer l’automatisation trop tôt, au risque de passer à côté d’anomalies intéressantes.
👉 Astuce : Utilisez des assertions flexibles dans les tests automatisés pour éviter que des résultats légèrement variables ne les fassent échouer inutilement.
Un équilibre à trouver
L’automatisation ne doit pas tuer l’exploration. Il s’agit de trouver un juste milieu où l’automatisation assiste le testeur sans l’enfermer dans des scripts trop rigides.
🔥 À retenir :
✅ L’automatisation peut être introduite progressivement pendant une session exploratoire.
✅ Elle est utile pour les tests répétitifs, critiques et nécessitant des données en masse.
✅ Il faut commencer simple et ajuster au fur et à mesure des découvertes.
L’objectif final ? Libérer du temps pour l’exploration en automatisant les tâches répétitives !