Historique de la question :
À l'origine, les tests automatisés étaient souvent écrits "à la volée", sans séparations architecturales : la logique de vérification et les mécanismes d'exécution étaient mélangés. Avec la croissance des projets, il est devenu évident que le mélange du framework et de la logique de test crée une base de code fragile et difficile à maintenir. Des recommandations architecturales pour la séparation des responsabilités ont vu le jour.
Problème :
Si les tests dépendent des implémentations internes du framework ou incluent des logiques d'interaction avec l'environnement, tout changement oblige à réécrire de nombreux tests. Les cas de test sont complexes, le code est dupliqué, la migration vers un nouveau framework ou une nouvelle plateforme est compliquée.
Solution :
Séparer strictement :
Caractéristiques clés :
Peut-on écrire des étapes de test directement dans les tests, si elles sont très peu nombreuses ?
Il vaut mieux éviter. Même les tests courts peuvent croître, et l'absence de couches conduira rapidement au chaos.
Les scénarios de test doivent-ils connaître la mécanique de lancement (par exemple, quand initialiser le pilote) ?
Non. Tous les détails de l'infrastructure doivent être cachés dans la couche du framework.
Est-il normal de coder en dur les paramètres de test à l'intérieur des cas (par exemple, url, identifiants) ?
Non. Les paramètres de test doivent être configurés via les paramètres du framework et de l'environnement.
Dans le projet, les tests appellent directement les méthodes du pilote Selenium, la connexion à WebDriver est répétée dans chaque test. Chaque test analyse le config par lui-même.
Avantages :
Inconvénients :
Les tests utilisent des abstractions de base du framework : initialisation et teardown générales, passage des paramètres à travers un configurateur, la logique de test s'exprime à travers des méthodes de haut niveau.
Avantages :
Inconvénients :