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

Chapitre 1 par Curiosity Software

Vers un jumeau numérique piloté par l'IA

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.

L'intelligence artificielle nous aide à exprimer la logique commerciale sous la forme d'un jumeau numérique de nos transactions critiques. L'utilisation d'un jumeau numérique pour les tests de logiciels nous permet d'établir une version unique de la vérité pour la logique de test, il fournit un centre de collaboration pour la priorisation des tâches de test et une définition standardisée du risque à travers les équipes.

​Actuellement, la logique de test (et donc la logique métier) est contenue dans des scripts qui sont inextricablement liés à des outils spécifiques. En conséquence, nous pouvons estimer que les efforts de test sont multipliés par six environ entre les équipes. Cette duplication des efforts de test ne s'arrête pas au développement des cas de test. La duplication a un effet cumulatif sur les efforts en aval tels que la maintenance des tests, le classement des défauts et leur remédiation.

Pour éviter la duplication des efforts de test, nous avons besoin d'un mécanisme pour établir une compréhension commune des risques et des priorités de l'entreprise. Nous avons besoin d'un point de référence commun pour déterminer ce qui doit être testé par les différentes équipes. Si nous pouvions établir un cadre commun pour les risques et les priorités, nous pourrions également déterminer ce qui n'a pas besoin d'être testé dans un cycle de développement donné.

La prochaine opportunité importante d'accélérer ce cycle de développement nécessitera un changement de paradigme dans notre mode de fonctionnement actuel. Grâce à l'intelligence artificielle, nous pouvons désormais décrire la logique métier en termes de jumeau numérique de nos transactions critiques. Le jumeau numérique est une représentation graphique dynamique des processus canoniques d'une organisation qui permet aux équipes de développement de penser localement tout en agissant globalement. Il fournit une plate-forme pour la collaboration entre les humains et les machines, ainsi qu'une cible avec laquelle les machines peuvent interagir et qu'elles peuvent mettre à jour automatiquement.

Ce chapitre traite de la manière dont un jumeau numérique fournit une source unique de vérité pour les transactions métiers critiques. Nous décrirons également comment le jumeau numérique agit comme un hub de collaboration reliant des outils disparates et permettant aux équipes de suivre le rythme du changement.

Taking our first steps toward the Digital Twin

Le jumeau numérique n'est pas un concept tout à fait nouveau. Des simulations dans les secteurs de l'automobile, de l'énergie, de l'aérospatiale et de l'exploitation minière ont toutes été réalisées à l'aide de ce concept. Dans ces cas-là, un jumeau numérique est une représentation logicielle d'un dispositif discret qui permet aux ingénieurs et aux testeurs d'interagir avec la représentation virtuelle du dispositif tout au long de son cycle de vie.

L'intérêt du jumeau numérique est qu'il s'agit d'une représentation dynamique de la réalité. En d'autres termes, le jumeau numérique consomme des données et réagit à l'évolution des paramètres, fournissant des informations qui permettent de découvrir des défauts, d'optimiser des cas d'utilisation et de planifier des améliorations futures. Les capacités essentielles d'un jumeau numérique sont les suivantes :

  • La capacité de générer une représentation graphique d'un objet ou d'une entité complexe ;
  • La capacité de recevoir et de traiter des entrées dynamiques ;
  • la capacité de réagir à des données changeantes ; et
  • la capacité des humains à comprendre l'impact du changement

Le jumeau numérique, un atout pour l'entreprise

Grâce à une représentation visuelle des flux critiques, le jumeau numérique permet aux ressources techniques et non techniques de comprendre les risques et les professionnels de l'entreprise. S'agit-il de tests basés sur des modèles ? De nombreux concepts similaires à ceux promus par les tests basés sur des modèles (model-based testing ou MBT) sont incorporés dans le concept de jumeau numérique. Cependant, le jumeau numérique présente deux distinctions importantes. Premièrement, le jumeau numérique est conçu pour la collaboration entre l'homme et la machine. Deuxièmement, le jumeau numérique n'est pas censé être une description exhaustive d'une application. Le jumeau numérique est une représentation continue des flux d'activité les plus critiques de l'organisation, indépendamment des limites des applications ou des dépendances.

