<figure><img src="image_1.png" /></figure>

HAL
open science

# Comment l'intelligence artificielle peut révolutionner les techniques de test de logiciels

Moez Krichen

► To cite this version:

Moez Krichen. Comment l'intelligence artificielle peut révolutionner les techniques de test de logiciels. 2023. hal-04054712

HAL Id: hal-04054712

https://hal.science/hal-04054712

Preprint submitted on 31 Mar 2023

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Open licence - etalab
# Comment l'intelligence artificielle peut révolutionner les techniques de test de logiciels

Moez Krichen

Laboratoire ReDCAD, Université de Sfax, Tunisie

moez.krichen@redcad.org

**Résumé.** Depuis la fin des années 2000, les objets connectés, applications et autres outils numériques innovants foisonnent et ne cessent de se développer. Or, si l'évolution numérique permet de toucher un large public, les bugs peuvent devenir une véritable menace pour la pérennité des grandes entreprises. Dans cet article, nous ferons un bref tour d'horizon des nombreuses stratégies de test des logiciels ainsi que des différentes approches de l'intelligence artificielle. En outre, nous fournissons un aperçu des principaux avantages qui découlent de l'utilisation de méthodes artificielles au cours du processus de test de logiciels. De plus, nous fournissons quelques exemples d'outils basés sur l'intelligence artificielle qui ont été spécifiquement développés dans le but de tester des logiciels.

## 1 Introduction

L'une des grandes craintes des managers et chefs de projet est de voir une série de bugs dans le produit fini. Se rendre compte que votre interface se fige ou ne fonctionne plus peut en effet avoir de graves conséquences.

Omettre de réaliser une phase de tests et d'analyses approfondies semble aujourd'hui extrêmement anodin et en tout cas, peut nuire à l'adhésion ou à la fidélité à un service ou à un produit. Tester son produit – au moment du lancement et pendant les phases d'évolution – est évidemment crucial pour les entreprises s'appuyant sur les outils numériques (6; 9).

Ces dernières années, l'intelligence artificielle (IA, apprentissage profond ; apprentissage automatique) s'est développée rapidement (24; 1; 20; 12; 25; 5). Cela se confirme dans de nombreuses professions (par exemple, la fabrication, la santé, la finance et la logistique), alors pourquoi pas dans le domaine des tests ? Serait-il possible d'utiliser l'IA dans le domaine des tests logiciels ?

Dans les tests de logiciels, l'intelligence artificielle est un mélange d'apprentissage automatique, d'automatisation cognitive, de raisonnement, d'analyse et de traitement du langage naturel (10). L'automatisation cognitive repose sur plusieurs approches technologiques telles que l'exploration de données, la technologie sémantique, l'analyse de texte, l'apprentissage automatique et le traitement du langage naturel. L'utilisation de l'intelligence artificielle dans l'assurance qualité peut aider à surmonter ces conflits et rendre le processus de test logiciel moins fastidieux et automatisé. Voyons donc
comment l'intelligence artificielle a changé la méthode traditionnelle de test de logiciels (14; 3).

Ensuite, dans la section 2, nous rappelons quelques préliminaires sur les tests logiciels. Dans la section 3, nous donnons un bref aperçu des techniques d'intelligence artificielle (IA). La section 4 énumère les principaux avantages de l'utilisation de l'IA dans les tests de logiciels. Dans la section 5, quelques exemples d'outils de test de logiciels basés sur l'IA sont présentés. Enfin, la section 6 conclut l'article et propose quelques orientations pour les travaux futurs.

## 2 Préliminaires sur les tests de logiciels

La pratique consistant à analyser et à valider qu'un produit logiciel ou une application exécute les fonctions pour lesquelles il a été conçu est appelée test logiciel. Les bogues peuvent être évités, les dépenses de développement peuvent être réduites et les performances peuvent être considérablement améliorées grâce aux nombreux avantages des tests.

Il existe une grande variété de types de techniques de test de logiciels, et chacun de ces tests a ses propres objectifs et méthodes :

- Tests unitaires (7) : vérification que la fonctionnalité prévue de chaque unité logicielle a été atteinte. Le plus petit composant d'une application pouvant être testé est appelé une unité.

