En-tête-canalplus
10 décembre 2020

La robustesse des tests logiciels automatisés

Christophe Cressend
Blog > Agile
La robustesse des tests logiciels automatisés

Qu'est-ce qu'un système robuste ?

La robustesse d'un système peut être définie comme la "stabilité des performances", "la capacité à reproduire un comportement attendu", lorsque les conditions extérieures auxquelles il est soumis varient, parfois de manière inattendue.

Elle peut être associée à la "performance", qui peut être définie comme "la capacité de reproduire un comportement attendu" uniquement dans une plage de fonctionnement réduite prédéfinie.

Il existe également des systèmes non performants, et donc non robustes, qui ne font pas l'objet de cet article.

Qu'est-ce que la robustesse des logiciels ?

Dans le domaine des tests de logiciels, la notion de "plage de fonctionnement" est essentielle car elle permet de distinguer le fonctionnement nominal et efficace du fonctionnement où la robustesse du logiciel sera nécessaire pour qu'il assure le fonctionnement attendu.

Il existe par ailleurs un domaine de tests logiciels qui aborde les problèmes de robustesse et permet de définir plus complètement votre plage de fonctionnement : par exemple, le nombre d'utilisateurs simultanés utilisant le même serveur, ou l'utilisation de volumes de données en dehors des conditions d'utilisation recommandées. L'objectif de ces tests est de pousser le système dans ses derniers retranchements afin de déterminer les limites de sa plage de fonctionnement.

La définition de la plage de fonctionnement permet ensuite de formuler des recommandations en termes de prérequis matériels et logiciels (OS) qui assureront un fonctionnement nominal.

Comment définir la robustesse des tests logiciels automatisés

Dans le domaine des tests logiciels fonctionnels automatisés, si l'on veut rester simple, il ne faut pas compter sur un fonctionnement "robuste" des tests : tout doit fonctionner nominalement afin d'éviter flaky tests, les faux négatifs, ou les tests qui échouent sans raison apparente.

Si vous rejouez vos tests en intégration continue, vous devrez analyser régulièrement ces flaky tests afin de comprendre que les causes d'échec ne sont pas dues à bugs dans le logiciel testé, mais aux conditions dans lesquelles les tests ont été effectués.

Comment assurer la robustesse des tests logiciels automatisés ?

Pour que vos tests soient performants, il est nécessaire d'agir à plusieurs niveaux :

  • Assurez-vous que vos tests sont déterministes : que leur exécution est le résultat d'un scénario prédéfini et prévu, ce qui évite d'échouer au premier comportement inattendu.
  • Assurez-vous que les données sur lesquelles ils agissent sont identifiées : soit en demandant à chaque test de créer ses propres données, soit en créant un référentiel de données commun dans lequel chaque test pourra trouver les données sur lesquelles il agit sans déranger les autres tests. Ceci sera d'autant plus efficace si vous envisagez de paralléliser vos tests.
  • Assurez-vous que les conditions matérielles pour la répétition des tests sont identiques : par exemple, le temps de réponse des serveurs peut générer flaky tests, et donc la charge sur les serveurs et les horaires peuvent être importants. Si vous effectuez des tests utilisant la reconnaissance graphique, les environnements matériels sont également importants.

Automatisation des tests de robustesse des logiciels selon Agilitest

L'objectif initial d'Agilitest est d'essayer de limiter les activités de test maintenance , et donc les analyses inutiles flaky test . Dès le départ, notre priorité est de nous assurer que les tests se déroulent de manière optimale, même lorsque les conditions sont hors limites.

Nous disposons également de toute une série de fonctions qui vous permettront de créer des données aléatoires pour votre test.

Vous verrez qu'Agilitest est rapide, mais qu'il prendra son temps avant de déclarer une condition d'échec, par exemple :

  • Vérifiez plusieurs fois qu'une valeur différente de celle attendue a toujours la même valeur dans l'application.
  • Assurez-vous que le serveur a renvoyé les données attendues.
  • S'assurer qu'un élément sur lequel nous devons effectuer une opération est trouvé (ou vérifier à nouveau jusqu'à ce qu'il soit trouvé jusqu'à une limite donnée)

Atteindre zéro flaky tests est le graal vers lequel nous tendons, c'est un enjeu important puisqu'à la clé, il y a la possibilité de livrer une version qualifiée de votre logiciel à tout moment avec la certitude d'avoir couvert la majorité, voire la totalité, des fonctions importantes.

Vous voulez essayer Agilitest ?

Découvrez Agilitest en action. Divisez par 5 le temps nécessaire à la sortie d'une nouvelle version.

Automatiser les tests fonctionnels pour des équipes heureuses.  

  • Des tests manuels aux tests automatisés
  • De l'automatisation des tests à l'automatisation intelligente des tests
  • Trouver les bons outils
ebook-scaling-test-automation-agilitest

Recevez les actualités du monde du test et d'Agilitest dans votre boîte mail

Rejoignez des milliers d'abonnés. Conforme RGPD et CCPA.