Human and machine collaboration

Collaboration humaine

Malgré la grande disponibilité des frameworks de test, les composants de test des logiciels sont rarement réutilisés. Comment cela se fait-il ? Bien que de nombreux frameworks des tests permettent la réutilisation, il est en réalité généralement plus rapide de générer une automatisation 'brute' que de construire un test à partir d'un référentiel de composants. En raison d'un manque de discipline dans la création des tests, la logique métier est 'piégée' à l'intérieur des scripts (et est donc inextricablement liée à un outil), ce qui accroît l'effort nécessaire à la maintenance des tests. La faible réutilisation des actifs de test est due à une mauvaise conception des tests.

C'est ici que le concept de jumeau numérique entre en jeu. Le jumeau numérique est le point central de la collaboration entre les équipes métier et technique. Pour l'entreprise, il s'agit d'une délimitation claire de l'état actuel d'une application (au sens large) et d'un canevas sur lequel il est possible de progeter les attentes d'un état futur. Pour l'équipe technique, il s'agit d'une version unique de la vérité qui facilite la coordination des dépendances nécessaires à une automatisation avancée.

Interaction avec les machines​

Le jumeau numérique se distingue par l'ingestion de données provenant des écosystèmes de développement, de test et de production en tant qu'entrées pour optimiser les tests logiciels. Ceci illustre la distinction entre un modèle statique, sans code, et un jumeau numérique dynamique.

De nombreux points de données nécessaires à l'optimisation des tests existent, mais ils sont dispersés dans une variété d'outils de surveillance et de gestion de l'infrastructure, notamment la surveillance des performances des applications (APM), le contrôle des versions, la gestion agile des exigences, la gestion des tests, les analyses Web, la gestion des défauts et la gestion des API. Demander à un humain d'interpréter ces points de données et de prendre des décisions d'optimisation est une tâche impossible. C'est là que se révèle la véritable valeur du jumeau numérique.

Pour optimiser les tests effectués à chaque étape du cycle CI/CD, le jumeau numérique peut dynamiquement signaler ou évaluer l'impact des éléments suivants :

cycle CI/CD
Changement Risque Exécution Qualité des tests
  • Code
  • Dépendances
  • Indicateurs de fonctionalités
  • Tests
  • Assertions
  • Portée de la version
  • User Stories
  • Environments
  • Configurations
  • APIs externes
  • Jeux de données
  • Programme
  • Capacité
  • Calendrier
  • Persona
  • Appareils
  • Composant
  • Code
  • Dependance
  • Portée
  • Bogues
  • Éléments dupliqués
  • Couverture
  • Faux positifs
  • Avertissement de faux négatifs

 

Les tests continus doivent être plus intelligents. Aujourd'hui, nous sommes intensément concentrés sur la création et la maintenance des scripts. Cependant, la véritable difficulté des tests automatisés provient des dépendances et des externalités du script. L'optimisation du cycle de vie des tests logiciels doit tenir compte de l'environnement dynamique dans lequel les applications fonctionnent et de l'expérience utilisateur de bout en bout.

 

 

La valeur du jumeau numérique pour l'ingénierie de la qualité

