what is cyclomatic complexity learn with an example
La complexité cyclomatique est un mot à la mode très courant dans la communauté du développement. Cette technique est principalement utilisée pour déterminer la complexité d'un morceau de code ou d'une fonctionnalité.
La technique a été développée par MaCabe et aide à identifier les 3 questions ci-dessous pour les programmes / fonctionnalités
- La fonctionnalité / le programme est-il testable?
- La fonctionnalité / le programme est-il compris par tout le monde?
- La fonctionnalité / le programme est-il suffisamment fiable?
En tant que QA, nous pouvons utiliser cette technique pour identifier le «niveau» de nos tests. C'est une pratique que si le résultat de la complexité cyclomatique est plus ou un plus grand nombre, nous considérons que l'élément de fonctionnalité est de nature complexe et par conséquent nous concluons comme un testeur; que le morceau de code / fonctionnalité nécessite des tests approfondis.
D'autre part, si le résultat de la complexité cyclomatique est un nombre plus petit, nous concluons en tant que QA que la fonctionnalité est moins complexe et décidons de la portée en conséquence.
Laissez-moi aller étape par étape: comprendre d'abord comment il est calculé, puis nous passerons à la manière dont le niveau de test est déterminé.
Ce que vous apprendrez:
- Comment calculer la complexité cyclomatique?
- Formule de complexité cyclomatique
- Exemple de complexité cyclomatique
- Comment les testeurs peuvent-ils l'utiliser?
- Vient maintenant le raccourci-
- lecture recommandée
Comment calculer la complexité cyclomatique?
Le calcul du CC s'articule autour de 2 concepts
- Nœuds
- Bords
Les instructions d'un programme sont représentées sous forme de nœuds et les chemins de contrôle d'une instruction à une autre sont représentés par des arêtes.
Formule de complexité cyclomatique
La formule de calcul du CC est la suivante:
CC = E ~ N + 2
Où:
E = nombre d'arêtes
N = nombre de nœuds.
(Il existe un raccourci pour le calculer, mais pas maintenant …… plus tard…)
Exemple de complexité cyclomatique
Prenons l'exemple ci-dessous pour le comprendre.
Considérez le graphique de flux de contrôle ci-dessous:
J'ai placé le RAPPORTER points pour identifier les nœuds et BLEU lignes pour identifier les arêtes:
Alors voici dans cet exemple:
Nombre de nœuds (points rouges) = 14
Nombre d'arêtes (lignes bleues) = 15
Donc, la complexité cyclomatique = N ~ E + 2 = (14-15) +2 = 3
Comment les testeurs peuvent-ils l'utiliser?
Dans le monde réel, les testeurs peuvent s'asseoir avec les développeurs pour dériver le graphe de flux de contrôle pour un morceau de code donné. Et une fois que nous avons le graphique, nous pouvons dériver la complexité en utilisant cette formule. Mais l'histoire des testeurs ne s'arrête pas là: - l'essentiel ici est - à quoi sert ce numéro pour l'équipe de test?
Eh bien, les testeurs peuvent utiliser ce nombre pour déterminer le niveau de leurs tests.
etl testing questions et réponses d'entrevue pour pdf expérimenté
En pratique, il existe 2 niveaux de test:
- Test de longueur
- Test de largeur
Considérez la matrice ci-dessous pour les différentes fonctionnalités de n'importe quel module: -
Le test de longueur est un moyen par lequel nous essayons de couvrir toute la portée en sélectionnant les cas de test importants pour chaque fonctionnalité. Par exemple , dans ce cas, supposons que je choisisse d'impliquer avec le test de longueur, alors je peux sélectionner -
- Sous-fonctionnalité 1.1 et sous-fonctionnalité 1.3 pour la fonctionnalité 1
- Sous-fonctionnalité 2.2 de la fonctionnalité 2
- Sous-fonction 3.3 de la fonction 3
- Sous-fonction 4.2 et sous-fonction 4.3 de la fonction 4
- Sous-fonction 5.3 de la fonction 5
Donc, ici, je touche à l'ensemble de la fonctionnalité sans entrer dans les détails exhaustifs des sous-fonctionnalités.
Maintenant, si le résultat du CC est un plus grand nombre, alors je choisis d'aller avec les tests de largeur, je testerai en fait chaque fonctionnalité avec chaque sous-fonctionnalité.
Ainsi, en fonction des exigences de votre projet actuel et de la fiabilité de l'environnement, les testeurs peuvent collaborer avec l'équipe de développement et créer une norme pour l'identification du niveau et de la portée des tests. Par exemple -
- Si le CC<=15 – Basic sanity test
- Si le CC est compris entre 16 et 30 - Test de longueur
- Si le CC est compris entre 31 et 50 - Test de largeur
- Si le CC> 50 - C'est une fonctionnalité chaotique et nécessite une décomposition supplémentaire
Vient maintenant le raccourci-
Comptez simplement le nombre de régions fermées et ajoutez-y 1.
Dans notre exemple ci-dessus - nombre de région fermée = 2 (rempli en jaune), donc le CC = 2 + 1 = 3
Dans le vrai travail, il est très difficile de conclure le résultat lorsque nous faisons des déclarations comme -
- «… .. cette fonctionnalité est très difficile à mettre en œuvre»
Qu'entendez-vous par difficile? Est-ce complexe, compliqué ou chaotique?
Comment avez-vous conclu que c'était difficile?
- '… Cela devrait être disponible d'ici la fin de la journée'
Qu'est-ce que la fin de la journée? Votre fin de journée est 19h00, la mienne est probablement 18h00?
- «… J'aurais besoin de faire des tests détaillés pour cela»
Qu'est-ce qu'un test détaillé? Il n’existe pas de technique de test appelée «Test détaillé»
- «… Le code doit être de bonne qualité avant de le déployer pour le contrôle qualité»
Comment mesurez-vous la bonne qualité?
Au lieu de cela, si je reformule les déclarations comme -
La complexité cyclomatique pour le morceau de code est calculée à 75 et selon nos normes; cette fonctionnalité est de nature chaotique. Par conséquent, nous recommandons de le décomposer davantage.
Plus de
- «… .. cette fonctionnalité est très difficile à mettre en œuvre»
La fonctionnalité sera déployée dans l'environnement QA à 17 h 00 CST.
Plus de
- '…. Cela devrait être disponible d'ici la fin de la journée'
Étant donné que la complexité cyclomatique est calculée à 48, selon notre norme, nous ferions les tests des systèmes avec les tests d'intégration et de régression pour la fonctionnalité.
Plus de
- '…. J'aurais besoin de faire des tests détaillés pour cela'
Selon Sonar, le CC est maintenant de 102. Nous avons normalisé pour avoir le CC à 10. Nous déploierons le code lorsque nous améliorerons le code pour rendre le CC inférieur à 10.
Implémentation de l'algorithme de chemin le plus court de dijkstra en java
Plus de
- '…. Le code doit être de bonne qualité avant de le déployer vers le contrôle qualité'
Quelle est la différence entre les deux déclarations?
Eh bien, la différence ici est la mesure. J'ai soutenu chacune de mes déclarations par des mesures appropriées qui aideraient mes parties prenantes à savoir exactement ce que je veux dire.
De même, utilisez la complexité Cyclomatic dans les tests logiciels pour déterminer la mesure exacte de vos efforts de test et vous pouvez l'utiliser non seulement pour identifier la portée de vos tests, mais également les types de tests que vous auriez besoin de faire.
lecture recommandée
- Qu'est-ce que le test de composant ou le test de module (apprendre avec des exemples)
- Qu'est-ce que le test de comparaison (apprendre avec des exemples)
- EBook sur le pack de carrière en test de logiciels
- Qu'est-ce que le test d'intégration de système (SIT): apprendre avec des exemples
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Téléchargement de l'e-book 'Testing Primer'
- 5 diagrammes importants dont les testeurs ont besoin pour apprendre à utiliser
- Tutoriel de révision TestRail: apprendre la gestion de cas de test de bout en bout