État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 2 : Conception des tests

Chapitre 5 par Capgemini

Une autre perspective sur l'optimisation des cas de test

Métier ●○○○○
Technique ●●●●○

 

Download the "Section 2: Design" as a PDF

Use the site navigation to visit other sections and download further PDF content

By submitting this form, I understand that my data will be processed by Sogeti as described in the Privacy Policy.*

Les algorithmes d'apprentissage automatique peuvent aider à créer une suite automatisée de cas de test priorisés (par exemple Random Forest) et dédupliqués (par exemple TF-IDF, LSA) pour obtenir un rendement élevé de défauts par exécution de cas de test. D'autres algorithmes plus sophistiqués existent pour traiter les problèmes de classification et de déduplication. Ils requièrent cependant un environnement très puissant  pour l'entraînement et le déploiement du modèle. Des modèles plus simples semblent suffire en termes de facilité d'utilisation et de précision.

Comme nous le savons tous, la méthodologie agile améliore la visibilité des risques au début du cycle de vie du projet. Par conséquent, l'importance des tests de régression[1] dans le développement logiciel agile croît de manière exponentielle. Plus la taille du logiciel augmente, plus la taille de la suite de tests et l'effort requis pour la maintenir augmentent. Comme la taille de la suite de tests augmente au fil du temps, l'optimisation manuelle devient plus difficile. Par conséquent, des doublons se glissent dans ces suites de tests et doivent être priorisés pour être exécutés au fil du temps. La déduplication et la hiérarchisation à la main sont peu plausibles.

Lorsqu'une mission dure longtemps dans une entreprise, les activités de gestion des tests risquent de devenir lourdes. L'attrition, la croissance et les changements organisationnels ont tous un effet sur la productivité de l'équipe de test. Souvent, les nouveaux arrivants commencent à écrire des cas de test sans vérifier leur existence, puis partent après quelques années, et le cycle se répète. Comme les doublons s'accumulent au fil du temps, la maintenance des actifs de test devient de plus en plus difficile. La suppression manuelle des doublons est une tâche fastidieuse et insatisfaisante. Comment pouvons-nous accélérer cette activité ?

De même, le nombre moyen de cas de test rencontrés par certains de nos clients, des banques de premier plan aux États-Unis et au Canada, est proche de 50 000. Il faut des semaines ou des mois à un expert en la matière pour passer en revue les cas de test et les classer par ordre de priorité. Comment améliorer la priorisation et la précision des cas de test tout en respectant la vélocité agile ?
Ce chapitre examine comment aborder et résoudre ces deux problèmes fondamentaux par l'utilisation d'algorithmes d'apprentissage automatique.

Aperçu de la solution

Notre plateforme, nommée SmarTEST, illustre le flux global de l'ensemble du processus de hiérarchisation et de déduplication des cas de test. Elle est résumée à l'aide d'un scénario typique et du flux de travail qui a été mis en œuvre.

Workflow of SmarTEST explained with a Scenario


Fonctionnement de SmarTEST expliqué avec un scénario

Laissez-nous vous présenter un scénario concret de l'un de nos clients, une banque de premier plan aux États-Unis. Avant de mettre en œuvre SmarTEST, le client disposait d'un total de 2 400 cas de test de régression. En utilisant tous les cas de test de régression, le nombre de défauts qui ont été trouvés était de 120. Ainsi, le rendement des défauts, qui est un pourcentage de défauts découverts pendant les tests, était de 5%, ce qui était assez faible. Le temps de cycle pour l'exécution de l'ensemble des 2400 cas de test de régression était de 15 jours pour des ressources "X".

Hiérarchisation des cas de test

À l'aide du classificateur d'apprentissage automatique Random Forest, SmarTEST a analysé plusieurs dimensions de données et a classé les cas de test comme étant de priorité élevée, moyenne ou faible. L'algorithme est entraîné à l'aide de données historiques de cas de test et de multiples paramètres. Ces paramètres comprennent la complexité du scénario de test, le nombre d'étapes du scénario de test, le nombre de défauts, les détails de l'exécution du scénario de test et la gravité du défaut. Le modèle peut ensuite être utilisé pour déterminer la priorité des cas de test. Le modèle formé, lorsqu'il a été exécuté sur les 2400 cas de test, les a classés en 800 cas de test de haute priorité, 1000 de priorité moyenne et 600 de faible priorité. Après la déduplication des cas de test de haute priorité [procédure décrite dans la section suivante], le nombre est descendu à 700. En exécutant les cas de test de haute priorité, le nombre de défauts identifiés était de 119. Le test avec des cas de test de régression optimisés a donc augmenté le rendement des défauts à 17%, augmentant ainsi l'efficacité du cas de test. En exécutant les cas de test de haute priorité, la durée du cycle a été réduite à 10 jours avec le même nombre de ressources. Ainsi, la durée globale du cycle de test a été réduite de 30%.