Le jumeau numérique permet un modèle d'interaction qui est le suivant : Informer, Agir, Automatiser. Cette séquence d'interactions permettra à l'ingénierie de la qualité d'évoluer vers un système d'apprentissage avec un "humain dans la boucle". Plus important encore, en centralisant les hypothèses critiques sur les risques et les priorités de l'entreprise, le modèle "Informer, Agir, Automatiser" contribue à niveler l'organisation. Un jumeau numérique est un point central de collaboration qui permet aux testeurs de suivre le changement. Il convertit les observations en actions, permettant à l'organisation de :

  • Informer l'équipe au fur et à mesure des changements
    Quelle est la cause des retards dans les tests ? Le changement, plus précisément les changements tardifs qui n'ont pas été communiqués à l'équipe de test en temps voulu. L'un des principaux différentiateurs d'un jumeau numérique est sa capacité à surveiller et à corréler un ensemble diversifié de points de données et à alerter l'équipe des changements critiques dès qu'ils se produisent. Un jumeau numérique analyse les données en temps réel et informe l'équipe de tout changement qui affecte le cycle de diffusion en cours. Il ne s'agit pas d'un panneau de contrôle ! Il s'agit d'un système proactif qui fournit des informations opportunes sur l'étendue actuelle du travail.
  • Agir sur les observations pour se concentrer précisément sur ce qui doit être testé
    Bien que l'identification et la communication des changements soient essentielles, l'utilisation la plus efficace d'un jumeau numérique se produit lorsque les testeurs sont incités à agir. Les changements observés peuvent, dans certains cas, mettre automatiquement à jour la suite de tests, la priorité d'exécution des tests ou les sous-tâches associées aux tests logiciels. Les optimisations courantes de l'exécution des tests, telles que la priorisation basée sur les risques ou la priorisation basée sur les changements, peuvent être déclenchées automatiquement par le pipeline CI/CD. Des déclencheurs d'action supplémentaires sont présentés sous forme de recommandations au sein de l'interface (du jumeau numérique), sur la base d'algorithmes logiciels de test bien connus.
  • Automatiser les sous-processus pour soutenir des stratégies efficaces d'atténuation des risques
    Lorsque nous parlons d'"automatisation", nous faisons généralement référence à la tâche consistant à automatiser la logique de test plutôt qu'une interface utilisateur ou une API. Naturellement, la portée des tests automatisés va au-delà de l'interface utilisateur ou de l'API, mais il est également essentiel de comprendre que la portée de ce qui peut être automatisé tout au long du cycle de vie des tests logiciels va bien au-delà du test lui-même. Les patterns d'automatisation peuvent être utilisés pour automatiser les éléments suivants :
    • L'analyse des exigences
    • Planification des tests
    • Jeux de données de test
    • Approvisionnement de l'environnement
    • Priorité des tests
    • Exécution des tests
    • Analyse de l'exécution des tests
    • Optimisation du processus de test

Valeur du jumeau numérique piloté par l'IA pour l'ingénierie de la qualité

De nombreuses entrées peuvent contribuer à optimiser le résultat des tests automatisés.  Il existe cinquante modèles d'optimisation distincts supportés par des algorithmes et des règles basées sur des événements. Notons que les modèles d'optimisation ne nécessitent pas forcément l'apport de l'intelligence artificielle. Ces modèles, de grande valeur, fournissent des alertes proactives sur les changements survenant dans le cadre d'un 'sprint' (cycle). Parmi les domaines faisant l'objet d'un apprentissage (dans le sens 'machine/deep learning') aujourd'hui, citons les suivants :

  • Évaluation sémantique des user stories
  • Contribution de l'équipe par rapport à la qualité
  • Sortie du périmètre (généralement non autorisée)
  • Mauvaise estimation des 'story points'
  • Pénalités pour innovation en cours de sprint
  • Résolution des (jeux de) données de test
 
Exemple How Value
Utiliser n'importe quel outil de test La logique de test est abstraite et optimisée par la plate-forme centrale
  • Un système d'apprentissage avancé optimise " ce " qu'il faut tester
  • Les équipes peuvent utiliser n'importe quel outil de test
  • Les équipes peuvent changer d'outil en fonction de l'évolution des architectures
  • Éviter la dépendance technique par rapport à un fournissseur
Collaboration entre équipes La plateforme centrale permet à plusieurs équipes d'accéder à la logique de test
  • Les testeurs peuvent générer des tests jetables
  • Les testeurs réduisent considérablement la maintenance des tests
  • Les équipes réutilisent la logique de test
  • Les testeurs éliminent la création de tests redondants
