$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Architecture système et résumé du prototype :
Cette recherche présente un système prototype amélioré et adaptable, PreventivtativeTestPro, qui illustre une approche proactive d’ingénierie qualité utilisant des données d’observabilité et de grands modèles de langage (LLM) pour améliorer davantage la résolution des problèmes. Le système vise à résoudre les problèmes modernes de livraison de logiciels en automatisant la détection d’anomalies, l’analyse des causes profondes, ainsi que l’exécution et le développement intelligents de cas de test pour une couverture non traitée en utilisant la surveillance synthétique, les données d’observabilité et l’intégration GenAI. L’architecture est modulaire et comprend trois composants principaux : le collecteur et analyseur de données d’observabilité, la couche d’intelligence pilotée par GenAI, et le moteur d’orchestration et d’exécution des tests, comme spécifié en détail à la Figure 1.

Figure 1 : L’entrée-sortie du système proposé. Les données d’observabilité, ainsi que les résultats des observateurs, le dépôt de tests et les règles de cartographie, sont fournies en entrée aux côtés des bancs d’essai BHRAMI, qui construisent des bancs d’essai pilotés par l’IA pour renforcer la robustesse des cas de test. Le système proposé génère des instruments d’anomalies, des recommandations générées par l’IA, l’exécution de cas de test pertinents, la documentation et le rapport, ainsi que l’identification et la création de cas de test manquants. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
La figure 2 présente l’architecture de l’approche suggérée. La figure illustre l’entrée, le traitement et la sortie du système. Il offre également une description complète du système, qui est ensuite traduite en une explication pour mieux comprendre les caractéristiques sous-jacentes.