- Tests d'intégration (21) : s'assurer que les composants individuels ou les fonctionnalités à l'intérieur d'un logiciel fonctionnent de manière cohérente.

- Tests d'acceptation (23) : effectuer des tests pour déterminer si l'ensemble du système fonctionne ou non comme prévu.

- Tests fonctionnels (22) : Vérifier la fonctionnalité de l'application en simulant divers scénarios commerciaux conformément aux exigences fonctionnelles. Tester les fonctionnalités à l'aide d'une boîte noire est une pratique courante de nos jours.

- Test d'utilisabilité (4) : Validation de la capacité d'un utilisateur à réaliser une tâche à l'aide d'un programme informatique ou d'une application web.

- Test de résistance (19) : Mettre le système à rude épreuve afin de déterminer son point de rupture. D'une manière générale, cela relève de la catégorie des tests non fonctionnels.

- Tests de performances (2) : Mettre le logiciel à l'épreuve en simulant diverses exigences professionnelles. Par exemple, des tests de charge sont effectués pour évaluer les performances dans des situations similaires à celles rencontrées dans la vie réelle.

- Test de régression (13) : vérification pour voir si les fonctionnalités nouvellement ajoutées causent des problèmes de fonctionnement ou aggravent les choses.

- Le test de charge (15; 18; 17) : e processus consistant à simuler la demande d'un logiciel, d'une application ou d'un site Web de manière à tester ou à démontrer son comportement dans diverses conditions.

- Le test basé sur un modèle (16; 8; 11) : type de méthode de test de logiciel qui utilise le modèle d'un système testé pour générer des cas de test. Les outils
d'automatisation des tests qui utilisent cette approche peuvent créer des tests
automatiquement à partir du modèle ou semi-automatiquement avec certaines
entrées de l'utilisateur.

3 Préliminaires sur l'Intelligence Artificielle

L'intelligence artificielle est un vaste sous-domaine de l'informatique qui se concentre
sur le développement d'ordinateurs intelligents capables d'effectuer des activités qui
nécessiteraient normalement la participation de personnes intelligentes. L'intelligence
artificielle (IA) peut être décomposée en quatre sous-domaines distincts, chacun se
distinguant par le type et le degré de difficulté des tâches qu'il peut gérer :

— Machines réactives : comme son nom l'indique, une machine réactive est uniquement capable d'utiliser son intellect pour voir le monde devant elle et y réagir. Ce type de machine respecte les principes les plus fondamentaux de l'intelligence artificielle (IA). Puisqu'une machine réactive n'a pas la capacité de maintenir la mémoire, elle est incapable de s'appuyer sur ses expériences antérieures pour prendre des décisions qui affectent le présent. Parce que la perception directe du monde nécessite une programmation hautement spécialisée, les machines réactives ne peuvent être construites que pour gérer un certain nombre de tâches différentes.

— Mémoire limitée : Lors de la collecte d'informations et de l'examen des options probables, l'IA à mémoire limitée a la capacité de se souvenir des faits et des prévisions précédents ; c'est en fait la même chose que de regarder dans le passé pour trouver des indices sur ce qui pourrait arriver dans le futur. L'intelligence artificielle à mémoire limitée est plus compliquée et offre plus de possibilités que les robots réactifs. Contraintes de mémoire Soit en formant continuellement un modèle à interpréter et exploiter de nouvelles données, soit en créant un écosystème d'IA afin que les modèles puissent être automatiquement formés et renouvelés, l'intelligence artificielle (IA) est produite lorsque l'une des deux choses se produit.