Automatiser les sous-tâches de test Les sous-tâches manuelles peuvent être automatisées via la plateforme
  • La plateforme permet des flux de travail spécifiques aux tests de logiciels
  • L'automatisation des sous-tâches augmente l'efficacité et la répétabilité des processus.
Accéder aux données critiques Exploiter les données dans les outils existants
  • Faire le point sur les données dans le but de tester les logiciels
  • Tenir les testeurs informés des changements critiques de manière proactive
  • Éviter les retards dans le cycle de mise à disposition.
Transformez les observations en actions Les modèles connus du cycle de vie des tests logiciels permettent de convertir les observations en actions
  • Les données ne sont plus passives, elles sont traduites en actions spécifiques
  • Les modèles ou les tâches propres à l'organisation peuvent être ajoutés
  • Fournit la base de l'amélioration continue des processus

Valeur du jumeau numérique pour la conception des tests

Toutes les versions ou itérations ne sont pas égales en termes de risque. L'essentiel est maintenant de disposer d'une infrastructure automatisée qui s'aligne sur les objectifs métier et sur les risques uniques associés à la portée actuelle du changement. Lorsque nous sommes confrontés à des changements sous contraintes de temps, nous nous posons fréquemment ce type de questions :

  • Est-ce que nous testons la bonne chose ?
  • Est-il nécessaire de tout tester ?
  • Comment pouvons-nous prioriser nos efforts à la lumière des impératifs métiers ?
  • Comment optimiser ce qui doit être maintenu ?
  • Comment limiter les faux positifs à mesure que la suite de tests s'accroît ?
  • Peut-on déterminer si quelque chose n'a pas besoin d'être testé ?

L'intérêt du jumeau numérique est qu'il peut fournir des réponses en temps réel à ces questions. Il permet la création de tests (et de données) jetables et la possibilité de se concentrer sur les aspects les plus critiques des tests.

Critical aspects of testing

Tests jetables

Bien que chaque organisation soit structurellement et culturellement distincte, une chose que les équipes agiles ont en commun est que la pratique des tests logiciels est devenue cloisonnée. Typiquement, le silo est limité à l'équipe ou à une seule application construite par plusieurs équipes. Étant donné que le risque doit être quantifié dans des architectures de systèmes distribués, ces contraintes créent des obstacles.

La disponibilité généralisée d'outils propriétaires et open-source a également contribué à la formation de ces silos. Les outils ponctuels ont acquis la réputation d'être extrêmement aptes à piloter des tests automatisés. Cependant, la logique de test s'est retrouvée emprisonnée dans une variété d'outils sous forme de scripts. Permettre aux équipes d'utiliser un ensemble diversifié d'outils a un prix : une redondance importante, un manque de compréhension de la couverture entre les silos et un niveau élevé de maintenance des tests.

Le jumeau numérique abstrait la logique de test des scripts et des outils de test. Il permet la génération dynamique de scripts de test qui évaluent plus précisément le risque de mise en production. Comme mentionné précédemment, le jumeau numérique consomme un grand nombre de points de données provenant de l'infrastructure environnante. L'observabilité de l'infrastructure environnante nous fournit des détails sans précédent sur le risque, ce qui nous permet de hiérarchiser dynamiquement les chemins de test et les données nécessaires pour dé-risquer la diffusion. Le jumeau numérique peut désormais générer automatiquement des scripts de test pour n'importe quel outil.

Il faut un certain temps pour s'adapter au concept de test jetable. Le principal avantage de l'abstraction de la logique d'un outil est qu'elle permet aux équipes d'ajuster automatiquement les tests pour répondre aux exigences précises d'une version particulière.