Figure 2 : Architecture système du système proposé avec collecteur et analyseur de données d’observabilité, couche d’intelligence pilotée par GenAI, et moteur d’orchestration et d’exécution de tests. Cette figure illustre l’architecture interne du système PreventivtativeTestPro, segmentée en trois couches : la couche Observability Collector agrège des données provenant de multiples sources, y compris les événements du navigateur, les journaux, les fichiers HAR, les journaux backend, les métriques et les traces. La couche d’intelligence générative d’IA utilise ces données pour effectuer une analyse des causes profondes, prioriser les anomalies et créer de manière autonome des cas de test (UI, API, manuel) et de la documentation grâce à l’utilisation de LLM. Le module BHARAMARI établit également de nouveaux bancs d’essai. Test Orchestration and Execution Engine cartographie les divergences en cas de test, exécute les tests simultanément, évalue les résultats et informe les équipes d’ingénierie, les systèmes de tickets et les tableaux de bord pour une supervision en temps réel et un suivi de résolution. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Le module Collecteur et Analyseur de Données d’Observabilité sert de système sensoriel de la plateforme, collectant en continu les données de l’application en évaluation à grande échelle, avec de multiples aspects. Dans le cas de la surveillance frontend, des agents de surveillance synthétiques sont déployés pour surveiller les événements côté navigateur, tels que les structures du Document Object Model (DOM), les actions des utilisateurs, telles que les clics, les flotteurs et les entrées, ainsi que les fichiers HAR capturant les informations de requête et de réponse réseau et API. PreventativeTestPro est également intégré à OBSERVER pour augmenter la capacité des navigateurs. La surveillance backend vise l’analyse des journaux, dans laquelle des informations d’observabilité côté serveur sont demandées et traitées, incluant les journaux d’application, les messages d’erreur, d’information et de débogage, les journaux de trace de pile et d’exceptions, les métriques de performance telles que les temps de réponse, et le traçage utilisant des technologies telles qu’OpenTelemetry ou New Relic. Le système fonctionnera avec des agents synthétiques qui simulent le trafic et l’interaction des utilisateurs, et les collecteurs de journal condensent les données entrantes en temps réel. Les données collectées sont ensuite normalisées en formats structurés et transmises à d’autres unités de traitement pour être analysées plus près.
L’essence de PreventativeTestPro est une couche d’intelligence pilotée par GenAI qui utilise de grands modèles de langage (LLM) tels que GPT pour lire et analyser les données d’observabilité et contextualiser et générer des réponses. Le module effectue une analyse de la cause fondamentale : le processus d’interprétation des journaux et des traces de cause fondamentale pour expliquer les défauts techniques en termes compréhensibles, tels qu’une NullPointerException sur une ligne de code particulière et la cause supposée du problème, comme une variable non initialisée. Dans la génération de cas de test, le système utilise des auto-tests générés en convertissant des motifs d’exception ou une séquence d’événements en scripts de test exécutables, par exemple des tests Selenium ou API, mais produit également des procédures de test lisibles par l’humain que le personnel de l’Assurance Qualité peut exécuter. Les tests API ont évolué via la transformation des journaux HAR et de trace en une séquence de requêtes API avec les assertions attendues, et tous les cas de test générés sont encore améliorés grâce à des bancs de tests efficaces grâce à l’intégration avec BHRAMARI. D’autres améliorations, des améliorations de la couverture des tests et des opportunités d’intégration CI/CD sont suggérées dans le système de recommandation, selon le comportement du système analysé. Le moteur d’IA utilise des données structurées d’observabilité via l’ingénierie des prompts et l’enrichissement du contexte pour présenter le contexte journal avec des modèles d’invite qui transmettent des requêtes structurées au LLM, et enfin génère des sorties sous forme fonctionnelle, telles que des extraits de code, des spécifications de cas de test et une documentation en langage naturel.
Le module Test Orchestration and Execution Engine gère la priorité des tests, la planification et l’exécution, permettant une validation automatisée basée sur les détails de couverture des modifications de code, les tags et la cartographie des anomalies. La correspondance et la sélection du test consistent à associer des anomalies dans les cartes ou les motifs d’instrumentation à des cas de test connus à l’aide d’un moteur de règles de cartographie, puis à exécuter les cas de test conformément à la cartographie établie. Les fonctionnalités d’exécution concurrente de tests permettent d’exécuter simultanément de nombreux types de tests, tels que des tests fonctionnels, de performance ou de sécurité dans différents environnements, et de coordonner l’utilisation de Selenium, JMeter et ZAP comme instruments dans les pipelines d’automatisation. L’implémentation de la boucle de rétroaction garantit que les résultats des exécutions sont enregistrés, et en cas d’échec de test, les modifications sont communiquées aux systèmes de support, y compris Jira et Azure DevOps, pour les suivre et les résoudre.
Hypothèse :
H1 (Efficacité opérationnelle) : Il est avancé que la fusion des données d’observabilité et du renseignement piloté par l’IA améliorera les indicateurs opérationnels, notamment en diminuant le temps moyen de résolution (H1a), le temps moyen d’analyse (H1b), le temps moyen de détection des problèmes de production (H1c) et le temps moyen de déploiement des correctifs en production (H1d). Ces changements devraient faciliter le respect des exigences d’Accord de niveau de service (SLA) (H1e) en accélérant la détection, l’analyse et le déploiement tout en limitant les temps d’arrêt système au minimum.
H2 (Efficacité des tests) : On pense également que l’efficacité des tests logiciels s’améliorera avec une couverture de test accrue (H2a), l’exécution de cas de test en parallèle (H2b) et la priorisation intelligente des tests (H2c). Les recommandations générées par l’IA (H2d) devraient également aider à la fois pour les tests et les flux de travail opérationnels. Cela aidera à détecter les bugs plus rapidement, à accélérer les boucles de rétroaction et à soutenir des pratiques d’assurance qualité préventives et durables.
Portée et public :
Ce prototype présente la conception globale du système, l’idée principale, ainsi que la manière de configurer et d’exécuter le cadre PreventivtativeTestPro étape par étape. Il explique aussi en détail comment configurer les bons bancs d’essai/entrées d’échantillons et donne des conseils pour résoudre les problèmes. Le contenu s’adresse aux ingénieurs en qualité logicielle qui connaissent déjà les bases de Java et souhaitent apprendre à utiliser les tests préventifs pour rendre les logiciels plus fiables et efficaces.
Configuration de l’environnement :
Le Fichier Supplémentaire 1 contient une description étape par étape et un programme nécessaires pour communiquer avec PreventivTestPro. Cela inclut des instructions pour installer l’environnement nécessaire, comment démarrer et arrêter les services de l’outil, ainsi qu’une explication claire de l’utilisation fondamentale de l’outil. Pour obtenir une documentation plus détaillée, ainsi que des instructions sur l’utilisation des outils avancés, des instructions de configuration et d’autres détails organisationnels, consultez les sources officielles GitHub dédiées au projet : la page Wiki spécifique à l’emplacement du https://github.com/sohambpatel/PreventativeTests/wiki et le README principal à https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Exemples d’entrées :
Les fichiers d’entrée d’exemple se trouvent dans le dépôt GitHub : https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Le framework peut exécuter immédiatement les cas de test prédéfinis et les ensembles de données de ces fichiers. Ils sont utilisés comme entrées de référence pour vérifier la configuration de l’environnement et obtenir les mêmes résultats que ceux décrits dans ce protocole.
Exemples de sorties :
Le dépôt GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) contient des échantillons concrets des données de sortie du cadre de test préventif au format brut. Grâce à ces fichiers, les utilisateurs peuvent consulter directement la mise en page et les détails des rapports et métriques générés, démontrant les résultats obtenus par l’outil durant son fonctionnement. Ce guide est pertinent pour connaître le pipeline de données et confirmer le comportement anticipé du cadre lors de la recréation du processus expérimental.
Prototype d’exécution :
Cette section propose un guide détaillé, étape par étape, sur l’utilisation du framework PreventivTestPro. Pour aider les utilisateurs à reproduire le flux de travail, chaque étape est décrite dans l’ordre. Cette section présente les étapes d’exécution dans un format structuré afin de faciliter la reproduction des résultats, de signaler les points de contrôle importants et de garantir que le cadre PreventivatTestPro puisse être utilisé de manière cohérente à travers différents contextes expérimentaux ou opérationnels.
Dans cette étape, l’interface graphique PreventivtativeTestPro peut être utilisée pour choisir le meilleur flux de travail pour les tests préventifs. La figure 3 montre cinq choix, chacun représentant une étape différente du processus de test : exécuter des tests en parallèle, créer la suite de tests en surveillant les résultats en priorisant les cas existants, créer des cas de test manuels, créer des cas automatisés et trouver la cause profonde. Lorsque l’utilisateur fait un choix, le flux de travail désigné commence. Ensuite, des modes supplémentaires (comme la génération de cas de test pilotée par l’IA ou l’analyse de cause profonde) peuvent être ajoutés aux étapes ultérieures. Cette interface bien organisée permet de réaliser des études de tests préventifs qui peuvent être répétées et décomposées en parties plus petites.