— Théorie de l'esprit : En termes simples, la théorie de l'esprit est purement spéculative à ce stade. Nous n'avons pas encore atteint le niveau de compétence technologique et scientifique requis pour passer au niveau supérieur de l'intelligence artificielle (IA). Comprendre que les autres créatures vivantes ont des pensées et des émotions qui peuvent influencer sa propre conduite est la base psychologique sur laquelle l'idée est construite. Cette compréhension sous-tend le concept. Dans le contexte des machines d'intelligence artificielle (IA), cela impliquerait que l'IA pourrait comprendre comment les gens, les animaux et d'autres machines se sentent et prennent des décisions grâce à l'auto-réflexion et à la détermination, et que l'IA utiliserait ensuite les informations qu'ils ont appris à faire. jugements par eux-mêmes. Pour créer une relation à double sens entre les gens et l'intelligence artificielle, les ordinateurs devraient essentiellement être capables de comprendre et d'interpréter l'idée d'un "esprit", ainsi que les changements d'émotion qui se produisent lors de la prise de décision et une grande variété d'autres notions psychologiques, en temps réel.
— Conscience de soi : Le but ultime de l'intelligence artificielle est d'atteindre la conscience de soi, ce qui ne sera pas possible tant que la théorie de l'esprit n'aura pas été prouvée, ce qui n'arrivera pas avant très longtemps. Ce type d'intelligence artificielle est capable d'une conscience de niveau humain et comprend non seulement sa propre existence dans le monde, mais aussi la présence des autres et leurs états émotionnels. Il serait capable de discerner quels pourraient être les besoins des autres en se basant non seulement sur ce que les autres leur communiquent mais aussi sur la manière dont ils transmettent cette information. Pour que l'intelligence artificielle atteigne la conscience de soi, les chercheurs humains doivent d'abord saisir l'idée fondamentale derrière la conscience, puis ils doivent trouver comment reproduire mécaniquement cette compréhension afin de l'inclure dans les systèmes d'IA.

# 4 Avantages de l'utilisation de l'IA dans les tests de logiciels

Le principal avantage de l'IA est la diminution de l'engagement direct du développeur ou du testeur, même dans les opérations les plus routinières. À titre d'illustration, la plupart (sinon la totalité) des solutions d'automatisation de test conventionnelles exécutent des tests et fournissent des résultats. La plupart des gens exécutent tous les tests ou un ensemble prédéterminé car ils ne savent pas lesquels exécuter. Et si un bot doté de capacités d'IA pouvait évaluer l'état actuel des tests, les modifications récentes du code, la couverture du code et d'autres données, choisir les tests à exécuter, puis les exécuter ? Une application de l'IA est lorsque les décisions sont prises sur la base de données changeantes. Les principaux avantages de l'utilisation des approches d'IA pour les tests de logiciels sont ensuite abordés plus en détail.

## 4.1 Écriture automatique des cas de test

L'énorme application de l'apprentissage automatique/intelligence artificielle dans les tests automatisés a consisté à écrire automatiquement des cas de test pour des applications ou des logiciels. Au début, nous avons entendu parler des robots d'indexation Web ainsi que du "spidering" (navigation sur un site Web/logiciel de manière méthodique et automatisée à l'aide d'un programme ou d'un script automatisé) qui aidait à trouver 404 pages mortes. Les cas d'utilisation commerciale des logiciels testés ont maintenant été étudiés en profondeur par des outils d'apprentissage automatique et d'IA. Ils doivent seulement être dirigés vers le programme. Ils explorent et collectent automatiquement des informations sur les pages HTML, les temps de chargement des pages et les captures d'écran au fur et à mesure qu'ils apprennent à utiliser l'application. Ils recueillent suffisamment d'informations à partir de l'application au fil du temps pour pouvoir entraîner le modèle d'apprentissage automatique sur les comportements d'application anticipés.
## 4.2 Délai de mise sur le marché rapide

L'intégration des deux avantages mentionnés ci-dessus aide les développeurs ainsi que les exécuteurs. L'utilisation de l'intelligence artificielle dans les tests d'assurance qualité peut conduire à un meilleur développement d'applications avec les périodes de test les plus courtes. Par conséquent, le produit final peut être annoncé, commercialisé et utilisé à des fins commerciales au plus tôt. Par conséquent, les développeurs de logiciels peuvent créer le produit plus rapidement avec moins de bogues, et les utilisateurs peuvent commencer à utiliser le produit plus tôt et à temps pour le client final. Il s'agit donc d'une situation gagnant-gagnant pour chaque partie impliquée.

## 4.3 Réponse/Commentaires les plus précoces

