Tutoriel sur la couverture du code: succursale, déclaration, décision, FSM

Table des matières:

Anonim

Qu'est-ce que la couverture du code?

La couverture de code est une mesure qui décrit le degré auquel le code source du programme a été testé. C'est une forme de test de boîte blanche qui trouve les zones du programme non exercées par un ensemble de cas de test. Il crée également des cas de test pour augmenter la couverture et déterminer une mesure quantitative de la couverture de code.

Dans la plupart des cas, le système de couverture de code recueille des informations sur le programme en cours d'exécution. Il combine également cela avec des informations de code source pour générer un rapport sur la couverture du code de la suite de tests.

Dans ce didacticiel, vous apprendrez-

  • Qu'est-ce que la couverture du code?
  • Pourquoi utiliser la couverture de code?
  • Méthodes de couverture du code
  • Couverture de l'état
  • Couverture décisionnelle
  • Couverture de la succursale
  • Couverture de l'état
  • Couverture de la machine à états finis
  • Quel type de couverture de code choisir
  • Couverture du code vs couverture fonctionnelle
  • Outils de couverture de code
  • Avantages et inconvénients de l'utilisation de la couverture de code

Pourquoi utiliser la couverture de code?

Voici quelques raisons principales d'utiliser la couverture de code:

  • Il vous aide à mesurer l'efficacité de la mise en œuvre des tests
  • Il offre une mesure quantitative.
  • Il définit le degré auquel le code source a été testé.

Méthodes de couverture du code

Voici les principales méthodes de couverture de code

  • Couverture de l'état
  • Couverture décisionnelle
  • Couverture de la succursale
  • Basculer la couverture
  • Couverture FSM

Couverture de l'état

La couverture des déclarations est une technique de test en boîte blanche dans laquelle toutes les instructions exécutables du code source sont exécutées au moins une fois. Il est utilisé pour le calcul du nombre d'instructions dans le code source qui ont été exécutées. L'objectif principal de Statement Coverage est de couvrir tous les chemins, lignes et instructions possibles dans le code source.

La couverture de déclaration est utilisée pour dériver un scénario basé sur la structure du code testé.

Dans White Box Testing, le testeur se concentre sur le fonctionnement du logiciel. En d'autres termes, le testeur se concentrera sur le fonctionnement interne du code source concernant les graphiques de flux de contrôle ou les organigrammes.

Généralement, dans tout logiciel, si nous regardons le code source, il y aura une grande variété d'éléments tels que des opérateurs, des fonctions, des boucles, des gestionnaires exceptionnels, etc. En fonction de l'entrée du programme, certaines des instructions de code peuvent ne pas être exécutées . L'objectif de la couverture de déclaration est de couvrir tous les chemins, lignes et instructions possibles dans le code.

Comprenons cela avec un exemple, comment calculer la couverture des déclarations.

Scénario pour calculer la couverture du relevé pour un code source donné. Ici, nous prenons deux scénarios différents pour vérifier le pourcentage de couverture des déclarations pour chaque scénario.

Code source:

Prints (int a, int b) {------------ Printsum est une fonctionrésultat int = a + b;Si (résultat> 0)Imprimer ("Positive", résultat)AutreImprimer ("Négatif", résultat)} ----------- Fin du code source

Scénario 1:

Si A = 3, B = 9

Les instructions marquées en jaune sont celles qui sont exécutées selon le scénario

Nombre d'instructions exécutées = 5, nombre total d'instructions = 7

Couverture du relevé: 5/7 = 71%

De même, nous verrons le scénario 2,

Scénario 2:

Si A = -3, B = -9

Les instructions marquées en jaune sont celles qui sont exécutées selon le scénario.

Nombre d'instructions exécutées = 6

Nombre total d'instructions = 7

Couverture du relevé: 6/7 = 85%

Mais dans l'ensemble, si vous voyez, toutes les déclarations sont couvertes par le deuxième scénario considéré. Nous pouvons donc conclure que la couverture globale des déclarations est de 100%.

Qu'est-ce qui est couvert par la couverture des relevés?

  1. Déclarations inutilisées
  2. Code mort
  3. Branches inutilisées
  4. Déclarations manquantes

Couverture décisionnelle

