Webinaire en vedette : MISRA C++ 2023 : tout ce que vous devez savoir | Voir le séminaire

3 Obstacles aux tests continus et comment les supprimer

Logo cube Parasoft 300x300
Le 22 avril 2021
9 min lire

Les tests continus prennent en charge la nécessité de tester en permanence le logiciel à toutes les étapes du SDLC. Cela ne va pas sans obstacles. Passez en revue pour comprendre ces obstacles et comment les résoudre.

Les tests continus sont un processus qui permet aux équipes d'intégrer la qualité dans le développement de logiciels et d'accélérer la fourniture d'expériences client de haute qualité. Grâce à des tests continus, les équipes reçoivent des commentaires instantanés sur la santé du code à l'aide de tests automatisés.

Les tests continus permettent aux organisations d'évaluer les risques commerciaux. Des enquêtes récentes du secteur montrent les principales mesures utilisées pour suivre l'avancement et le succès du projet:

  • Couverture de test élevée
  • Augmentation de la correction des défauts
  • Diminution des défauts de production
Livre blanc : Tests continus pour DevOps

Intégrer la qualité dans le processus de développement

La qualité est un sujet important pour les cadres supérieurs. Voici quelques résultats perspicaces des chefs d'entreprise interrogés:

  • 48% ont déclaré que l'amélioration de la qualité faisait partie de leurs trois principales initiatives.
  • 68% cherchaient des moyens d'améliorer la rapidité et la qualité de livraison.

Le nouvel objectif? Intégrez la qualité dans le processus de développement pour accélérer la fourniture d'expériences client de haute qualité.

Comment cette combinaison de vitesse et de qualité est-elle obtenue? Test continu. Mais cela vient avec ses défis.

Surmonter les obstacles liés aux tests continus

Avec la qualité à la vitesse comme objectif, il y a généralement trois obstacles principaux à surmonter lors de la mise en œuvre de tests continus.

  • Manque d'expertise. L'équipe peut manquer de disponibilité pour adopter de nouvelles approches et compétences nécessaires pour apprendre et adopter de nouveaux outils et techniques.
  • Exécution instable. L'automatisation des tests telle qu'elle existe actuellement dans l'organisation peut être instable et peu fiable. Au fur et à mesure que le code grandit, le temps d'exécution augmente également.
  • Environnement indisponible. L'environnement de test est souvent indisponible, incontrôlable et contraint par les dépendances du système.

Les équipes doivent supprimer ces obstacles pour que les tests continus s'intègrent dans la culture de développement d'une organisation logicielle.

Obstacle 1: Manque d'expertise de l'équipe

Au départ, le manque d'expertise n'est pas seulement le manque de connaissances et de compétences de l'équipe. Ce sont également les limites des outils utilisés.

Envisagez l'automatisation des tests d'interface utilisateur (UI). C'est une pratique courante et fiable, mais l'automatisation réutilisable est difficile. Le sélénium est la norme de facto. Bien qu'il soit open source et gratuit, il a sa propre courbe d'adoption, et il faut de l'expérience et du temps à maîtriser.

Les tests de sélénium peuvent ne pas être fiables et ce qui est enregistré un jour ne peut pas être lu le lendemain. La maintenance des tests devient un problème croissant à mesure que de plus en plus de tests d'interface utilisateur sont automatisés. Selenium nécessite un support supplémentaire d'outils pour devenir plus facile à utiliser et à entretenir.

Top 10 des outils de test de l'interface utilisateur Web: tests automatisés de l'interface utilisateur Web

Test de niveau de service ou d'API est une pratique relativement nouvelle, mais précieuse. Cependant, il se trouve dans un no man's land entre les développeurs et les testeurs. Les développeurs comprennent mieux les API mais ne sont ni motivés ni obligés de les tester et les testeurs n'ont pas les connaissances nécessaires pour effectuer des tests d'API.

Le défi numéro un lorsque les organisations tentent d'adopter les tests d'API est de comprendre comment les API sont réellement utilisées. Cela ne veut pas dire que les API ne sont pas bien documentées ou conçues. Au lieu de cela, il n'y a pas beaucoup d'informations sur la façon dont les services sont utilisés ensemble dans un cas d'utilisation, un flux de travail ou un scénario.

De plus, il est important que l'automatisation des tests API aille au-delà de l'enregistrement (pendant le fonctionnement) et de la lecture (pour les tests). La modélisation du comportement et des interactions entre les API est nécessaire, tout comme l'utilisation de ces interactions pour piloter les processus de création et de gestion des tests.