Figure 3 : Interface utilisateur 1 du système. Cette figure montre l’interface utilisateur de PreventativeTestPro, qui permet de choisir parmi cinq façons différentes de réaliser des tests préventifs : 1. Test préventif, exécution parallèle : début des tests, 2. Test préventif, finalisation de la suite de tests basée sur la surveillance d’applications synthétiques, 3. Test préventif, génération de cas de test manuels via GenAI, 4. Test préventif, génération de cas automatisés via GenAI, 5. Test préventif, Analyse de la cause profonde avec GenAI. Une seule option peut être choisie à la fois. La conception modulaire facilite la réalisation de tests préventifs et ajoute la création et le diagnostic de tests alimentés par l’IA. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
La figure 4 montre l’interface d’exécution parallèle du framework. À cette étape, l’utilisateur saisit l’URL de l’application qu’il souhaite tester ainsi que le chemin absolu vers le fichier propriétés contenant les paramètres de configuration. Une fois les entrées définies, l’utilisateur peut commencer à exécuter les tests en même temps en cliquant sur le bouton Démarrer les tests, qui surveille également le site web testé et génère les journaux de sécurité, de performance, de console et JavaScript. On peut arrêter l’exécution en cours en cliquant sur le bouton Arrêter les tests. Le bouton Obtenir des recommandations permet d’obtenir des informations pilotées par l’IA à partir des journaux enregistrés. Cette conception garantit que plusieurs catégories de tests (fonctionnelles, performances et sécurité) s’exécutent simultanément, ce qui facilite la détection des problèmes plus rapidement.

Figure 4 : Interface utilisateur 2 du système. Cette figure montre le mode d’exécution parallèle du framework PreventativeTestPro. L’utilisateur spécifie l’URL de l’application cible ainsi que le chemin vers un fichier propriétés contenant les détails de configuration. Les options incluent Start Testing (pour exécuter en parallèle des tests fonctionnels, de sécurité et de performance et enregistrer les journaux), Arrêter les tests (pour arrêter l’exécution) et Obtenir des recommandations (pour obtenir des insights pilotés par l’IA à partir des journaux et des métriques). Veuillez cliquer ici pour voir une version agrandie de cette figurine.
La figure 5 montre l’interface de finalisation des tests basée sur la surveillance du cadre PreventivTestPro. À cette étape, l’utilisateur définit le chemin pour le fichier de sortie de surveillance, la requête JSON pour obtenir les nœuds d’erreur ou d’exception, et le chemin du dépôt de test pour sauvegarder les cas créés. Une fois les entrées définies, l’utilisateur peut d’abord obtenir les noms de la classe et de la méthode qui les accompagnent, puis trier les cas de test à partir de la sélection de test en fonction de la classe et de la méthode trouvées. Cette étape de priorisation montre comment utiliser les données de surveillance pour classer efficacement les cas testés.

