Pour comprendre la complexité cyclomatique, comprenons d'abord -
Qu'est-ce que Software Metric?
La mesure n'est rien d'autre qu'une indication quantitative de la taille / dimension / capacité d'un attribut d'un produit / processus. La métrique logicielle est définie comme une mesure quantitative d'un attribut qu'un système logiciel possède en ce qui concerne le coût, la qualité, la taille et le calendrier.
Exemple-
Mesure - Nombre d'erreursMesures - Nombre d'erreurs trouvées par personne
Dans ce didacticiel, vous apprendrez-
- Qu'est-ce que Software Metric?
- Qu'est-ce que la complexité cyclomatique?
- Notation de graphe de flux pour un programme:
- Comment calculer la complexité cyclomatique
- Propriétés de la complexité cyclomatique:
- En quoi cette métrique est-elle utile pour les tests logiciels?
- Plus sur V (G):
- Outils pour le calcul de la complexité cyclomatique:
- Utilisations de la complexité cyclomatique:
Complexité cyclomatique dans les tests de logiciels
La complexité cyclomatique dans les tests logiciels est une métrique de test utilisée pour mesurer la complexité d'un programme logiciel. Il s'agit d'une mesure quantitative des chemins indépendants dans le code source d'un logiciel. La complexité cyclomatique peut être calculée à l'aide de graphiques de flux de contrôle ou par rapport aux fonctions, modules, méthodes ou classes d'un programme logiciel.
Un chemin indépendant est défini comme un chemin qui a au moins un bord qui n'a pas été parcouru auparavant dans aucun autre chemin.
Cette métrique a été développée par Thomas J. McCabe en 1976 et est basée sur une représentation de flux de contrôle du programme. Le flux de contrôle représente un programme sous forme de graphique composé de nœuds et d'arêtes.
Dans le graphique, les nœuds représentent les tâches de traitement tandis que les arêtes représentent le flux de contrôle entre les nœuds.
Notation de graphe de flux pour un programme:
La notation Flow Graph pour un programme définit plusieurs nœuds connectés par les bords. Vous trouverez ci-dessous des diagrammes de flux pour des instructions telles que if-else, While, Until et la séquence normale du flux.
Comment calculer la complexité cyclomatique
Représentation mathématique:
Mathématiquement, il s'agit d'un ensemble de chemins indépendants à travers le diagramme graphique. La complexité du code du programme peut être définie à l'aide de la formule -
V (G) = E - N + 2
Où,
E - Nombre d'arêtes
N - Nombre de nœuds
V (G) = P + 1
Où P = nombre de nœuds de prédicat (nœud qui contient la condition)
Exemple -
i = 0;n = 4; // N-Nombre de nœuds présents dans le graphetandis que (iLe diagramme de flux pour ce programme sera
Calculer mathématiquement,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (les nœuds de condition sont 1,2 et 3 nœuds)
- Ensemble de base - Un ensemble de chemin d'exécution possible d'un programme
- 1, 7
- 1, 2, 6, 1, 7
- 1, 2, 3, 4, 5, 2, 6, 1, 7
- 1, 2, 3, 5, 2, 6, 1, 7
Propriétés de la complexité cyclomatique:
Voici les propriétés de la complexité cyclomatique:
- V (G) est le nombre maximum de chemins indépendants dans le graphe
- V (G)> = 1
- G aura un chemin si V (G) = 1
- Réduisez la complexité à 10
En quoi cette métrique est-elle utile pour les tests logiciels?
Le test du chemin de base est l'une des techniques de la boîte blanche et il garantit d'exécuter au moins une instruction pendant le test. Il vérifie chaque chemin linéairement indépendant à travers le programme, ce qui signifie que le nombre de cas de test sera équivalent à la complexité cyclomatique du programme.
Cette métrique est utile en raison des propriétés de la complexité cyclomatique (M) -
- M peut être le nombre de cas de test pour atteindre la couverture de branche (borne supérieure)
- M peut être le nombre de chemins à travers les graphiques. (Borne inférieure)
Prenons cet exemple -
Si (condition 1)Énoncé 1AutreÉnoncé 2Si (condition 2)Énoncé 3AutreÉnoncé 4La complexité cyclomatique de ce programme sera de 8-7 + 2 = 3.
La complexité étant calculée à 3, trois cas de test sont nécessaires à la couverture complète du chemin pour l'exemple ci-dessus.
Étapes à suivre:
Les étapes suivantes doivent être suivies pour le calcul de la complexité cyclomatique et la conception des cas de test.
Étape 1 - Construction du graphe avec des nœuds et des arêtes à partir du code
Étape 2 - Identification des chemins indépendants
Étape 3 - Calcul de la complexité cyclomatique
Étape 4 - Conception des cas de test
Une fois l'ensemble de base formé, TEST CASES doit être écrit pour exécuter tous les chemins.
Plus sur V (G):
La complexité cyclomatique peut être calculée manuellement si le programme est petit. Des outils automatisés doivent être utilisés si le programme est très complexe car cela implique plus de graphiques de flux. Sur la base du nombre de complexité, l'équipe peut conclure sur les actions qui doivent être prises pour la mesure.
Le tableau suivant donne un aperçu du nombre de complexité et de la signification correspondante de v (G):
Numéro de complexité Sens 1 à 10 Code structuré et bien écrit Coût de testabilité élevé et effort moindre 10-20 Code complexe Testabilité moyenne Le coût et l'effort sont moyens 20-40 Code très complexe Faible coût et effort de testabilité > 40 Pas du tout testable Coût et effort très élevés Outils pour le calcul de la complexité cyclomatique:
De nombreux outils sont disponibles pour déterminer la complexité de l'application. Certains outils de calcul de complexité sont utilisés pour des technologies spécifiques. La complexité peut être trouvée par le nombre de points de décision dans un programme. Les points de décision sont les instructions if, for, for-each, while, do, catch, case dans un code source.
Des exemples d'outils sont
- OCLint - Analyseur de code statique pour C et langages associés
- Reflector Add In - Métriques de code pour les assemblys .NET
- GMetrics - Trouver des métriques dans les applications liées à Java
Utilisations de la complexité cyclomatique:
La complexité cyclomatique peut s'avérer très utile pour
- Aide les développeurs et les testeurs à déterminer les exécutions de chemin indépendantes
- Les développeurs peuvent s'assurer que tous les chemins ont été testés au moins une fois
- Nous aide à nous concentrer davantage sur les chemins découverts
- Améliorer la couverture du code en génie logiciel
- Évaluer le risque associé à l'application ou au programme
- L'utilisation de ces paramètres au début du cycle réduit davantage le risque du programme
Conclusion:
La complexité cyclomatique est une métrique logicielle utile pour les tests structurés ou en boîte blanche. Il est principalement utilisé pour évaluer la complexité d'un programme. Si les points de décision sont plus nombreux, alors la complexité du programme l'est plus. Si le programme a un nombre de complexité élevé, la probabilité d'erreur est élevée avec un temps plus long pour la maintenance et le dépannage.