Les tests de performance sont souvent considérés comme quelque chose qui est fait par une autre équipe de l'organisation, peut-être comme une case à cocher. Mais lorsque des problèmes de performances surviennent, le développement du produit peut avoir progressé et une restauration perturbatrice peut être nécessaire.

Idéalement, les tests de performance doivent être effectués plus tôt dans le processus de développement logiciel et tirer parti du travail déjà effectué avec des tests fonctionnels automatisés. Dans le même temps, l'équipe adopte les tests d'API, elle peut tirer parti de ce travail pour permettre aux tests de performances de passer à gauche, ce qui en fait une responsabilité conjointe des développeurs et des testeurs.

Comment supprimer: simplifier l'automatisation des tests

Le manque d'expertise et de formation dans l'équipe de développement et de test ne doit pas se refléter sur l'équipe elle-même, mais plutôt sur la complexité lors de l'adoption de l'automatisation des tests et des outils associés. Il existe des solutions disponibles qui s'efforcent de simplifier l'automatisation des tests. Ces solutions rendent l'adoption moins perturbatrice et s'intègrent mieux dans les processus existants.

Créez des scripts de test réutilisables, maintenables et compréhensibles. Parasoft Selenic résout les principaux problèmes liés à l'adoption de Selenium: création et maintenance de tests. En enregistrant les interactions de l'interface utilisateur via le navigateur Chrome, les cas de test Selenium sont automatiquement créés en fonction de ces interactions. En outre, les localisateurs sont enregistrés à l'aide du modèle d'objet de page pour être plus résilients aux modifications de l'interface utilisateur. Selenic utilise l'auto-guérison des tests basée sur l'IA afin que, lorsque les modifications de l'interface utilisateur interrompent les tests existants, l'outil formule des hypothèses intelligentes pour empêcher les cas de test d'échouer.

Modélisez des scénarios de test d'API dans le monde réel en enregistrant les interactions manuelles et automatisées de l'interface utilisateur. L'adoption des tests API est entravée par la possibilité de créer des tests. Parasoft SOAtest utilise des tests d'interface utilisateur existants (y compris des tests créés par Selenic) pour enregistrer l'interaction de l'API qui se produit pendant l'exécution de l'application. L'intelligence artificielle au sein de SOAtest organise ces interactions enregistrées en scénarios reconnaissables qui forment ensuite la base d'un référentiel de test API. Ces scénarios d'API peuvent être lus, modifiés, clonés et réutilisés pour former une suite de tests d'API complète. le automatisé et alimenté par l'IA prise de décision SOAtest facilite l'adoption, l'utilisation et la maintenance des tests d'API. De plus, cela aide à combler le manque de connaissances en matière de test d'API dans l'équipe de développement.

Réutilisez les artefacts de test existants pour faire évoluer efficacement les tests de charge, de performances et de sécurité dans le cadre de Test DevOps pipeline. Au fur et à mesure que l'équipe de développement maîtrise mieux l'automatisation des tests pour les niveaux de l'interface utilisateur et de l'API, le référentiel de test devient une ressource réutilisable importante. Les tests peuvent être réutilisés pour les tests de charge et de performances et pour augmenter le cas d'utilisation et la couverture du code.

L'image montrant le flux de processus montre l'automatisation des tests d'interface utilisateur Selenium, l'enregistrement et la création de tests d'API, et la réutilisation des actifs pour les futurs tests fonctionnels, de performances et de sécurité
Le flux de processus montre l'automatisation des tests d'interface utilisateur Selenium, l'enregistrement et la création de tests d'API, ainsi que la réutilisation des actifs pour les futurs tests fonctionnels, de performances et de sécurité.

Obstacle 2: l'exécution des tests est instable, peu fiable et prend trop de temps à s'exécuter

Naturellement, les entreprises de logiciels s'attendent à ce que les tests automatisés soient efficaces et n'entravent pas la progression du développement. Cependant, au fur et à mesure que les suites de tests se développent, les problèmes liés à leur maintenance et à leur exécution augmentent également. Les tests, comme le code, sont affectés par le changement. Les nouvelles fonctionnalités ajoutées lors d'un sprint peuvent avoir un impact significatif sur l'interface utilisateur ou les flux de travail de l'application. Ces changements cassent les tests existants, les rendant instables. Il est important de les résoudre le plus rapidement possible.

