État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 1 : Premiers pas

Chapitre 1 par Applitools & Sogeti

Récentes évolutions du test logiciel

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

 

Download the "Section 1: Get Started" 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 Notice.*

Alors que la durée du cycle de livraison diminue, la complexité technique requise pour offrir une expérience positive à l'utilisateur et conserver un avantage concurrentiel augmente, tout comme le rythme auquel nous devons innover.

Les entreprises sont contraintes de se transformer à un rythme plus rapide que jamais. Le délai de mise sur le marché est essentiel, tout comme un haut degré de qualité dans tous les aspects de la livraison. À mesure que les utilisateurs s'immergent dans des expériences riches en dehors du travail, ils s'attendent à vivre des expériences du même calibre. Si la discipline de l'ingénierie de la qualité reste inchangée dans sa nature, presque tous les aspects de l'obtention de la qualité ont changé.

Cela inclut les approches traditionnelles de l'automatisation qui ne sont plus adaptées aux applications modernes. Les entreprises ne peuvent pas se permettre de sacrifier la qualité à la vitesse et espérer réussir. Les équipes modernes remanient leurs structures organisationnelles, les calendriers de test, la responsabilité des tests, l'orientation et la priorité des tests, ainsi que les outils et les technologies qu'elles utilisent.

Ce chapitre traite de l'évolution de l'ingénierie de la qualité (QE) et de la nécessité de l'intelligence artificielle.

Du test logiciel à l'ingénierie de la qualité

Depuis le début des années 2000, nous avons fait évoluer nos processus avec les approches agile, scrum, ou une autre forme de livraison de logiciels en petites équipes. Pour réduire le long délai entre le développement et les tests, les équipes logicielles se sont organisées en petits groupes de développeurs et de testeurs, et ont divisé le travail en "user stories" qui devaient être réalisées au cours de sprints de deux, trois ou quatre semaines.

Parallèlement à la livraison en équipe, les composants logiciels sont désormais créés à l'aide d'un processus d'intégration continue/livraison continue (CI/CD). Cela permet d'automatiser l'ensemble du processus de vérification du code de chaque développeur. En intégrant les tests dans ces processus et en travaillant ensemble, les ingénieurs peuvent identifier les changements (même involontaires) avant leur mise en production.

Cela a été renforcé par l'introduction de DevOps, où chaque membre de l'équipe contribue à la gestion de la conception des fonctionnalités, de la conception du flux de travail, des processus de publication et de la collecte des commentaires tout au long du processus de développement. La qualité des logiciels n'intervient plus à un point fixe du cycle de vie du développement logiciel.

Les innovations plus récentes proviennent de :

  • L’orchestration des tests en tant que source unique de vérité sur la qualité, de la gestion des versions au déploiement, avec des outils intégrés, des contrôles de qualité et des mesures qui répondent aux exigences de l'entreprise.
  • La montée en puissance des systèmes basés sur le cloud computing et les conteneurs pour mieux gérer les environnements de test.[1]
  • L'utilisation de données synthétiques, en raison d'une disponibilité plus facile et de la conformité des données implicite dans des réglementations telles que la GDPR ou l'OCC.
  • L'utilisation des données de production, de l'analytique[2], du comportement et du sentiment des utilisateurs, leur remontée, les enseignements qu'ils en tirent et leur intégration dans les nouvelles itérations.
  • L'adoption d'une structure organisationnelle entièrement optimisée, y compris les méthodes de travail, les processus, le personnel et les outils, avec une combinaison de ressources onshore, nearshore et offshore (right-shore) et d'évolutivité.
  •  

Les tests logiciels sont une composante essentielle de leur cycle de vie. Cependant, ils ne garantissent pas nécessairement que les équipes agiles et DevOps au rythme effréné produisent des logiciels de haute qualité et ne fournissent pas une vision holistique de la qualité tout au long du cycle de vie des applications. Ce rôle clé est joué par l'ingénierie (moderne) de la qualité.

 