Comme la procédure de test basée sur l'IA est automatisée, les développeurs recevront un rapport de retour rapide sur l'efficacité et le fonctionnement des applications. De plus, les litiges et les bogues seront résolus rapidement, et les produits pourront ainsi être mis sur le marché rapidement.

## 4.4 Analyse pronostique

Les tests basés sur l'IA peuvent utiliser les données client et les données d'analyse existantes pour découvrir comment les demandes des utilisateurs et les comportements de navigation des utilisateurs évolueront à l'avenir. Cela garantit que les développeurs et les testeurs QA ont une longueur d'avance sur le consommateur et ses exigences. Les solutions basées sur l'intelligence artificielle permettront d'améliorer la qualité de service et de mieux prévoir les besoins croissants.

## 4.5 Plate-forme intégrée

La procédure complète est effectuée sur des plates-formes embarquées et intégrées. Cela permettra aux développeurs de lancer plus facilement le site sans difficulté sur le site du client. Par conséquent, la procédure de mise en œuvre deviendra plus molle. Les applications basées sur l'IA continuent d'être largement acceptées dans le domaine des tests de logiciels et, à l'avenir, la technologie contribuera à améliorer les cadres et outils existants pour cibler des problèmes spécifiques.

## 4.6 Réduction des tests basés sur l'interface utilisateur

L'automatisation sans interface utilisateur est un autre développement apporté par l'apprentissage automatique/IA dans les tests automatisés. Les tests de performance, d'intégration d'unité, de vulnérabilité et de sécurité sont des exemples de tests non fonctionnels qui sont également courants. Des techniques basées sur l'apprentissage automatique et l'intelligence artificielle peuvent être utilisées pour développer des tests dans ces niveaux. De plus, l'application de l'IA/ML à divers journaux d'application, y compris le code source et les journaux du système de surveillance de la production, contribue au développement de la capacité de l'écosystème logiciel général à prévoir les erreurs, à s'auto-réparer, à recevoir des alertes précoces et à évoluer automatiquement.
Les coûts, les temps, les scripts et les erreurs de test globaux sont réduits avec les tests alimentés par l'IA. C'est ce que nous désirons, n'est-ce pas ? Il ne fait aucun doute que l'intelligence artificielle (IA) et l'apprentissage automatique révolutionneront le secteur de l'assurance qualité (AQ), ce qui en fera une tendance brûlante dans un avenir proche. Il est plus que temps que les équipes d'assurance qualité commencent à utiliser des méthodes basées sur l'IA pour gérer, gérer et tester les logiciels.

## 4.7 Meilleure couverture du code

Les paramètres d'une méthode sous test doivent être transmis, ainsi que la manière dont les sous-marins/simulacres doivent être initialisés pour accéder à ce code, selon les approches d'IA qui identifient automatiquement le code qui n'est pas couvert par les suites de tests existantes et parcourent la chaîne de contrôle du code source. Ainsi, en utilisant des paramètres modifiés, ces stratégies peuvent créer elles-mêmes de nouveaux tests unitaires, augmentant ainsi la couverture globale du code du projet.

## 4.8 Fiabilité améliorée

De petites modifications de l'application (telles que renommer ou étendre un champ) effectuées par les développeurs de logiciels entraînent fréquemment l'échec des tests Senlenium ou UFT. La plupart des professionnels de l'assurance qualité sont aux prises avec ce problème. Vous n'avez plus besoin de modifier le test à chaque fois que les développeurs font un petit changement car l'IA peut désormais mettre à jour le code et le rendre plus fiable et gérable. Les outils utilisant l'intelligence artificielle et l'apprentissage automatique sont capables de lire les changements dans une application et de comprendre leurs relations. De tels scripts de test d'auto-rétablissement détectent les changements dans l'application et commencent à apprendre le modèle des changements ; ils peuvent alors détecter un changement au moment de l'exécution sans aucune intervention du développeur ou du testeur. Les scripts d'apprentissage automatique s'adaptent automatiquement au fur et à mesure que l'application change, réduisant ainsi la fragilité et l'instabilité des tests automatisés.

## 4.9 Amélioration de la qualité