Lorsque les tests échouent, vous devez comprendre le contexte de l'échec. Tous les échecs de test ne sont pas égaux. Certains cas d'utilisation sont plus importants que d'autres ou, peut-être, certains tests sont instables par nature. Ce qui manque, c'est une compréhension de l'impact des échecs de test ou des instabilités de test sur les priorités métier de l'application. L'étude de ces échecs de test constants devient une distraction par rapport à la stratégie globale d'automatisation des tests. La corrélation entre les exigences métier et les tests est essentielle pour garantir que la valeur de l'automatisation se concrétise.

Un autre obstacle est le temps réel d'exécution des suites de tests. À mesure que le portefeuille de tests se développe, le temps d'exécution augmente au-delà d'une période d'attente raisonnable pour les commentaires. Un retour d'information rapide sur le changement est essentiel pour un pipeline CI / CD réussi, de sorte que l'efficacité et la concentration des tests sont nécessaires.

Comment supprimer: exécution de test alimentée par l'IA

La solution à l'obstacle à l'exécution des tests est de tester plus intelligemment avec l'IA. Cela signifie tirer parti de l'IA d'automatisation des tests pour rendre les tests plus résilients au changement et pour cibler l'exécution sur des tests clés uniquement.

Accélérez les tests grâce à l'intelligence artificielle

Test de l'interface utilisateur intelligente avec Selenium et Selenic. En utilisant l'IA, Parasoft Sélénic tests d'auto-guérison lorsque des modifications de l'interface utilisateur sont détectées. Ceux-ci sont automatiquement utilisés mais des recommandations sont envoyées au développeur pour aider à corriger les tests. Ces correctifs peuvent être automatiquement appliqués aux tests Selenium, supprimant le débogage manuel et les modifications de code.

Image montrant le processus d'utilisation de l'IA pour l'auto-guérison des tests afin de réduire l'instabilité des tests, mais fournit également des recommandations et des correctifs rapides
L'utilisation de l'IA pour l'auto-guérison des tests réduit l'instabilité des tests, mais fournit également des recommandations et des solutions rapides.

Planifiez les tests des éléments de travail en fonction des exigences impactées. Pour hiérarchiser les activités de test, une corrélation entre les tests et les exigences métier est requise. Le suivi des user stories et des exigences offre une visibilité en temps réel sur la qualité de la chaîne de valeur. Les histoires d'utilisateurs et les exigences doivent être examinées en priorité. Les capacités de traçabilité dans Parasoft SOAtest sont utilisés pour planifier l'exécution des tests qui valident les éléments en cours de travail dans le sprint. Cependant, plus est nécessaire car on ne sait pas comment les modifications récentes ont eu un impact sur le code.

Image montrant des histoires (à gauche), des tests (au milieu), du code (à droite). La priorisation des tests en fonction des user stories impactées est la première étape pour optimiser l'exécution des tests.
La priorisation des tests en fonction des user stories impactées est la première étape pour optimiser l'exécution des tests.

Utilisez l'analyse d'impact des tests pour valider uniquement ce qui a changé. Pour optimiser pleinement l'exécution des tests, il est nécessaire de comprendre le code couvert par chaque test, puis de déterminer le code qui a changé. Les outils Parasoft fournissent cette capacité via un référentiel central pour les résultats des tests et l'analyse. L'analyse d'impact des tests permet aux testeurs de se concentrer uniquement sur les tests qui valident les modifications.

Image montrant des histoires (à gauche), des tests (au milieu), du code (à droite). L'analyse d'impact des tests détermine quels tests sont en corrélation avec le code qui a changé pour se concentrer uniquement sur ce qui doit être testé.
L'analyse d'impact des tests détermine quels tests sont en corrélation avec le code qui a changé pour se concentrer uniquement sur ce qui doit être testé.

Obstacle 3: l'environnement de test est indisponible, incontrôlable et contraint par les dépendances du système

L'environnement de test est la cheville ouvrière des obstacles qui empêchent les organisations de transformer des tests automatisés en tests continus. Il existe trois types de défis auxquels les organisations sont confrontées lorsqu'elles tentent de faire exécuter des tests à tout moment, n'importe où et de gérer les dépendances externes de l'application. Cela est particulièrement vrai pour une architecture de microservices. Le nombre de dépendances explose en raison de la nature même de la conception.

Défis de l'environnement de test

En attente d'accès à un système partagé, comme un mainframe ou une dépendance externe fournie par un tiers. La disponibilité peut être limitée dans le temps et coûteuse. C'est également un défi si la dépendance externe est fortement chargée avec plusieurs personnes travaillant dessus en même temps, ce qui entraîne une instabilité de test due aux collisions de données.