[1] La gestion de l'environnement de test (TEM) consiste à gérer un ensemble complexe d'exigences liées à l'infrastructure, aux données et aux applications, de manière à fournir à la demande l'environnement de test idéal, afin de reproduire ce que l'application rencontrera en production.
[2] https://techbeacon.com/resources/mobile-analytics-playbook-download-full-book

Qu'est-ce-que l'ingénierie moderne de la qualité?

L'ingénierie de la qualité est une discipline collaborative qui vise à garantir la meilleure qualité possible des applications au bon moment, au profit de l'entreprise. L'ingénierie de la qualité contribue à la transformation de l'informatique en un facteur de changement et de perturbation. Elle implique la collaboration de professionnels inter fonctionnels - plutôt que multidisciplinaires - ayant des expériences et des capacités complémentaires pour atteindre un objectif commun. La raison en est que dans une équipe multidisciplinaire, les individus continuent à travailler sur leur propre îlot au sein de l'équipe ; il s'agit d'une collection de spécialistes qui accomplissent chacun leur propre tâche. Dans une équipe inter fonctionnelle, tous les membres partagent la responsabilité de l'accomplissement de toutes les tâches. L'approche transversale renforce l'adaptabilité et la résilience de l'équipe ; lorsqu'un membre de l'équipe est indisponible, l'équipe continue de fonctionner. L'approche transversale est également un terme qui apparaît dans la définition de DevOps.

Les activités d'ingénierie de la qualité doivent être intégrées à la fois au processus et aux personnes impliquées afin de garantir la capacité de l'équipe à créer et à livrer des logiciels rapides, bon marché, flexibles et de qualité adéquate. Les équipes doivent mettre en œuvre une méthode de travail qui leur permette d'affirmer en toute confiance qu'elles sont satisfaites de la qualité du logiciel qu'elles livrent et de la rapidité avec laquelle il a été livré. Le principe fondamental est la qualité des applications, pour laquelle tous partagent une responsabilité et une obligation de rendre compte égales.

L'objectif ultime est d'apporter une valeur commerciale.

Avec du recul, nous pourrions affirmer que les plus grands problèmes auxquels les équipes sont confrontées ne sont que rarement d'ordre technique ; ils sont presque toujours d'ordre humain : confiance, communication et coopération. Vous les trouverez au cœur de l'échec de tout produit ou processus. L'objectif premier de l'ingénierie de la qualité est donc également centré sur l'humain : explorer, apprendre un système, gagner en confiance, pour finalement fournir la valeur commerciale recherchée.

S1C1 picture 1.png

Thèmes relatifs à l'ingénierie de la qualité

Le domaine de l'ingénierie de la qualité peut être assez vaste. En gardant à l'esprit la grande variété actuelle de modèles de fourniture de services informatiques, nous avons décrit un ensemble commun de sujets qui sont toujours pertinents pour l'ingénierie de la qualité, quelle que soit l'approche de développement, d'exploitation et de maintenance informatique suivie par l'organisation. La façon dont ces thèmes d'ingénierie de la qualité sont abordés dans votre situation dépend de nombreux facteurs, et notamment du modèle de fourniture de services informatiques que vous utilisez. Nous sommes toutefois convaincus que pour une ingénierie de la qualité efficace et efficiente, l'ensemble de ces 20 sujets doit être abordé d'une manière ou d'une autre.

S1C1 picture 2.pngFigure: : les 20 sujets avec les activités pertinentes pour l'ingénierie de la qualité

Vous souhaitez en savoir plus?


Developpé par Sogeti, TMAP est le corpus de connaissances pour l'ingénierie de la qualité dans la fourniture de services informatiques. La force du TMAP peut être largement attribuée à l'expérience pratique considérable qui constitue la base du corps de connaissances. Cette expérience provient de milliers de professionnels de l'informatique ayant participé à autant de projets au cours des vingt-cinq dernières années. Le corpus de connaissances TMAP est facilement accessible sur le site web www.tmap.net.

Le livre "Quality for DevOps teams" (ISBN 978-90-75414-89-9) décrit la manière dont l'ingénierie de la qualité peut être mise en œuvre dans le cadre de DevOps et d'autres modèles de livraison informatique à haute performance.

