Il y a un certain nombre de conseils à connaître lors de l'automatisation des tests logiciels en général, et avec Agilitest en particulier pour rendre vos tests plus robustes.
En effet, en matière de tests logiciels automatisés, il y a un outil d'automatisation, et il y a aussi le SUT (système sous test) qui a son propre comportement, ses temps de réponse et ses particularités dont il faudra tenir compte.
Ce billet présente une série d'astuces que nous vous recommandons d'utiliser pour rendre vos tests plus robustes.
A propos de l'utilisation de Max / Wait for dans un test
Votre serveur est lent à répondre : tant pis, nous allons attendre 5 secondes de plus !
Nous ne vous recommandons pas de le faire, cette documentation vous expliquera pourquoi et comment traiter le sujet. La technique proposée vous permettra de gérer toutes les solutions où une certaine latence entre le logiciel et Agilitest peut se produire : attente d'une réponse du serveur, calcul complexe sur une solution Desktop...
Identificateurs d'objets
Certains cadres de composants génèrent des identifiants qui peuvent n'être valables que pour une session de navigateur donnée. Il est risqué de se fier à ces identifiants pour effectuer des tests, car il est fort probable que, pendant l'exécution, les identifiants aient été modifiés.
Dans certains cas, cela peut encore être fait en utilisant des expressions régulières.
Il suffit de reconnaître la partie de la valeur de l'attribut du composant à reconnaître qui est toujours fixe, par exemple un préfixe ou un suffixe, dans le cas suivant :
"select_
"id = select_4657
Pour traiter ce cas, l'expression régulière suivante appliquée à l'attribut "id" devrait faire l'affaire :
select_( d{4})
Le nombre de quatre chiffres peut donc varier en fonction des exécutions, mais nous trouverons toujours de manière très robuste le composant dont l'identifiant commence par "select_".
La conception de ATS
Lors de la conception d'Agilitest et du langage ATS , nous avons bénéficié de plusieurs années d'expérience dans les solutions d'automatisation des marchés, et nous cherchons à pallier un certain nombre de lacunes et/ou de défauts. Cela implique la mise en place de configurations spécifiques aux environnements d'exécution : par défaut, ATS est conçu pour fonctionner correctement dans la plupart des cas, mais il est toujours possible de modifier sa configuration.
Double contrôle des propriétés
Lors de la récupération d'une valeur sur un composteur, Agilitest effectuera un double contrôle de la valeur pour s'assurer qu'il récupère une information précise et stable. Cela permet de s'assurer que les valeurs que nous voulons contrôler sont définitives et celles fournies par le test, tout en ajoutant stabilité et fiabilité.
La configuration par l'exécution du robot
La fiabilité d'un test dépend également de sa vitesse ou de sa lenteur d'exécution. En effet, les réseaux et les performances des machines peuvent mettre les tests en échec.ATS prend en compte la possibilité que les performances des machines impactent l'exécution des tests. Ainsi, lors de son lancement, ATS récupère un fichier de configuration .atsProperties spécifique au job sur lequel il s'exécute.
Cela permet d'adapter finement les environnements d'exécution au contexte souhaité, par exemple une version de logiciel de développement ou une version de production peuvent ne pas répondre de la même manière : Avec ce système, il y a beaucoup plus de garanties d'avoir toujours un replay régulier.
Configuration par navigateur
Le comportement du test et donc le résultat de son exécution peuvent également varier en fonction des navigateurs. Il est donc également possible de configurer l'environnement d'exécution en fonction des navigateurs utilisés.
La robustesse au centre des enjeux de notre produit de développement
La robustesse et la maintenabilité des tests sont au centre de nos préoccupations car nous voulons que les testeurs se concentrent sur ce qui est vraiment important pour eux. Dans le jargon Agile/Lean, nous cherchons à supprimer le "muda" (perte de temps/gaspillage) dès que nous en avons l'occasion.