Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

Testez plus intelligemment, pas plus difficilement : déplacez les tests vers la gauche et la droite avec l'analyse d'impact des tests

Logo cube Parasoft 300x300
12 décembre 2023
6 min lire

L'analyse d'impact des tests permet aux développeurs de tester facilement, de manière plus intelligente et non plus difficile. Voici une couverture complète des avantages de l’analyse d’impact des tests et des raisons pour lesquelles les développeurs devraient l’intégrer dans leur routine de tests logiciels.

L'analyse d'impact des tests consiste à concentrer les tests spécifiquement sur les modifications apportées au cours de chaque itération et à tester exactement ce qui doit être testé, automatiquement. Les équipes qui tirent parti de cette technologie peuvent optimiser leurs efforts de test en cours de développement avec un retour instantané sur ce qui doit être fait.

Confirmé fréquemment par des enquêtes et des rapports du secteur, les tests logiciels constituent toujours un goulot d'étranglement, même après la mise en œuvre de processus de développement modernes tels que Agile, DevOps et l'intégration / déploiement continu. Dans certains cas, les équipes logicielles ne testent pas suffisamment et doivent faire face à des bogues et des vulnérabilités de sécurité aux étapes ultérieures du cycle de développement, ce qui crée une fausse supposition que ces nouveaux processus ne peuvent pas tenir leurs promesses. Une solution à certaines catégories de problèmes est le test à droite, qui repose sur la surveillance de l'application dans un environnement de production, mais qui nécessite une infrastructure solide comme le roc pour annuler les nouvelles modifications en cas de défaut critique.

En conséquence, les organisations manquent toujours de délais et la qualité et la sécurité en souffrent. Mais il y a un meilleur moyen! Pour tester plus intelligemment, les organisations utilisent une technologie appelée analyse d'impact de test pour comprendre exactement ce qu'il faut tester. Cette approche basée sur les données prend en charge à la fois test de décalage gauche et les tests de décalage à droite.

Agile et DevOps et le goulot d'étranglement des tests

Les tests dans tout processus itératif sont un compromis sur la quantité de tests pouvant être effectués dans un temps de cycle limité. Dans la plupart des projets, il est impossible de faire une régression complète à chaque itération. Au lieu de cela, un ensemble limité de tests est effectué et ce qu'il faut tester est basé sur les meilleures suppositions. Les tests sont également chargés dans le cycle car il n'y a généralement pas assez de nouvelles fonctionnalités terminées à tester. Le graphique d'effort en fonction du temps qui en résulte se termine comme une dent de scie, comme illustré ci-dessous dans la figure 1. Dans chaque cycle, seul un ensemble limité de tests est exécuté jusqu'au cycle final où les tests de régression est effectuée.

Graphique montrant que les processus Agile entraînent une activité de test en « dents de scie ». Seul le cycle de régression complet peut faire un test « complet ».
Les processus agiles se traduisent par une activité de test en « dents de scie ». Seul le cycle de régression complet peut faire un test « complet ».

Malheureusement, aucun projet n'atteint le cycle final avec zéro bogue et zéro vulnérabilité de sécurité. La découverte de défauts à ce stade ajoute des retards car les bogues sont corrigés et retestés. Et même avec ces retards et tous, de nombreux bogues se retrouvent encore dans le produit déployé, comme illustré ci-dessous.

Graphique montrant les défauts critiques. Les tests d’intégration et de régression complète ne sont jamais sans erreurs. Les défauts tardifs entraînent des dépassements de calendrier et de coûts.
L'intégration et les tests de régression complets ne sont jamais exempts d'erreurs. Les défauts de stade tardif entraînent des dépassements de délais et de coûts.

Cette situation a abouti à l’adoption de ce que l’on appelle les « tests Shift-Right », dans lesquels les organisations continuent de tester leurs applications jusqu’à la phase de déploiement. L'intention des tests Shift-Right est d'augmenter et d'étendre les efforts de test, les tests étant les plus adaptés à la phase de déploiement, tels que la surveillance des API, le basculement des fonctionnalités en production et la récupération des commentaires des opérations réelles.

Qu'est-ce que le test Shift-Right ?

Les difficultés à reproduire des environnements de test réalistes et à utiliser des données et un trafic réels dans les tests ont conduit les équipes à utiliser des environnements de production pour surveiller et tester leurs applications. Il y a qui ne s'occupent pas de leur chez-soi. à cela, par exemple, être en mesure de tester des applications avec un trafic de production en direct prenant en charge la tolérance aux pannes et l'amélioration des performances. Un cas d'utilisation courant est le soi-disant version canari, dans lequel une nouvelle version du logiciel est d'abord distribuée à un petit sous-ensemble de clients, puis déployée dans un groupe de plus en plus grand au fur et à mesure que des bogues sont signalés et corrigés. Roku, par exemple, le fait pour mettre à jour le micrologiciel de son appareil.

Les tests Shift-Right reposent sur une infrastructure de développement qui peut annuler une version en cas de défauts critiques. Par exemple, une faille de sécurité grave dans une version Canary signifie que la version est annulée jusqu'à ce qu'une nouvelle version mise à jour soit prête, comme vous pouvez le voir dans l'illustration ici:

Graphique montrant le retard et la restauration du produit qui incluent le retard du printemps, un incrément de travail de printemps de 2 à 3 semaines de la version logicielle conduit à des défauts critiques.
Les tests Shift Right reposent sur une solide infrastructure d'opérations de développement pour annuler les versions face à des défauts critiques.