Pour vous informer sur le TMAP, trouvez des informations sur les cours de formation à la certification TMAP sur https://pages.isqi.org/tmap-2020/

Principaux défis rencontrés par l'ingénierie de la qualité

L'évolution vers l'ingénierie de la qualité devrait aboutir à la vitesse réelle la plus élevée possible tout en produisant un code de qualité adéquate. En réalité, de nombreuses organisations se concentrent encore aujourd'hui sur les tests logiciels et font des compromis sur la qualité au fil du temps.

Les développeurs de logiciels ont accepté un certain niveau de défauts, tant qu'ils ne sont pas des "empêcheurs de tourner en rond". Même au sein des sprints agiles, les équipes présentent des degrés variables de collaboration, avec un impact variable sur leur vélocité globale. Dans certains cas, les tests sont inexistants ou commencent après l'achèvement de tout le développement, consommant du temps et des ressources en plus de ceux nécessaires au développement. Les développeurs doivent souvent s'éloigner de leur travail en cours pour résoudre des problèmes découverts dans du code vérifié il y a plusieurs jours ou semaines. Tout flux de travail qui est plus rapide que son processus le plus lent génère du gaspillage. De même, le changement de contexte se manifeste sous la forme de code non testé ou non réparé. Le test, en tant que dernière activité du flux de travail, est sans conteste le goulot d'étranglement le plus important dans la livraison d'un code de haute qualité. Pourquoi en est-il ainsi ?

 

 

 

L'impact de l'héritage technologique

Pendant près de trois décennies, l'automatisation des tests logiciels s’est traduite en l'écriture manuelle de scripts dans une variété de langages pour une variété de types de tests automatisés (unitaires, fonctionnels, de régression, de performance, de charge, de sécurité et autres). Les premiers fournisseurs commerciaux ont utilisé cette définition de l'"automatisation" basée sur les scripts. Au milieu des années 1990, leurs outils avaient acquis une énorme popularité, créant les bases de la majorité des outils d'automatisation des tests actuels.

