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

Analyse moderne pour les tests logiciels modernes

Portrait de Jeehong Min, directeur produit PAO chez Parasoft
le 21 mars 2023
6 min lire

Avoir une visibilité sur les mesures clés aide les équipes de développement et de test à prendre des décisions éclairées pour publier des logiciels de haute qualité dans les délais et dans les limites du budget. Lisez la suite pour savoir quelles mesures sont importantes à suivre.

Conduire une voiture sans visibilité est non seulement dangereux mais aussi imprudent. Cela vous expose, ainsi que tout le monde autour de vous, à des risques de collisions, de blessures et même de décès. Sans pouvoir voir la route devant vous, vous ne pouvez pas anticiper les dangers ou les obstacles potentiels, ce qui vous empêche de prendre des décisions éclairées et de prendre les mesures appropriées.

De même, développer un logiciel sans ajouter de visibilité au processus revient à conduire à l'aveuglette. Les métriques logicielles offrent la visibilité nécessaire pour identifier les problèmes potentiels de qualité et de sécurité qui nécessitent une attention immédiate afin que vous puissiez décider quand continuer à pousser fort et quand ralentir.

Pour aller plus loin, les analyses et les logiciels intelligents vous aident à :

  • Comprendre les métriques.
  • Évaluer le risque.
  • Mesurer la qualité.
  • Prédire les résultats.
  • Collaborez efficacement avec votre équipe.

Tout cela aide les équipes à :

  • Respecter les délais.
  • Livrer des produits de haute qualité.
  • Satisfaire les clients.

Comment planifier un logiciel moderne

Les projets logiciels modernes sont généralement planifiés en évaluant le coût des user stories à engager par rapport à la capacité de l'équipe. Habituellement, ces histoires sont capturées dans des outils comme Jira, GitHub ou Azure DevOps.

Les chefs de produit négocient avec les responsables du développement pour déterminer ce qui peut être fait de manière réaliste dans le cycle de publication actuel. Ensuite, les responsables du développement peuvent planifier en fonction de :

  • Nouvelles exigences.
  • Problèmes existants à résoudre.
  • Dette technique potentielle à combler.

Graphique d'une échelle démontrant l'équilibre requis pour la capacité d'une équipe et les points d'histoire engagés (coût).

Les plans, bien sûr, sont sujets à changement. La plupart des projets logiciels rencontrent des problèmes ou des obstacles qui peuvent modifier le résultat du plan. Les vulnérabilités de sécurité en particulier peuvent être un revers majeur. Les perturbations sont inévitables, mais sans pouvoir en mesurer l'impact, il devient difficile de freiner le projet.

Visibilité avec accès rapide

La visibilité est essentielle pour le développement de logiciels. Les outils de surveillance et les analyses fournissent des informations pour prendre des décisions sûres et efficaces.

Un accès rapide aux métriques de développement logiciel dans un tableau de bord facile à utiliser est important pour comprendre le développement logiciel statut et progression. L'accès rapide à des outils visuels tels que des tableaux de bord permet aux équipes de développement Agile de :

  • Identifiez les tendances, les modèles et les problèmes qui peuvent nécessiter une attention via une vue unique et consolidée des métriques clés.
  • Prenez des décisions éclairées en temps opportun à partir de mises à jour en temps réel sur les métriques de développement logiciel.
  • Comprenez des données complexes de manière plus intuitive et visuellement attrayante.

Quelles mesures sont importantes à suivre ?

Les métriques sont généralement collectées à des points où les outils d'automatisation des tests logiciels "touchent" le code. Généralement, la collecte se produit pendant l'analyse statique et l'exécution des tests. Les détails collectés peuvent être recoupés, par exemple, avec des fichiers, des tests particuliers, des vulnérabilités de sécurité connues ou des faiblesses logicielles, et des exigences.

Résultats de l'analyse statique

Lorsque j'ai commencé en tant que développeur, j'étais sceptique quant aux avantages de l'analyse statique. Je l'ai fait simplement parce que c'était une politique d'entreprise. Au fil des ans, j'ai appris à apprécier ses avantages. L'analyse statique détecte systématiquement certains problèmes qui n'auraient pas été détectés autrement et se sont manifestés comme des défauts pour les clients. Les avantages l'emportent sur les inconvénients d'avoir à supprimer les inévitables faux positifs de l'analyse statique.