Mais il y a des risques à utiliser des environnements de production pour surveiller et tester des logiciels, et bien sûr, L'intention des tests shift-right n'a jamais été de remplacer les pratiques de test unitaires, API et UI avant le déploiement! Le test Shift-right est un complémentaire pratique, qui étend la philosophie des tests continus à la production. Malgré cela, les organisations peuvent facilement abuser de ce concept pour justifier la réalisation d’encore moins de tests unitaires et d’API pendant le développement. Pour éviter cela, nous devons rendre les tests pendant les phases de développement plus faciles, plus productifs et produire des logiciels de meilleure qualité.

Tester plus intelligemment, pas plus dur, en ciblant vos tests

La plupart des logiciels ne sont pas entièrement testés, et la décision de ce qu'il faut tester est essentiellement basée sur les meilleures suppositions des développeurs sur ce qui est une fonctionnalité critique. Pendant un sprint SCRUM, ou une itération dans d'autres processus, il est difficile de déterminer ce qu'il faut tester, car, bien sûr, «tout tester» n'est pas une option. Étant donné que les délais sont courts, seules les parties du logiciel qui ont été mises à jour par les dernières fonctionnalités peuvent être testées, mais on ne sait généralement pas exactement quel code est affecté. L'automatisation des tests aide, mais sans comprendre exactement où et quoi tester, la couverture des tests est inadéquate.

Analyse d'impact des tests

Ces lacunes peuvent être surmontées en utilisant analyse d'impact de test, qui est une analyse multivariée de la couverture des tests, des changements de code et des dépendances qui identifie exactement le code à tester. De plus, ces tests exacts peuvent être programmés et exécutés automatiquement.

L'analyse d'impact des tests fonctionne au niveau du développeur dans l'EDI, collectant des informations sur le code exercé par quels tests, et applique ces informations dans l'EDI du développeur lorsque le développeur change de code, permettant au développeur d'identifier et d'exécuter facilement les tests spécifiques qui doivent être exécutés pour vérifier que le code modifié n'interrompt aucun test. En outre, le suivi des tests affectés qui ont été exécutés, de ceux qui ont réussi et de ceux qui ont échoué permet au développeur de déterminer facilement quels tests doivent encore être exécutés ou quels tests ont échoué et doivent être traités. Une fois que tous les tests ont été exécutés et réussis, le développeur sait qu'il est sûr de valider son code et de passer à autre chose.

L'analyse d'impact des tests fonctionne dans un processus CI / CD en s'intégrant de manière transparente dans le système de construction d'un projet tel que Maven ou Gradle, pour obtenir un retour immédiat sur les changements. L'analyse d'impact des tests identifie le code qui a changé depuis la construction de base (c'est-à-dire la dernière version nocturne), détermine quels tests doivent être exécutés pour exercer ce code, puis exécute uniquement ce sous-ensemble de tests. Ce flux de travail permet aux équipes de configurer des travaux CI qui n'exécutent que des tests basés sur les modifications de code les plus récentes, réduisant le temps nécessaire pour exécuter un travail CI de quelques heures à quelques minutes.

L'analyse d'impact des tests offre les avantages clés suivants:

  • Comprenez ce que couvre chaque test. En corrélant automatiquement les données d'exécution de test avec les données de couverture de test, l'analyse d'impact des tests fournit un mécanisme permettant d'identifier les tests à exécuter, en fonction du code en cours de développement. Les utilisateurs gagnent du temps sans avoir à exécuter des tests inutiles et les équipes bénéficient d'un retour d'information immédiat pendant le développement et après l'enregistrement du code.
  • Comprenez ce qui a changé. Les développeurs ne savent souvent pas quels tests exécuter pour valider les changements de code, donc ils (a) archivent leur code sans exécuter de tests (une très mauvaise pratique), (b) n'exécutent qu'un ou deux tests dont ils ont connaissance ( qui en manque facilement), ou (c) exécuter tous leurs tests (ce qui fait perdre du temps). L'analyse d'impact des tests résout ce problème en identifiant immédiatement quels tests sont liés à quel code change, et va encore plus loin en les exécutant automatiquement. Le code enregistré devient plus stable car il a été soigneusement testé avant l'enregistrement.
  • Concentrez-vous sur les tests qui valident les modifications et les dépendances impactées. Identifier et exécuter uniquement l'ensemble de tests nécessaires pour vérifier toutes les modifications de code et les dépendances affectées, qui ont été validées depuis la dernière génération de base (généralement la génération nocturne), réduit considérablement le temps nécessaire à l'exécution de CI. Cela permet aux équipes de bénéficier d'un véritable processus de CI.
  • Rétroaction immédiate et continue. En identifiant non seulement les dépendances directes entre les tests et le code, mais également les dépendances indirectes, l'analyse d'impact des tests aide les équipes à comprendre dès que possible après la vérification du code si le code a cassé des tests.

Résumé

Pour réduire considérablement le goulot d'étranglement des tests lors du développement et améliorer l'efficacité de l'effort «en dents de scie» que les testeurs mettent à chaque itération, les équipes de développement peuvent bénéficier de la technologie d'analyse d'impact des tests. L'automatisation des tests avec analyse de l'impact des tests signifie que les tests se concentrent spécifiquement sur les modifications apportées au cours de chaque itération et testent exactement ce qui doit être testé, automatiquement. Ces équipes optimisent leurs efforts de test en cours de développement avec un retour instantané sur ce qui doit être fait, quel code échoue aux tests et quel autre code est affecté par les nouveaux changements.

Guide pour l'IA dans les tests de logiciels