Au milieu et à la fin des années 2000, une deuxième génération d'outils d'automatisation est apparue, mais le flux de travail est resté le même : créer des scripts, principalement à la main (ou via une forme d'enregistrement), dans l'espoir de les réutiliser dans des versions ultérieures. Cela nécessitait (et nécessite toujours) un temps élevé de développement des scripts et une maintenance importante en raison de la modification des propriétés des objets ou des données de test. En raison de la prolifération des différents comportements d'interface (mobile, web, logiciel embarqué, etc.), le temps nécessaire pour valider toutes les conditions de test - y compris les scénarios limites - est incompatible avec un sprint de deux semaines. Par exemple, les bogues visuels, tels que les défauts de mise en page et d'affichage des images, ne peuvent être détectés par les tests automatisés classiques.

De nombreux outils facilitent le développement, la gestion et l'automatisation des tests - ainsi que l'analyse du code de l'application pour en assurer la couverture - mais cela ne semble plus suffisant. Il est évident que les outils et processus hérités sont vulnérables aux exigences modernes de l'ingénierie de la qualité.

La complexité des applications ne cesse d'augmenter

La taille des logiciels a énormément augmenté au cours des dernières décennies. L'augmentation du volume[1] des logiciels indique que davantage de composants sont exécutés sur de multiples serveurs et réseaux, à l'aide de protocoles spécifiques, générant une énorme quantité de données. Ce nombre accru de composants ajoute également à la complexité. Chacun d'entre eux fournit des fonctions spécifiques, avec des degrés de criticité variables (par exemple, système de billetterie et système de paiement) et nécessite des tests adéquats. La complexité des applications augmente plus vite que la capacité des équipes d'ingénierie de la qualité à les analyser.

 

Le concept de qualité évolue.

La numérisation et la transformation numérique de nombreux domaines de la vie ont entraîné une évolution importante des besoins et des attentes des clients. Les utilisateurs s'attendent à ce que les applications mobiles fonctionnent de manière transparente, indépendamment de leur choix de technologie, de leur emplacement ou du contexte. Ils attendent des applications qu'elles soient précieuses, élégantes et utiles, entre autres choses. L'expérience utilisateur est de nature émotionnelle et est déterminée par la façon dont les utilisateurs pensent, perçoivent et ressentent. L'intimité, la proximité et la confidentialité sont essentielles. Par conséquent, il est essentiel d'évaluer ces différentes facettes de la qualité des logiciels et d'apporter des améliorations à celles qui ne répondent pas aux attentes. Les ingénieurs qualité doivent également naviguer entre l'amélioration de l'expérience client et la réalisation des objectifs commerciaux.

Nous avons besoin d'aide!

Pour faire face à ces changements, à ces complexités et à ces attentes élevées, nous devons accélérer le développement des logiciels et répondre aux exigences de qualité d'un avenir axé sur l'Internet des objets, la robotique et l'informatique quantique. Nous devons apporter plus d'intelligence dans nos activités d'ingénierie de la qualité. Il est temps d'envisager l'intelligence artificielle pour nous aider à réaliser l'ingénierie de la qualité plus rapidement, à moindre coût et avec plus de précision, avec la promesse d'aller au-delà des tests automatisés traditionnels. Le chapitre suivant donne un aperçu de cette technologie. Le présent rapport a été structuré de manière à permettre un examen plus approfondi de la convergence entre l'ingénierie de la qualité et l'intelligence artificielle dans les différentes sections.

 


[1] La taille est une caractéristique essentielle d'un produit logiciel. La mesure des lignes de code (SLOC ou LOC) est l'une des plus utilisées dans l'industrie. L'effort requis pour maintenir un système logiciel est proportionnel à la qualité technique du code source du système.

About the authors

Moshe Milman

Moshe Milman

Moshe brings over 15 years of experience in leadership, engineering and operational roles in public and private companies. Prior to founding Applitools, Moshe held leadership roles at Wave Systems Corp., Safend, Amdocs (NASDAQ:DOX) and Sat-Smart Ltd. Moshe holds a Bachelor’s degree in Information Systems from the Technion Israel’s Institute of Technology and MBA from IDC (Wharton Business School GCP program).

Antoine Aymer

Antoine Aymer (chief editor)

Antoine Aymer is a passionate technologist with a structured passion for innovation. He is currently the Chief Technology Officer for Sogeti's quality engineering business. Antoine is accountable for bringing solutions and services to the global market, which includes analyzing market trends, evaluating innovation, defining the scope of services and tools, and advising customers and delivery teams. Apart from numerous industry reports, such as the Continuous Testing Reports, the 2020 state of Performance Engineering, Antoine co-authored the "Mobile Analytics Playbook," which aims to assist practitioners in improving the quality, velocity, and efficiency of their mobile applications through the integration of analytics and testing.

Rik Marselis

Rik Marselis

Rik Marselis is principal quality consultant at Sogeti in the Netherlands. He is a well-appreciated presenter, trainer, author, consultant and coach who supported many organizations and people in improving their quality engineering practice by providing useful tools & checklists, practical support and having in-depth discussions.

Rik is a fellow of Sogeti’s R&D network SogetiLabs. These R&D activities result in presentations, books, white-papers, articles, podcasts and blogs about IT in general and quality engineering in particular. He has contributed to 22 books in the period from 1998 through today. He is co-author of the books “Testing in the digital age – AI makes the difference” (2018) and “Quality for DevOps teams” (2020).

Rik is an accredited trainer for TMAP, ISTQB and TPI certification training courses, but also, he has created and delivered many bespoke workshops and training courses. For example, on Intelligent Machines, Exploratory testing and DevOps testing.

About Applitools

Applitools delivers the next generation of test automation platform for cross browser and device testing powered by AI assisted computer vision technology known as Visual AI. Visual AI helps Developers, Test Automation Engineers and QA professionals release high-quality web and mobile apps enabling CI/CD.

Hundreds of companies, including industries such as Technology, Banking, Insurance, Retail, Pharmaceuticals, and Media - including 50 of the Fortune 100 - use Applitools to deliver the best possible digital experiences to millions of customers across all screens.

Visit us at www.applitools.com

 

 

applitools-logo-300x55.png