[JAVA] À propos des types de couverture de code

Couverture de code

Résumé de cet article

Cet article décrit les trois types de couverture suivants.

Exemple de code utilisé dans l'explication

 if (Instruction conditionnelle A1||Instruction conditionnelle a2) { //Condition de jugement A

Énoncé 1 } else{ Énoncé 2

} if (instruction conditionnelle b1 && instruction conditionnelle b2) {// Condition de jugement B Énoncé 3 }


Couverture du relevé (C0: couverture des instructions)

Conclusion

--Le pourcentage d'instructions exécutables (instructions) qui ont été exécutées dans le test **
⇒ Pour atteindre une couverture de 100%, toutes les instructions exécutables doivent être exécutées au moins une fois

Dans le cas de l'exemple de code ci-dessus

Couverture des succursales (C1: couverture des succursales)

Conclusion

Dans le cas de l'exemple de code ci-dessus

  1. Condition de jugement A: vrai, condition de jugement B: faux
  2. Condition de jugement A: Faux, condition de jugement B: Vrai

Couverture d'état simple (C2: couverture d'état)

Conclusion

―― De toutes les instructions conditionnelles, ** le pourcentage des instructions conditionnelles exécutées dans le test **
⇒ Pour atteindre une couverture de 100%, la vérité de chaque instruction conditionnelle doit être exécutée au moins une fois.

Dans le cas de l'exemple de code ci-dessus

  1. Instruction conditionnelle a1: Vrai, Instruction conditionnelle a2: Faux, Instruction conditionnelle b1: Vrai, Instruction conditionnelle b2: Vrai
    → Condition de jugement A: ** Vrai **, Condition de jugement B: Vrai
  2. Instruction conditionnelle a1: False, Instruction conditionnelle a2: True, Instruction conditionnelle b1: False, Instruction conditionnelle b2: False
    → Condition de jugement A: ** Vrai **, Condition de jugement B: Faux

De plus, même si la couverture de C2 est de 100% comme dans l'exemple ci-dessus, la couverture de C0 et C1 n'est pas toujours de 100%.

référence

Recommended Posts

À propos des types de couverture de code
À propos de disconnect () de HttpURLConnection
À propos de la sélection d'OpenJDK
À propos de DI of Spring ①
À propos de DI of Spring ②
[Swift] À propos du type d'énumération
À propos de form. ○○ de form_with
À propos de la gestion de Null
À propos des instances Java
À propos du fonctionnement simple de Docker
À propos de la description de Docker-compose.yml
À propos des types de chargeur de classe Java
À propos de la comparaison de taille de compareTo
Code Climate Code qualité, mesure de la couverture
Mémorandum sur LOD.
À propos de la correspondance partielle du sélecteur
À propos du comportement de ruby Hash # ==
À propos de Biocontainers fastqc et Java
À propos de Lambda, Stream, LocalDate de Java8
À propos de la gestion des erreurs de la fonction de commentaire
[Rails] À propos de la mise en œuvre de la fonction similaire
A propos de la liaison de l'annotation Spring AOP
Qu'Est-ce que c'est? ~ 3 types de "non" ~
À propos du rôle de la méthode initialize
À propos de removeAll et de retentionAll de ArrayList
Être conscient du code facile à lire
Pensez aux 7 règles d'Optionnel
À propos du téléchargement d'images de jsp (servlet)
À propos du cache disque de la série Glide 4
A propos des types primitifs et des types de référence Java
[Rails] Types d'associations (un-à-plusieurs / plusieurs-à-plusieurs)
Liste des types ajoutés dans Java 9
Explique les objets Ruby Array
À propos du niveau de journalisation de java.util.logging.Logger
Types d'exceptions dans les systèmes d'entreprise
Structure de base du code source Java
Le point de vue lors de la révision du code d'une application web (Rails)