En outre, même après que les cas de test ont été classés par ordre de priorité dans les catégories appropriées, le nombre de cas de test dans la catégorie de haute priorité peut rester important. Nous avons rencontré cette situation avec de nombreux autres clients. Même après hiérarchisation, le panier de haute priorité contenait jusqu'à 25 000 cas de test. Il s'agit d'un nombre important si l'on considère que le test de régression est effectué à la suite des facteurs discutés précédemment. Pour mieux faire face à de telles situations, nous avons développé le concept de l'indice de risque quantitatif. Il s'agit d'une valeur numérique comprise entre 0 et 1 qui est calculée en utilisant les mêmes paramètres que l'entrée du classificateur. Une valeur d'indice de risque quantitatif de 1 indique que la probabilité que le scénario de test échoue est extrêmement élevée, ce qui en fait un scénario de test qu'il est nécessaire d'exécuter.

De plus, nous avons vérifié manuellement l'exactitude de la méthode de priorisation des scénarios de test décrite ci-dessus. Nous avons obtenu une précision d'environ 92 %, ce qui indique la pertinence de la méthode. La figure 2 illustre un exemple de l'écran de résultat qui s'affiche une fois que la hiérarchisation des cas de test est terminée.

Les avantages de cette méthode en 2 étapes sont énumérés ci-dessous :

  • Augmentation de la vitesse de test de 30%, ce qui permet de gagner du temps et de maintenir la vélocité agile. Dans l'étude de cas ci-dessus, le temps de cycle a été réduit de 15 jours à 10 jours en exécutant seulement les cas de test de haute priorité qui identifient plus de 99% des défauts contre l'exécution de tous les 2400 cas de test.
  • Amélioration de la prise de décision concernant l'exécution des tests. Ainsi, la solution prescrit les cas de test critiques qui doivent être exécutés dans des délais contraints.
  • Précision maximale des prédictions obtenue grâce à l'apprentissage continu et au recalibrage des modèles d'apprentissage automatique
Workflow of SmarTEST explained with a Scenario


Écran des résultats de la priorisation des cas de test

Déduplication de cas de test