Figure 5 : Interface utilisateur 3 du système. Cette figure montre comment prioriser une suite de tests dans le cadre PreventivtativeTestPro en utilisant des sorties de surveillance synthétiques. L’utilisateur tape le chemin vers le fichier de sortie de surveillance, le chemin JSON pour obtenir les exceptions/erreurs, et le chemin vers le dépôt de test (hors ligne). Les options Get Class/Method Name et Get Test Cases peuvent être utilisées pour transformer les anomalies de mappage en cas de test que l’on peut exécuter. Cela garantit que les problèmes d’exécution sont inclus dans le processus de test. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
La figure 6 montre l’interface de génération manuelle de cas de test de PreventativeTestPro. À cette étape, l’utilisateur indique au programme où trouver le fichier de trace de pile qui montre l’anomalie en fournissant le chemin absolu vers le fichier de trace de pile et le chemin vers le fichier de propriétés de configuration. Une fois les entrées définies, on peut lancer l’option Générer des cas de test, qui transformera l’anomalie en cas de test manuels structurés. Cela garantit que les erreurs d’exécution déjà produites sont toujours incluses dans le processus de test. Le cadre facilite la création de cas de test en automatisant le processus. Cela réduit le travail manuel, améliore la couverture des tests et rend les tests plus fiables, et évite que le même problème ne se reproduise. Cette étape est un lien très important entre la détection des problèmes et la garantie que la qualité est bonne avant qu’elle ne se produise.

Figure 6 : interface utilisateur 3 du système. Cette figure montre l’interface de génération de cas de test de PreventativeTestPro. Il transforme les traces de pile d’anomalies en cas de test manuels dans le Behavior Driven Development (BDD) qui peuvent être utilisés. L’utilisateur donne les chemins vers le fichier de trace de la pile et le fichier de propriétés, puis clique sur « Générer des cas de test » pour créer automatiquement des cas correspondant à la défaillance trouvée. Cela garantit que les problèmes d’exécution sont toujours transformés en tests de régression à répéter. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
La figure 7 montre l’interface automatisée de génération de cas de test de PreventivtativeTestPro. À cette étape, l’utilisateur donne le chemin absolu vers le fichier JSON de sortie d’observabilité et le chemin vers le fichier de configuration de la propriété. Lorsque le bouton Générer des cas de test automatisés est cliqué, le système traite les données de surveillance et crée des cas de test qui peuvent être exécutés pour montrer les mêmes problèmes que ceux observés.

Figure 7 : Interface utilisateur 4 du système. Cette figure montre l’interface automatisée de génération de cas de test de PreventativeTestPro, qui réalise des tests pouvant être exécutés à partir de données d’observabilité. L’utilisateur donne le chemin vers le fichier propriétés et le fichier JSON de sortie d’observabilité. Ensuite, ils cliquent sur « Générer des cas de test automatisés » pour créer des scripts pouvant être exécutés (au format Selenium et TestNG). Veuillez cliquer ici pour voir une version agrandie de cette figurine.

Figure 8 : Interface utilisateur 5 du système. Cette figure montre l’interface d’instrumentation des anomalies de PreventativeTestPro pour l’analyse des causes profondes (RCA). L’utilisateur donne le chemin vers le fichier propriétés et le fichier de trace de la pile, puis choisit RCA pour lancer une analyse pilotée par l’IA. Cette étape transforme les anomalies détectées en analyses diagnostiques structurées, garantissant que les défauts peuvent être corrigés de manière répétée et spécifique au problème. Veuillez cliquer ici pour voir une version agrandie de cette figurine.
Dépannage :
Le tableau 1 présente les points de dépannage les plus importants qui concernent uniquement le code de l’application. Ces points sont un moyen rapide de se souvenir comment corriger les problèmes au niveau du code qui surviennent lors de l’exécution du framework PreventivTestPro. La documentation du projet fournit plus d’informations et des instructions étape par étape pour les lecteurs qui souhaitent plus d’aide pour résoudre des problèmes affectant la fonctionnalité globale de l’application. La ressource complète est disponible via le lien : https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Cette référence supplémentaire garantit que les utilisateurs non seulement corrigent les problèmes de codage mais apprennent aussi à dépanner des fonctions, leur permettant ainsi d’utiliser le framework plus efficacement.
| Comportement d’erreur | Cause profonde | Comment réparer ? |
| La candidature ne commence pas | Java Path n’est pas défini | Dans la variable Environnement, réglez la JAVA_HOME |
| Le serveur échoue au démarrage | Port 8080/9090 en usage (spécifiquement pendant l’utilisation de Docker) | Mise à jour de la cartographie des ports Docker |
| Le contenu GenAI est nul | Le jeton peut avoir expiré | Générez le jeton et mettez à jour les config.properties avant de fournir cela en entrée |
| L’instance du navigateur générée par le framework ne se connecte pas au réseau | Soit le serveur ZAP ne fonctionne pas, soit les identifiants ZAP sont incorrects | Allumez le ZAP avant d’exécuter l’application, au cas où il fonctionnerait et que le problème persistait, mettez à jour les identifiants ZAP dans le config.properties avant de fournir cela en entrée |
Tableau 1 : Erreurs de système proposées courantes et solutions rapides. Ce tableau présente les erreurs courantes spécifiques à l’application, le dépannage et les solutions rapides pouvant être appliquées pour résoudre ces problèmes.