Comment calculer la couverture conditionnelle?

Sep 17 2020

J'essaye de me préparer à tester et je vois le prochain exercice sur Internet:

Combien de cas de test sont nécessaires pour atteindre une couverture conditionnelle à 100%?

if ((temperature < 0) or (temperature > 100)) {
    alert ("DANGER");
    if ((speed > 100) and (load <= 50))}
        speed = 50;
   }
} else {
    check = false;
}
A. 5
B. 4
C. 2
D. 3

La bonne réponse est "A. 5". Pourquoi? Quelqu'un pourrait-il l'expliquer?

J'ai essayé de créer des cas de test qui utilisent chaque valeur pour chaque condition atomique:

t = -1, 1, 101

s = 99, 101

l = 49, 51

et si nous devons prendre une combinaison de toutes les valeurs, je peux le faire avec 3 cas, pas 5. Où me suis-je trompé?

Réponses

1 AlexeyR. Sep 17 2020 at 18:17

Voici le tableau montrant les valeurs qui ont un impact sur les conditions de votre code:

Puisqu'il y a quatre lignes avec des <0, >100conditions de température , vous pouvez choisir des valeurs différentes près des deux niveaux de seuil de température pour différents tests.

2 MohamedSulaimaanSheriff Sep 17 2020 at 13:21

Avec votre référence à votre cas de test, ce que vous avez fourni est correct, mais pensez à la manière dont l'application / la fonction prendra l'entrée. Cela ne peut prendre que trois entrées, donc lorsque vos conditions sont divisées en fonction de l'entrée, nous avons besoin de 5 cas de test pour l'exécuter.

Testez les données de votre référence:

t = -1, 1, 101

s = 99, 101

l = 49, 51

donc votre cas de test sera comme

  1. t = 1 s = 99 l = 49 (positif)
  2. t = -1 s = 99 l = 49 (négatif pour la température)
  3. t = 101 s = 99 l = 49 (négatif pour la température)
  4. t = 1 s = 99 l = 51 (négatif pour charge)
  5. t = 1 s = 101 l = 49 (négatif pour la vitesse)
1 MichaelDurrant Sep 17 2020 at 03:20

Pense

Test aux limites

basé sur les conditions indiquées.

Les conditions sont:

  • t <0
  • t> 0 et t <100 et ...
    • s> 100 et l <= 50
    • s> 100 et l> 50
    • s <100 ou l> 50
    • s <100 et l <50
LeeJensen Sep 17 2020 at 03:57

Si vous recherchez la couverture des instructions, c'est-à-dire que vous vous assurez que toutes les lignes de l'exemple de code ont été testées, vous souhaiterez utiliser ces cas de test. L'idée est de tester les conditions logiques avec différentes valeurs limites .

  1. Alertes de température "danger" lors de l'utilisation des valeurs -1 (ou moins)
  2. Alertes de température "danger" lors de l'utilisation des valeurs 101 (ou plus)
  3. Alertes de température «danger» et la vitesse passe à 50 lorsque la température est de -1 (ou moins) ET la vitesse est de 101 (ou plus) et la charge de 50 (ou moins)
  4. Alertes de température "danger" et la vitesse passe à 50 lorsque la température est de 101 (ou plus) ET la vitesse est de 101 (ou plus) et la charge de 50 (ou moins)
  5. La vérification est fausse lorsque la température est comprise entre 0 et 100, "danger" n'est pas alerté

Ou, pour reformuler d'une manière différente, voici comment examiner les conditions du code:

Numéro 1:

if (temperature < 0) {
    alert ("DANGER");
}

Numéro 2:

if (temperature > 100) {
    alert ("DANGER");
}

Numéro 3:

if (temperature < 0) {
    alert ("DANGER");
    if ((speed > 100) and (load <= 50))}
        speed = 50;
   }
}

Numéro 4:

if (temperature > 100) {
    alert ("DANGER");
    if ((speed > 100) and (load <= 50))}
        speed = 50;
   }
}

Numéro 5:

else {
    check = false;
}