L'analyse statique permet de déplacer les considérations de sécurité et de qualité du code plus tôt dans le cycle de vie du développement logiciel, permettant aux développeurs de résoudre les problèmes avant qu'ils ne deviennent plus coûteux et plus longs à résoudre.

By intégration de l'analyse statique dans le processus de développement, les développeurs peuvent identifier et résoudre les problèmes de sécurité avant qu'ils n'affectent les utilisateurs finaux. Pour certaines industries critiques pour la sécurité, l'analyse statique est indispensable pour maintenir votre base de code conforme aux exigences de codage et aux directives de l'industrie.

Un graphique montrant l'attention portée à la qualité sur l'axe des y et les étapes du SDLC sur l'axe des x. Les points de données comparent le niveau de qualité à chaque étape pour le modèle de décalage à gauche superposé par un modèle de qualité traditionnel.

Les mesures de l'analyse statique peuvent fournir des informations précieuses sur l'état de la qualité et de la sécurité de l'application, aidant les organisations à mieux planifier leurs efforts de développement logiciel. Des mesures telles que le nombre de défauts, leur gravité et leur emplacement dans la base de code peuvent aider les équipes à hiérarchiser les problèmes et à allouer les ressources en conséquence. Vous pouvez suivre les progrès au fil du temps et identifier les domaines à améliorer.

L'analyse statique contribue également à la conformité aux normes. Les métriques collectées fournissent aux organisations les données dont elles ont besoin pour démontrer la conformité aux normes industrielles ou réglementaires.

Résultats de test

Les résultats des tests sont les mesures les plus importantes (oui, les plus importantes) pour les équipes de développement de logiciels. Si les tests échouent, quelque chose ne va pas et nécessite une attention immédiate. Il existe différents types d'épreuves. Les équipes doivent collecter et examiner quotidiennement les métriques pour chaque type.

Tests unitaires

Les tests unitaires sont les éléments de base de votre suite de tests. Les principaux avantages sont :

  • Assurez-vous que l'unité de code fonctionne correctement.
  • Exécutez chaque build de votre code une fois qu'ils sont archivés et assurez-vous que l'unité continue de fonctionner.
  • Exécuter rapidement, ce qui signifie qu'ils peuvent être exécutés fréquemment lors de l'écriture d'un nouveau code ou de la modification d'un code existant.
  • Vous permet de refactoriser le code en toute confiance.
  • Vous force automatiquement à écrire du code testable.
  • Vous permet de mesurer facilement la couverture du code. La plupart des frameworks rendent cela assez facile.

Tests d'intégration d'API

Les tests d'intégration déterminent si les unités de logiciel développées indépendamment fonctionnent correctement lorsqu'elles sont connectées les unes aux autres. Tests API sont un type de test d'intégration.

Il y a une phrase qui est populaire dans le développement de logiciels : intégrez tôt, intégrez souvent.

Les tests d'intégration sont indispensables pour tirer pleinement parti de cette pratique. Ils sont plus difficiles à écrire que les tests unitaires. Cependant, tirer parti d'un bon outil ou cadre de test aide certainement. Et il faut plus de travail pour mesurer la couverture du code lors de l'exécution de tests d'intégration ou d'API.

Tests d'interface utilisateur

Les tests d'interface utilisateur sont un autre type de test qui pilote l'application via l'interface utilisateur. Ceux-ci sont précieux. Si vous pouvez automatiser les tests d'interface utilisateur, vous évitez à votre équipe d'avoir à exécuter des tests manuels encore et encore.

Ces tests sont les plus difficiles à écrire et peuvent être coûteux à maintenir. Leur exécution nécessite également un investissement dans une infrastructure de test où vous pouvez les exécuter avec certains navigateurs ou en mode sans tête. Mesurer la couverture du code nécessite également des investissements.

Notez que Parasoft propose des outils et des frameworks pour chacun de ces types de test, ce qui facilite l'écriture et la maintenance de ces tests, ainsi que la mesure de la couverture du code lors de leur exécution.

Essais manuels

Enfin, les tests manuels nécessitent que votre équipe d'assurance qualité (QA) valide manuellement les fonctionnalités du logiciel du point de vue de l'utilisateur final. Les résultats des tests manuels peuvent donner un aperçu de la convivialité et de l'expérience utilisateur du logiciel, en mettant en évidence les domaines où des améliorations peuvent être nécessaires.