La couverture de décision est une technique de test en boîte blanche qui rapporte les résultats vrais ou faux de chaque expression booléenne du code source. Le but des tests de couverture de décision est de couvrir et de valider tout le code source accessible en vérifiant et en s'assurant que chaque branche de chaque point de décision possible est exécutée au moins une fois.

Dans cette couverture, les expressions peuvent parfois devenir compliquées. Par conséquent, il est très difficile d'atteindre une couverture à 100%. C'est pourquoi il existe de nombreuses méthodes différentes pour signaler cette métrique. Toutes ces méthodes visent à couvrir les combinaisons les plus importantes. Elle est très similaire à la couverture de décision, mais elle offre une meilleure sensibilité au flux de contrôle.

Exemple de couverture de décision

Considérez le code suivant-

Démo (int a) {Si (a> 5)a = a * 3Imprimer (a)}

Scénario 1:

La valeur de a est 2

Le code surligné en jaune sera exécuté. Ici, le résultat "Non" de la décision Si (a> 5) est vérifié.

Couverture décisionnelle = 50%

Scénario 2:

La valeur de a est 6

Le code surligné en jaune sera exécuté. Ici, le résultat "Oui" de la décision Si (a> 5) est vérifié.

Couverture décisionnelle = 50%

Cas de test Valeur de A Production Couverture décisionnelle
1 2 2 50%
2 6 18 50%

Couverture de la succursale

La couverture de branche est une méthode de test en boîte blanche dans laquelle chaque résultat d'un module de code (instruction ou boucle) est testé. Le but de la couverture des succursales est de garantir que chaque condition de décision de chaque succursale est exécutée au moins une fois. Il permet de mesurer des fractions de segments de code indépendants et de découvrir les sections n'ayant pas de branches.

Par exemple, si les résultats sont binaires, vous devez tester les résultats True et False.

La formule pour calculer la couverture de la succursale:

Exemple de couverture de succursale

Pour apprendre la couverture des branches, considérons le même exemple utilisé précédemment

Considérez le code suivant

Démo (int a) {Si (a> 5)a = a * 3Imprimer (a)}

La couverture de la succursale considérera également la succursale inconditionnelle

Cas de test Valeur de A Production Couverture décisionnelle Couverture de la succursale
1 2 2 50% 33%
2 6 18 50% 67%

Avantages de la couverture des succursales:

Les tests de couverture des succursales offrent les avantages suivants:

  • Permet de valider toutes les branches du code
  • Vous aide à vous assurer qu'aucune ramification ne conduit à une anomalie du fonctionnement du programme
  • La méthode de couverture des succursales supprime les problèmes qui se produisent en raison des tests de couverture des déclarations
  • Vous permet de trouver les zones qui ne sont pas testées par d'autres méthodes de test
  • Il vous permet de trouver une mesure quantitative de la couverture du code
  • La couverture de branche ignore les branches à l'intérieur des expressions booléennes

Couverture de l'état

La couverture de condition ou couverture d'expression est une méthode de test utilisée pour tester et évaluer les variables ou sous-expressions dans l'instruction conditionnelle. Le but de la couverture de condition est de vérifier les résultats individuels pour chaque condition logique. La couverture de condition offre une meilleure sensibilité au flux de contrôle que la couverture de décision. Dans cette couverture, seules les expressions avec des opérandes logiques sont prises en compte.

Par exemple, si une expression a des opérations booléennes telles que AND, OR, XOR, ce qui indique les possibilités totales.

La couverture de l'état ne donne pas une garantie sur la couverture de décision complète.

La formule pour calculer la couverture conditionnelle:

Exemple:

Pour l'expression ci-dessus, nous avons 4 combinaisons possibles

  • TT
  • FF
  • TF
  • FT

Tenez compte de l'entrée suivante

X = 3

Y = 4