Avec l'emploi d'une intelligence artificielle encourageante, la qualité du logiciel se développera considérablement. Étant donné que toutes les techniques de test seront effectuées automatiquement et avec une certitude sûre, la qualité sera considérablement améliorée. De plus, la longévité de l'application sera considérablement améliorée ainsi que l'efficacité du marché améliorée.

## 4.10 Test de validation visuelle automatisé

Les tests visuels automatisés sont difficiles car il existe d'innombrables scénarios de bogues possibles. Les testeurs doivent visualiser l'état d'esprit des utilisateurs et voir l'interface utilisateur avec leurs yeux. C'est difficile même pour un testeur manuel, encore moins pour un programme automatisé. C'est pourquoi le passage des tests
visuels aux solutions automatisées est lié à des spécifications et des détails réticents - les experts en assurance qualité visent à définir la condition avec précision, mais se retrouvent avec un fichier foiré - ce qui est pratiquement impossible à appliquer. L'intelligence artificielle analyse l'environnement dans lequel l'application s'exécute (systèmes d'exploitation, navigateurs, configuration matérielle requise) et détecte les normes d'interface utilisateur applicables. Contrairement aux tests de validation visuelle automatisés réguliers, les scénarios alimentés par l'IA s'adaptent aux besoins des consommateurs.

# 5 Exemples d'outils

## 5.1 INFER

Facebook a développé un programme appelé INFER<fnref n="1" />, qui est une technologie artificiellement intelligente, pour trouver les défauts de ses applications mobiles avant qu'elles ne soient mises à la disposition des utilisateurs. Et la société exige maintenant que tous ses clients testent leur logiciel de cette manière. La société a rendu le langage de programmation r open source, ce qui signifie que son code source est désormais accessible à toute entreprise ou développeur indépendant à la recherche de moyens innovants pour déboguer leurs applications. Il analyse le logiciel et spécule ou élabore des théories à son sujet de la même manière qu'une personne le ferait, tout comme le ferait un humain. D'autre part, contrairement aux humains, il peut lire des milliers de lignes de code en quelques minutes afin de localiser les erreurs potentielles.

## 5.2 Appvance IQ

Appvance IQ<fnref n="2" /> est une plate-forme de test autonome continue pilotée par l'IA qui offre des améliorations de productivité révolutionnaires dans le domaine de la création et de l'exécution des tests. Le premier objectif est atteint grâce à l'utilisation de l'IA pour générer des cas de test autonomes et la création de tests sans code, tandis que le deuxième objectif est atteint grâce à l'utilisation de tests fonctionnels, de performances et de sécurité unifiés. La convivialité d'Appvance IQ peut être attribuée, en partie, au fait qu'il peut simplement se connecter aux outils DevOps et exécuter des scripts natifs importés d'autres plates-formes d'automatisation. Appvance IQ est capable d'effectuer une sélection complète de tests fonctionnels, unitaires, de performance, de charge et de sécurité. Grâce à l'outil d'exécution de tests ultra-rapide d'AIQ et à la possibilité de tester simultanément sur des milliers de navigateurs ou de nombreux appareils, le temps nécessaire à l'exécution de vos tests a été réduit de 99,99

## 5.3 Aubergine IA

Eggplant AI<fnref n="3" />, développé par TestPlant, utilise l'IA pour créer automatiquement des suites de tests et optimiser l'exécution des tests afin de détecter les défauts et de fournir

<footnote n="1">1. https://fbenfer.com/</footnote>

<footnote n="2">2. https://appvance.ai/appvance-iq</footnote>

<footnote n="3">3. https://www.eggplantsoftware.com/</footnote>
une vue plus complète de l'expérience utilisateur. Eggplant AI permet la création de modèles de type organigramme pour capturer les états d'application, les actions et les navigations entre eux. Un modèle typique peut contenir plusieurs blocs, dont chacun représente un état d'application ou un écran au sein de l'application. Chaque bloc peut alors contenir plusieurs actions, qui représentent les différentes actions disponibles sur cet écran particulier. Chaque action au sein d'un bloc peut ensuite être reliée par une flèche à un autre bloc (état/écran de l'application), indiquant que cette action spécifique conduira l'utilisateur au bloc ou à l'état/écran connecté. Cela permet de créer facilement un méga modèle à l'aide d'Eggplant AI pour démontrer comment les différents états et écrans d'un ensemble d'applications peuvent interagir les uns avec les autres.

