logo

Niveles de Cobertura de Código

Cobertura de Funciones
(Function Coverage)

→ Cuales son las funciones que ya fueron llamadas?

Mientras el proceso de pruebas, Cobertura de Funciones mide:

  • Cúantas veces cada función fue entrada
  • Cúantas veces las funciones fueron leídas completamente
Es una medición de cobertura débil, pero ofrece una estimación áspero para la minuciosidad de las pruebas.



Cobertura de Decisión (Rama)
(Decision Coverage - Branch Coverage)

→ Cuáles son las decisiones dentro de su código (if-statement o condición de loop) que ya fueron evaluadas tanto "verdadero" COMO "falso"?

Para cada función, Cobertura de Decisión mide si:

  • Cada rama dentro de un switch-statement ya fue tomada
  • Cada transferencia de control (goto, break, continue, return, throw) ya fue tomada
  • Cada manejador de excepciones ya fue visitado
Esta medición de Cobertura de Código le permite, en relación con Cobertura de Funciones, obtener un porcentaje más exacto de un código ya ejecutado.



Cobertura de Condición
(Condition Coverage)

→ Cuáles son las condiciones de su código (por ejemplo expresiones booleanas, separados por un "O" lógico dentro de un if-statement) que ya fueron evaluadas tanto "verdadero" COMO "falso"?

Pareciendo un poco como Cobertura de Decisión, Cobertura de Condición mide, para cada nodo condicional de cada función, si todos sub-expresiones booleanas atómicas contenido dentro de la condicón ya fueron evaluadas tanto "verdadero" como "falso".


Cobertura de Decisión de Condición Modificada (MC/DC)
(Modified Condition/Decision Coverage - MC/DC – MCDC)

→ Cuáles son las condiciones de su código que ya fueron evaluadas tanto "verdadero" COMO "falso", afectando independientemente el resultado de las decisiones?

Más arriba de los requisitos de Cobertura de Condición y Decisión, Cobertura de Decisión de Condición Modificada implica que cada condición tiene que ser evaluada (por lo menos una vez) en un caso en el que afecta independientemente el resultado de la decisión. Se encuentra una condición que independientemente afecta el resultado de una decisión cuando se modifica sólamente esta condición, sosteniendo fijo todas las condiciones adicionales.

Esta medición, creada por Boeing, se conforma a los estánderes técnicos DO-178C que especializan los requisitos para la certificación de software por equipos y sistemas de misión crítica dentro del sector aeroespacial.

  • Ventajas: Necesita menos casos de prueba que MCC
    ( n condiciónes ⇒ n+1 pruebas)
  • Desventajas: A veces los casos de pruebas no se encuentra tan fácil...


Cobertura de Condición múltiple (MCC)
(Multicondition Coverage - Multiple Condition Coverage – MCC)

→ Cúales son las condiciónes de su código que ya fueron evaluadas dentro de todas las combinaciones de condiciones posibles?

Arriba de los requisitos de Cobertura de Condición, Cobertura de Condición Múltiple implica que, para cada decision, cada combinación posible de valores booleanos tiene que ser evaluada.

  • Ventajas: Calidad de código asegurada ya que todas las posibilidades fueran evaluadas
  • Desventajas: Necesita más casos de pruebas que MCDC
    ( n condiciones ⇒ 2n pruebas)


La herramienta Testwell CTC++ es capaz de analizar todos los requisitos de Cobertura de Código (especialmente por MC/DC y MCC), necesarios en el desarrollo de software crítico para obtener ciertas certificaciones.

Glosario:

Condición: Expresión lógica que puede ser evaluada sólamente "verdadera" o "falsa". Muchas veces se la llama variable booleana y esta representada por una letra mayúscula (A, B, C, ...).

Decisión: Una expresión lógica, compuesta de varias condiciones seperados por operadores lógicos como "o", "y", "o exclusivo".