Nous supprimons les cas de test dupliqués des suites de test à l'aide de deux algorithmes basés sur le traitement du langage naturel (NLP).

  1. Fréquence des termes - Fréquence inverse des documents (TF-IDF)
    TF-IDF est une technique permettant de quantifier un mot dans un document. TF-IDF vectorise des paramètres tels que le nom et la description du cas de test et les compare aux mêmes paramètres dans d'autres cas de test vectorisés. La comparaison est effectuée à l'aide d'une fonction appelée "similarité Cosinus", que nous appelons l'indice de similarité. L'indice de similarité est compris entre 0 et 1. Un indice de similarité de '0' indique que les cas de test ne correspondent pas, tandis qu'un indice de similarité de '1' indique que les cas de test correspondent complètement. Toute valeur entre 0 et 1 indique le degré de similarité entre le scénario de test et celui qui est comparé. Lorsque nous obtenons un indice de similarité très proche de 1, nous le qualifions de "quasi similaire". Nous pouvons spécifier un seuil de comparaison pour l'indice de similarité. Si l'indice de similarité est supérieur au seuil, ils sont considérés comme des doublons. Cette méthode peut être utilisée pour éliminer la majorité des doublons.
    TF-IDF est une méthode très simple de déduplication qui réussit dans la majorité des cas. Cependant, elle présente l'inconvénient d'exiger des mots similaires dans les cas de test afin d'obtenir un score élevé de l'indice de similitude cosinus. Elle ne tient absolument pas compte du contexte et du sens de la phrase. Prenons l'exemple de deux scénarios de test. L'un d'entre eux est intitulé "Aller sur le site Web", tandis que l'autre est intitulé "Naviguer vers le site Web". Un être humain peut comprendre que les deux cas de test signifient la même chose. Si nous les comparons en utilisant le TF-IDF, nous obtiendrons un score faible et nous risquons de nous retrouver avec les deux cas types.
  2. Analyse sémantique latente (LSA)
    C'est ici que la LSA surpasse clairement la TF-IDF. LSA tente de capturer les concepts cachés en s'appuyant sur le contexte entourant les mots. Nous avons mis en œuvre la déduplication des scénarios de test pour un certain nombre de clients et avons observé qu'environ 15 à 25 % des doublons sont identifiés et supprimés dans chaque cas. Dans l'étude de cas discutée [dans la section Hiérarchisation des cas de test], l'exécution de l'algorithme de déduplication a permis d'identifier 100 cas de test en double parmi les cas de haute priorité, ce qui représente 13%. Le tracé de la carte thermique des cas de test nous donne le nombre de doublons. Les figures 3a et 3b illustrent une cartographie (ou heatmap) générée en utilisant TF-IDF et LSA, respectivement.
    Les axes x et y de cette carte de chaleur contiennent les numéros des cas de test. Ainsi, si les deux cas de test sont similaires, nous avons une valeur de 1, qui est indiquée par une couleur jaune, et s'ils sont dissemblables, nous avons une valeur de 0, qui est indiquée par une couleur bleue. Dans la figure 3a, nous voyons une forte ligne jaune en diagonale. Cela s'explique par le fait que le scénario de test est comparé en diagonale à lui-même et qu'il a donc un score de similarité de 1. En dehors de la diagonale, cette carte "thermique" révèle des éclats de jaune. Cela indique que des doublons existent. Dans la figure 3b, qui représente la cartographie  (ou heatmap) LSA, nous observons un phénomène similaire le long de la diagonale, car le scénario test est comparé à lui-même. De plus, nous constatons une forte présence de couleur jaune en dehors de la diagonale. Ceci est dû au fait que, comme indiqué précédemment, le LSA tente de comprendre le contexte sous-jacent de la phrase.
Figure: Heat map plot for TF-IDF and LSA


Cartographie pour TF-IDF et LSA

Les avantages de la déduplication des cas de test sont les suivants :

  • Identifier et supprimer les paires de cas de test en double pour créer un pack de cas de test optimisé et unique.
  • Déterminer la similarité entre les cas de test en fonction de trois paramètres : le nom du cas de test, la description du cas de test et les étapes du cas de test.
  • Environ 15 à 25 % des cas de test identiques ou presque identiques dans l'ensemble du pack de cas de test sont identifiés et supprimés.

About the authors

Venkatesh Babu

Venkatesh Babu

Venkatesh Babu is a technology leader, with 22+ years of experience in JEE, .NET, Mobile, Cloud, Automation, SMAC, IoT, RPA, AI/ML, Digital technologies - architected, designed and delivered enterprise solutions for global clients. He is working in the Research & Innovation Group and passionate about Emerging Technologies, Focus areas include Cloud, Artificial Intelligence & Machine Learning IoT, Gamification, Gesture Recognition, Augmented Reality, Blockchain, Big Data, Microservices, Design thinking, Solution Architecture & Consulting, Application Integration, Product Engineering, Wearables, Crowdsourcing and Technology evangelization.

Raghav Menon

Dr. Raghav Menon

Raghav Menon is passionate about AI/ML, Natural Language Processing, Speech processing, Image and Signal Processing. He has a PhD in Signal Processing and has several years of Research and Development experience. At Capgemini, he had been working with the Cognitive Document processing team. Currently he is attached to the Analytics COE team in Capgemini where he looks into the application of AI/ML algorithms for software testing among the other areas of application of AI/ML. He has several publications in the areas of AI/ML, Speech and Signal Processing which can be accessed at scholar.google.co.in. His last assignment had been with the United Nations, Global Pulse Labs in Stellenbosch, South Africa.

About Capgemini

Capgemini is a global leader in partnering with companies to transform and manage their business by harnessing the power of technology. The Group is guided everyday by its purpose of unleashing human energy through technology for an inclusive and sustainable future. It is a responsible and diverse organisation of 270,000 team members in nearly 50 countries. With its strong 50 year heritage and deep industry expertise, Capgemini is trusted by its clients to address the entire breadth of their business needs, from strategy and design to operations, fueled by the fast evolving and innovative world of cloud, data, AI, connectivity, software, digital engineering and platforms. The Group reported in 2020 global revenues of €16 billion.

Get the Future You Want  I  www.capgemini.com

 

 

 

Capgemini logo