## 5.4 EvoSuite

EvoSuite est un outil qui génère automatiquement des tests unitaires pour les logiciels Java. Pour générer des tests JUnit, EvoSuite utilise un algorithme évolutif. EvoSuite peut être lancé à partir de la ligne de commande et dispose de plugins pour Maven, IntelliJ et Eclipse. EvoSuite a trouvé des milliers de bogues potentiels dans plus d'une centaine de projets de logiciels open source et plusieurs systèmes industriels. Afin de satisfaire un objectif de couverture, EvoSuite utilise une nouvelle méthodologie hybride qui crée et améliore des ensembles de tests complets. En ajoutant quelques ensembles d'assertions efficaces qui décrivent succinctement le comportement actuel des suites de tests qui ont été créées, EvoSuite fait des suggestions pour des oracles potentiels. Ces assertions donnent au développeur la possibilité de repérer les écarts par rapport au comportement souhaité et d'enregistrer l'état actuel afin de se prémunir contre les défauts potentiels susceptibles de rompre ce comportement à l'avenir.

# 6 Conclusion et travaux futurs

Bien qu'elle s'oriente vers des tests autonomes, l'utilisation de l'IA dans le développement de logiciels en est encore à ses balbutiements et le niveau d'autonomie est bien inférieur à celui que l'on trouve dans des domaines de travail plus avancés comme les systèmes de conduite autonome ou la commande vocale. L'objectif de l'utilisation de l'IA dans les outils de test de logiciels est de simplifier le cycle de vie du développement logiciel. L'IA peut être utilisée pour automatiser et réduire la quantité de travail répétitif et laborieux dans les tests de logiciels en appliquant le raisonnement, la résolution de problèmes et, dans certaines situations, l'apprentissage automatique. Les solutions de test basées sur l'IA d'aujourd'hui mettent l'accent sur les tests unitaires, l'intégration, l'affichage et la création de données de test et sont commercialisées comme étant utiles aux testeurs, comme la réparation automatique des scripts et l'évaluation des risques. Les nouvelles IA ne sont pas encore incluses dans les outils développés, mais il est prévu qu'elles soient accessibles demain et permettent le support de tests de plus haut niveau (intégration, système).
Références

[1] Qasem Abu Al-Haija, Moez Krichen, and Wejdan Abu Elhaija. Machine-learning-based darknet traffic detection system for iot applications. *Electronics*, 11(4):556, 2022.

[2] Amira Ali, Huda Amin Maghawry, and Nagwa Badr. Performance testing as a service using cloud computing environment : A survey. *Journal of Software : Evolution and Process*, page e2492, 2022.

[3] Naresh Chauhan et al. Role of machine learning in software testing. In *2021 5th International Conference on Information Systems and Computer Networks (ISCON)*, pages 1–5. IEEE, 2021.

[4] Morten Hertzum. Usability testing : A practitioner's guide to evaluating the user experience. *Synthesis Lectures on Human-Centered Informatics*, 13(1):i–105, 2020.

[5] Olfa Hrizi, Karim Gasmi, Ibtihel Ben Ltaifa, Hamoud Alshammari, Hanen Karamti, Moez Krichen, Lassaad Ben Ammar, and Mahmood A Mahmood. Tuberculosis disease diagnosis based on an optimized machine learning model. *Journal of Healthcare Engineering*, 2022, 2022.

[6] Kainat Khan and Sachin Yadav. A literature review on software testing techniques. *Optimization of Automated Software Testing Using Meta-Heuristic Techniques*, pages 59–75, 2022.

[7] Vladimir Khorikov. *Unit Testing Principles, Practices, and Patterns*. Simon and Schuster, 2020.

[8] Moez Krichen. *Model-based testing for real-time systems*. PhD thesis, PhD thesis, PhD thesis, Universit Joseph Fourier (December 2007), 2007.