(x

VRAI

La couverture de l'état est de ¼ = 25%

A = 3

B = 4

(a> b)

FAUX

Couverture de la machine à états finis

La couverture de machine à états finis est certainement le type de méthode de couverture de code le plus complexe. C'est parce que cela fonctionne sur le comportement de la conception. Dans cette méthode de couverture, vous devez rechercher combien d'états spécifiques au temps sont visités, transités. Il vérifie également combien de séquences sont incluses dans une machine à états finis.

Quel type de couverture de code choisir

C'est certainement la réponse la plus difficile à donner. Afin de sélectionner une méthode de couverture, le testeur doit vérifier que le

  • le code testé a un ou plusieurs défauts non découverts
  • coût de la pénalité potentielle
  • coût de la réputation perdue
  • coût de la vente perdue, etc.

Plus la probabilité que les défauts provoquent des échecs de production coûteux est élevée, plus le niveau de couverture que vous devez choisir est élevé.

Couverture du code vs couverture fonctionnelle

Couverture de code Couverture fonctionnelle
La couverture du code vous indique dans quelle mesure le code source a été exercé par votre banc de test. La couverture fonctionnelle mesure dans quelle mesure la fonctionnalité de la conception a été couverte par votre banc d'essai.
N'utilisez jamais de spécification de conception Utiliser les spécifications de conception
Réalisé par les développeurs Réalisé par les testeurs

Outils de couverture de code

Voici une liste des outils de couverture de code importants:

Nom de l'outil Description
Cobertura C'est un outil de couverture de code open source. Il mesure la couverture des tests en instrumentant une base de code et analyse les lignes de code en cours d'exécution et celles qui ne sont pas exécutées lors de l'exécution de la suite de tests.
Trèfle Clover réduit également le temps de test en exécutant uniquement les tests qui couvrent le code de l'application qui a été modifié depuis la version précédente.
DevPartner DevPartner permet aux développeurs d'analyser le code Java pour la qualité et la complexité du code.
Emma EMMA prend en charge la couverture de classe, de méthode, de ligne et de bloc de base, de fichier source agrégé, de classe et de méthode.
Kalistick Kalistick est une application tierce qui analyse les codes avec différentes perspectives.
CoView et CoAnt Le logiciel de codage est un outil de couverture de code pour les métriques, la création d'objet fictif, la testabilité du code, la couverture de chemin et de branche, etc.
Bullseye pour C ++ BulseyeCoverage est un outil de couverture de code pour C ++ et C.
Sonar Sonar est un outil de couverture de code ouvert qui vous aide à gérer la qualité du code.

Avantages de l'utilisation de la couverture de code

  • Utile pour évaluer une mesure quantitative de la couverture de code
  • Il vous permet de créer des cas de test supplémentaires pour augmenter la couverture
  • Il vous permet de trouver les zones d'un programme qui ne sont pas exercées par un ensemble de cas de test

Inconvénients de l'utilisation de la couverture de code

  • Même lorsqu'aucune fonctionnalité spécifique n'est implémentée dans la conception, la couverture du code indique toujours une couverture de 100%.
  • Il n'est pas possible de déterminer si nous avons testé toutes les valeurs possibles d'une fonctionnalité à l'aide de la couverture de code
  • La couverture du code ne dit pas non plus dans quelle mesure et dans quelle mesure vous avez couvert votre logique
  • Dans le cas où la fonction spécifiée n'a pas été implémentée ou n'est pas incluse dans la spécification, les techniques basées sur la structure ne peuvent pas trouver ce problème.

Résumé

  • La couverture du code est une mesure qui décrit le degré auquel le code source du programme a été testé
  • Il vous aide à mesurer l'efficacité de la mise en œuvre des tests
  • Cinq méthodes de couverture de code sont 1.) Couverture des relevés 2.) Couverture de l'état 3) Couverture de la succursale 4) Basculer la couverture 5) Couverture FSM
  • La couverture des instructions implique l'exécution de toutes les instructions exécutables dans le code source au moins une fois
  • La couverture de décision rapporte les résultats vrais ou faux de chaque expression booléenne
  • Dans la couverture de branche, chaque résultat d'un module de code est testé
  • Conditionnel révélera comment les variables ou sous-expressions dans l'instruction conditionnelle sont évaluées
  • La couverture de machine à états finis est certainement le type de méthode de couverture de code le plus complexe
  • Afin de sélectionner une méthode de couverture, le testeur doit vérifier le coût de la pénalité potentielle, la perte de réputation, la vente perdue, etc.
  • La couverture du code vous indique dans quelle mesure le code source a été exercé par votre banc de test tandis que la couverture fonctionnelle mesure dans quelle mesure la fonctionnalité de la conception a été couverte
  • Cobertura, JTest, Clover, Emma, ​​Kalistick sont quelques outils importants de couverture de code
  • La couverture du code vous permet de créer des cas de test supplémentaires pour augmenter la couverture
  • La couverture du code ne vous aide pas à déterminer si nous avons testé toutes les valeurs possibles d'une fonctionnalité