Goulots d'étranglement causés par un accès retardé. Cela est dû à la nature du développement parallèle et typique des processus modernes. Par exemple, plusieurs équipes collaborent pour fournir de nouvelles fonctionnalités à la chaîne de valeur, telles que des microservices interdépendants. Le test ne peut pas se poursuivre sur un microservice car un autre n'est pas encore disponible.

Données de test incontrôlables. Bien que les microservices soient relativement faciles à déployer et à tester de manière isolée, leurs dépendances aux données ou aux caractéristiques de performances limitent leur capacité à être testés de manière approfondie. Par exemple, la dépendance aux données d'une base de données de production partagée peut limiter la capacité de tester les services.

Comment supprimer: contrôler l'environnement de test

Commencez à simuler ces dépendances pour donner à l'équipe un contrôle total à l'aide d'une solution de virtualisation de services. Parasoft Virtualiser simule des services hors de votre contrôle ou indisponibles. Il fournit des flux de travail qui:

  • Permettez aux utilisateurs d'accéder à des environnements de test complets et réalistes.
  • Stabilisez leur environnement de test.
  • Accédez à des dépendances autrement inaccessibles.
  • Gérez la logique métier complexe, les données de test et les caractéristiques de performances requises pour que les services virtuels se comportent comme de vrais services dans l'environnement réel qu'ils représentent.

La virtualisation des services supprime les goulots d'étranglement. Voici comment.

Enregistrez et simulez: capturez, modélisez et fournissez des simulations de systèmes en direct.

En utilisant la capacité d'enregistrement de Parasoft SOAtest, il est possible de capturer le comportement de l'application dans son environnement. Parasoft Virtualize modélise le comportement des dépendances externes permettant de supprimer et de simuler le comportement des dépendances, dynamiquement à la volée, en alternant entre réel et virtuel. Rendre ces services et dépendances disponibles et stables, virtuellement, accélère le processus de test et permet des tests continus.

L'image montrant les dépendances dans l'environnement de test sont des obstacles au test.
Les dépendances dans l'environnement de test sont des obstacles aux tests. La virtualisation de ces dépendances supprime leur impact sur les tests et permet des tests continus.

Commencez par livrer un prototype: modèle de comportement basé sur des descriptions de contrat ou des exemples de charge utile.

La virtualisation des services permet le développement de prototypes sur la base des descriptions de contrat dérivées des enregistrements d'interaction API et de l'analyse dans SOAtest.

Livre blanc : Comment adopter et faire évoluer la virtualisation des services

Les services dépendants peuvent être simulés avec une bonne fidélité pour créer des versions prototypes qui remplissent leurs rôles dans le système lors du test d'un autre service adjacent. Cela supprime la limitation de planification inhérente au développement parallèle: même lorsque les services ne sont pas terminés, ils peuvent être virtualisés pour tester d'autres services.

Capture d'écran montrant la modélisation graphique, la cartographie et le contrôle d'un environnement de test.
Environment Manager fournit une modélisation graphique et un contrôle de l'environnement de test. Les services sont contrôlés et les paramètres de virtualisation sont configurés à l'aide de ce diagramme.

Synthétisez les données de test privées.

Les données de test constituent un autre obstacle au test des applications d'entreprise. De nombreuses organisations utilisent des données réelles, mais cela pose de nombreux problèmes de confidentialité. Les données purement synthétiques ne sont souvent pas suffisamment réalistes pour être testées, donc un compromis est nécessaire. La synthèse de données réelles en supprimant les informations personnelles identifiables (PII) fournit des données réalistes et sûres à utiliser. La gestion des données de test est nécessaire en conjonction avec la virtualisation des services pour fournir un environnement de test réaliste et hautement disponible qui n'entraînera aucun compromis en matière de confidentialité.

Les avantages des tests continus

L'élimination des principaux obstacles aux tests continus permet aux tests de se dérouler selon un calendrier régulier et prévisible. Il transforme les tests d'applications en permettant aux équipes de:

  • Testez plus tôt. Passez à gauche pour les tests en sprint où il est plus rapide, moins cher et plus facile de résoudre le problème.
  • Testez plus rapidement. Automatisez et exécutez en continu pour obtenir une rétroaction immédiate lorsque des défauts sont introduits.
  • Testez moins. Concentrez-vous et passez moins de temps à créer, maintenir et exécuter des scénarios de test. Réduisez le coût de l'infrastructure de test.
Découvrez comment votre équipe peut mettre en œuvre des tests continus pour détecter les défauts plus tôt, réduire les risques et fournir des logiciels de haute qualité.