Considérez la tâche consistant à ajuster manuellement chaque script en réponse aux changements - c'est difficile, voire pratiquement impossible dans de nombreuses situations. Envisagez maintenant de générer automatiquement un ensemble de scripts de test qui reflètent les risques et les priorités identifiés dans l'infrastructure environnante - cela semble plus raisonnable. Nous pouvons intégrer ces modifications à tout moment du processus en éliminant simplement les anciens tests et en générant automatiquement de nouveaux tests à l'aide du jumeau numérique.

Auto generate test scripts

Testez ce qui est important​

La plupart des entreprises classent leurs tests en deux catégories : "tester ce que nous pouvons" ou "tout tester". En raison du manque de données permettant de hiérarchiser les tests en toute confiance, la principale stratégie pour réduire les risques d'une version consiste à "tout tester". Malheureusement, cette stratégie est à la fois coûteuse et inefficace. Ces équipes sont accablées par des suites de tests gonflées et un taux élevé de faux positifs, ce qui érode leur confiance dans les résultats des tests. Si l'approche "tester ce que l'on peut" est plus efficace d'un point de vue commercial, ces équipes ont un taux d'incidents de défauts de production beaucoup plus élevé.

La majorité des équipes préféreraient "tester ce qui compte". Le jumeau numérique permet cette approche en fournissant l'infrastructure nécessaire pour visualiser les priorités et les risques sous plusieurs angles. Un jumeau numérique permet à une équipe de voir les priorités à partir des perspectives suivantes :

De bas en haut, par le biais de la portée des histoires d'utilisateurs en cours d'exécution.
De haut en bas, par le biais de différentes lentilles de risque (processus d'affaires, persona de l'utilisateur final, densité de défauts...)

Étude de cas : Jumeau numérique dans le secteur financier​

Nous partageons ici l'exemple d'une organisation multinationale du secteur financier qui a élevé la sécurité comme principale priorité. Plus de 40 équipes agiles ont été mises au défi d'augmenter le niveau d'automatisation des tests sur un ensemble complexe d'applications en contact avec la clientèle sans compromettre la sécurité ou la qualité. Comme plusieurs équipes modifiaient les applications orientées client selon une cadence de publication agressive, l'équipe centrale de sécurité a recommandé de tirer parti d'un jumeau numérique pour fournir une définition commune de la logique commerciale critique.

Les équipes apportant des modifications aux flux commerciaux critiques ont collaboré autour de la représentation graphique du processus dans le jumeau numérique. Grâce à cette approche, l'équipe de management, les membres de l'équipe technique et les membres de l'équipe de sécurité ont pu comprendre immédiatement l'impact des changements et l'impact sur les dépendances des applications. Grâce aux observations du dépôt de code source, du système de gestion des tests et du système de surveillance de la pré-production connectés au jumeau numérique, l'équipe disposait d'une analyse d'impact bidirectionnelle en temps réel, du code source aux exigences et aux tests, reflétée dans une interface partagée. En tirant parti du jumeau numérique, l'organisation a obtenu les avantages suivants :

  • La certitude que la logique métier critique est comprise par toutes les équipes,
  • La compréhension commune de la logique métier critique a permis à l'équipe d'atteindre une couverture contextuelle de 100%,
  • Compréhension claire de l'impact des changements - obtenue automatiquement en observant les changements dans le code source,
  • Les équipes ont réduit le nombre de tests dans la suite de tests de régression de 45 %,
  • Les équipes ont confiance dans les résultats des tests car la priorité est dynamiquement établie par le jumeau numérique,
  • Les équipes ont une meilleure visibilité des risques, ceux-ci étant définis de manière dynamique par le jumeau numérique.

About the author

Curiosity Software Ireland Ltd

Curiosity Software Ireland Ltd

Curiosity was the first company to launch an Open Testing Platform. Our goal is simple – don’t test when you don’t have to. With data-driven insights into the impact of change, we expose the fastest path to validate your changes complete with required test data. Our Open Testing Platform is test tool agnostic, we can optimize what your team should be testing across any tool or framework.

Visit us at curiositysoftware.ie