Pyramide des tests en partant du bas vers le haut : tests unitaires, tests d'intégration d'API, tests d'interface utilisateur automatisés, personne indiquant manuel en haut.

Couverture de code

La couverture de code est une métrique qui va de pair avec vos résultats de test. Vous pouvez avoir 100% de réussite aux tests, mais si seulement 5% de votre base de code est testée, vous conduisez toujours à l'aveugle.

Avant un voyage en voiture, vous vous sentirez plus rassuré si votre voiture a passé une inspection de voiture en 150 points par rapport à seulement une inspection de voiture en 10 points. De la même manière, la couverture de code est une mesure utile qui est en corrélation avec la profondeur et la qualité de votre suite de tests.

Qu'est-ce qu'une bonne couverture ? Ça dépend.

Si vous démarrez un nouveau projet, il est raisonnable de viser une couverture de code de 80 % ou plus dès le début. Cela signifie que 80 % de votre base de code est testée. Si votre base de code est un mélange de nouveau code et de code hérité, il peut être difficile d'appliquer une couverture de code de 80 %. Dans ce cas, vous pouvez suivre deux autres métriques :

  1. Tendance de la couverture du code
  2. Couverture de code modifiée

Tendance de couverture et couverture de code modifiée

Si votre couverture globale du code est faible lorsque vous démarrez, disons 10 %, il peut être déraisonnable d'essayer d'atteindre une couverture du code de 80 %. Cependant, il est raisonnable de s'assurer que la couverture de votre code s'améliore toujours avec le temps.

Vous améliorez la couverture du code au fil du temps en suivant la tendance. Parallèlement à cela, une pratique recommandée par Parasoft consiste à mesurer la couverture de code modifiée. Il s'agit d'un sous-ensemble de votre couverture de code globale, uniquement la couverture de code du code qui a changé depuis que vous avez commencé à mesurer la couverture de code.

Parasoft recommande de fixer un objectif de couverture de code modifié de 80 %. En adoptant cette pratique, vous pouvez vous assurer que votre couverture globale du code continue de s'améliorer vers cet objectif de 80 %, même si vous commencez avec une faible couverture globale du code.

Différents types de couverture

Pour de nombreuses organisations, la mesure de la couverture des lignes peut suffire. Mais pour certaines industries critiques pour la sécurité, mesurer la couverture des lignes n'est pas suffisant. Les normes de sécurité telles que ISO 26262, CEI 62304 et DO-178C exigent la preuve d'une couverture de code suffisante métriques telles que déclaration, branche, MC/DC et autres. Les outils certifiés TÜV SÜD pour ces normes, comme Parasoft C/C++test, ont la capacité de mesurer des métriques avancées de couverture de code.

Rassemblement

Maintenant que vous savez quelles métriques sont importantes à suivre, vous voulez une visibilité facile et rapide de ces métriques. Parasoft DTP est un tableau de bord et un outil de reporting qui vous donne une visibilité sur toutes ces mesures, vous n'avez donc pas à conduire à l'aveugle.

Capture d'écran montrant un tableau de bord Parasoft DTP avec une analyse statique et des mesures de résultats de test pour tous les projets d'un flux de travail Agile.

Les équipes de développement peuvent utiliser des tableaux de bord comme celui-ci lors des réunions quotidiennes et pour montrer l'état de la qualité du projet aux parties prenantes lors des revues de sprint.

Les équipes de qualité et de conformité peuvent utiliser des tableaux de bord pour surveiller en permanence leurs efforts de conformité à certaines normes de l'industrie. Découvrez rapidement la PAO pour voir comment les équipes de développement obtiennent une visibilité complète.

Une meilleure qualité génère de la valeur

Lorsque vous avez une visibilité sur les mesures de qualité clés, vous n'aurez pas à conduire en aveugle. Au lieu de cela, à chaque étape, vous pouvez prendre des décisions éclairées qui donnent des résultats.

  • Libérez dans les délais et dans les limites du budget.
  • Moins de problèmes d'assistance.
  • Améliorer la satisfaction client.
  • Augmenter la notoriété de la marque.

Pourquoi conduire à l'aveugle quand on peut avoir de la visibilité ?

Vous voulez voir par vous-même comment vos équipes de développement et de test peuvent prendre des décisions éclairées avec des métriques clés ?