[9] Moez Krichen. Improving formal verification and testing techniques for internet of things and smart cities. *Mobile networks and applications*, pages 1–12, 2019.

[10] Moez Krichen. How artificial intelligence can revolutionize software testing techniques. In *Innovations in Bio-Inspired Computing and Applications : Proceedings of the 13th International Conference on Innovations in Bio-Inspired Computing and Applications (IBICA 2022) Held During December 15-17, 2022*, pages 189–198. Springer Nature Switzerland Cham, 2023.

[11] Moez Krichen, Afef Jmal Maâlej, and Mariam Lahami. A model-based approach to combine conformance and load tests : an ehealth case study. *International Journal of Critical Computer-Based Systems*, 8(3-4):282–310, 2018.

[12] Moez Krichen, Alaeddine Mihoub, Mohammed Y Alzahrani, Wilfried Yves Hamilton Adoni, and Tarik Nahhal. Are formal methods applicable to machine learning and artificial intelligence? In *2022 2nd International Conference of Smart Systems and Emerging Technologies (SMARTTECH)*, pages 48–53. IEEE, 2022.

[13] Mariam Lahami and Moez Krichen. A survey on runtime testing of dynamically adaptable and distributed systems. *Software Quality Journal*, 29(2):555–593, 2021.
[14] Cuauhtémoc López-Martín. Machine learning techniques for software testing effort prediction. *Software Quality Journal*, 30(1):65–100, 2022.

[15] Afef Jmal Maâlej, Manel Hamza, Moez Krichen, and Mohamed Jmaiel. Automated significant load testing for ws-bpel compositions. In *2013 IEEE sixth international conference on software testing, verification and validation workshops*, pages 144–153. IEEE, 2013.

[16] Afef Jmal Maâlej and Moez Krichen. A model based approach to combine load and functional tests for service oriented architectures. In *VECoS*, pages 123–140, 2016.

[17] Afef Jmal Maâlej, Moez Krichen, and Mohamed Jmaiel. Conformance testing of ws-bpel compositions under various load conditions. In *2012 IEEE 36th annual computer software and applications conference*, pages 371–371. IEEE, 2012.

[18] Afef Jmal Maâlej, Moez Krichen, and Mohamed Jmaiel. Model-based conformance testing of ws-bpel compositions. In *2012 IEEE 36th annual computer software and applications conference workshops*, pages 452–457. IEEE, 2012.

[19] Afef Jmal Maâlej, Mariam Lahami, Moez Krichen, and Mohamed Jmaïel. Distributed and resource-aware load testing of ws-bpel compositions. In *ICEIS (2)*, pages 29–38, 2018.

[20] Alaeddine Mihoub, Ouíssem Ben Fredj, Omar Cheikhrouhou, Abdelouahid Derhab, and Moez Krichen. Denial of service attack detection and mitigation for internet of things using looking-back-enabled machine learning techniques. *Computers & Electrical Engineering*, 98:107716, 2022.

[21] S Phani Shashank, Praneeth Chakka, and D Vijay Kumar. A systematic literature survey of integration testing in component-based software engineering. In *2010 International Conference on Computer and Communication Technology (ICCCT)*, pages 562–568. IEEE, 2010.

[22] Porfirio Tramontana, Domenico Amalfitano, Nicola Amatucci, and Anna Rita Fasolino. Automated functional testing of mobile applications: a systematic mapping study. *Software Quality Journal*, 27(1):149–201, 2019.

[23] Jack van Heugten Breurkes, Fabian Gilson, and Matthias Galster. Overlap between automated unit and acceptance testing—a systematic literature review. In *Proceedings of the International Conference on Evaluation and Assessment in Software Engineering 2022*, pages 80–89, 2022.

[24] Caiming Zhang and Yang Lu. Study on artificial intelligence: The state of the art and future prospects. *Journal of Industrial Information Integration*, 23:100224, 2021.

[25] Salah Zidi, Alaeddine Mihoub, Saeed Mian Qaisar, Moez Krichen, and Qasem Abu Al-Haija. Theft detection dataset for benchmarking and machine learning based classification in a smart grid environment. *Journal of King Saud University-Computer and Information Sciences*, 35(1):13–25, 2023.