code metrics – Visual Studio Code Coverage ¿Qué es el análisis de cobertura de código?

Visual Studio code coverage
Visual Studio code coverage

Artículos relacionados

Para descargar el código haz clic acá.

El Code Coverage fue uno de los primeros métodos inventados para las pruebas de software. Este método fue publicado por Miler y Maloney en el magazine Communications of the ACM del año 1963. El Code Coverage es una medida que indica el grado en el que el código fuente es probado por un conjunto de casos de prueba. Este dato puede ser usado para determinar la cantidad de líneas de código han sido ejecutadas por las pruebas y las líneas de código que aún faltan probar. El análisis de Code Coverage permite:

  1. Buscar áreas de un programa que no fueron ejecutas por un conjunto de pruebas.
  2. Crear casos de pruebas adicionales para incrementar el abarcamiento.
  3. Determinar una medida cuantitativa de la cantidad de código abarcado o probado, la cual es una medida de calidad indirecta.
  4. Identificar casos de prueba redundante que no incrementan el abarcamiento.

Recuerden el Code Coverage es usado para asegurar la calidad de las pruebas, no la calidad del producto. El análisis de Code Coverage también es llamado análisis de Test Coverage.

Visual Studio Code Coverage

El Visual Studio Code Coverage incluye datos que se muestran en la ventana Code Coverage Result y resaltados en las líneas de código. El Code Coverage se aplica a:

  • Bloques de código: Es una ruta de código con un simple punto de entrada, un simple punto de salida y un conjunto de sentencias que son ejecutadas en secuencia.
  • Líneas de código: Es una línea de código ejecutable, se excluyen: espacios en blanco, comentarios, declaraciones de tipos y declaraciones de espacios de nombre. Una línea de código puede contener muchos bloques de código.
  • Líneas parciales: Si una línea de código contiene muchos bloques de código y solo una porción de estos bloques es ejecutada por una prueba, entonces es considerada como una línea parcial.

Para entrar más a detalle entre las diferencias entre bloques de código y líneas de código les recomiendo que lean este artículo: Block Statistics in Code Coverage

Medidas usadas
Medidas code coverage
Medidas code coverage
Colores usados
Colores code coverage
Colores code coverage
Ejemplo:

Tenemos el siguiente código:

string ValidarTriangulo(int a, int b, int c)
{
	if (a <= 0 || b <= 0 || c <= 0)
	{
		return "Triangulo Inválido";
	}

	if ((a > b + c || b > a + c || c > a + b))
	{
		return "Triangulo Inválido";
	}

	if (a == b && b == c)
	{
		return "Triangulo Equilátero";
	}

	if (a == b || b == c || a == c)
	{
		return "Triangulo Isósceles";
	}

	return "Triangulo  Escaleno";
}
 Primera prueba:
[TestMethod]
public void Validar_AngulosMenoresCero_RetornaTrianguloInvalido()
{
    //Arrange
    var triangulo = new Triangulo();

    //Act
    var resultado = triangulo.Validar(0, 0, 0);

    //Assert
    Assert.AreEqual("Triangulo Inválido", resultado);
}

Abrimos el Test Explorer, escogemos la prueba  Validar_AngulosMenoresCero_RetornaTrianguloInvalido y seleccionamos la opción Analisys Code Coverage for Selected Tests.

Ejecutar Code coverage triangulo
Ejecutar Code coverage triangulo

Vemos que la cobertura del código para ese método es del 20.00%.

Code coverage triangulo parte1
Code coverage triangulo parte1

Hacemos doble clic sobre el método Validar y aparecerá el código fuente de la siguiente forma.

Code coverage Validar triangulo
Code coverage Validar triangulo
  • La línea if (a <= 0 || b <= 0 || c <= 0),  fue abarcada parcialmente.
  • La línea return “Triangulo Inválido”;, fue ejecutada por la prueba.
  • Las demás líneas no fueron ejecutadas.
 Segunda prueba:
[TestMethod]
public void Validar_AngulosInvalidos_RetornaTrianguloInvalido()
{
    //Arrange
    var triangulo = new Triangulo();

    //Act
    var resultado = triangulo.Validar(17, 8, 8);

    //Assert
    Assert.AreEqual("Triangulo Inválido", resultado);
}

Abrimos el Test Explorer  y seleccionamos la opción Analisys Code Coverage for All Tests.

Code coverage run all test

Vemos que la cobertura del código para ese método es del 44.00%.

Code coverage triangulo parte2
Code coverage triangulo parte2

Hacemos doble clic sobre el método Validar y aparecerá el código fuente de la siguiente forma.

Code coverage Validar triangulo parte 2
Code coverage Validar triangulo parte 2
  • La línea if (a <= 0 || b <= 0 || c <= 0), fue ejecutada por la prueba.
  • la línea if ((a > b + c || b > a + c || c > a + b)), fue ejecutada parcialmente.
  • La línea return “Triangulo Inválido”;, fue ejecutada por la prueba.
  • Las demás líneas no fueron ejecutadas.

Para descargar el código haz clic acá.

Conclusión:

Code Coverage también es llamado análisis de Test Coverage y es usado para asegurar la calidad de las pruebas, no la calidad del producto. Es una medida que indica el grado en el que el código fuente es probado por un conjunto de casos de prueba. El Code Coverage se aplica a líneas de código, bloques de código y líneas parciales. Se usan tres colores para indicar el tipo de abarcamiento: LightBlue, indica que se ejecutó una línea de código; Beige, indica que solo se ejecutó una porción del código de una línea; y el Reddish Brown; indica que no se ejecutó el código.

Referencias:
Metal Tip:

Este artículo lo escribí escuchando la canción Mad House de la banda Anthrax de Estados unidos, les comparto el enlace.

Anuncios

2 comentarios en “code metrics – Visual Studio Code Coverage ¿Qué es el análisis de cobertura de código?

  1. Entiendo que esta métrica me indica la cobertura de mi prueba respecto al método que pruebo, pensé que me daría los caminos que se habían probado y los que no analizando el código vs las pruebas realizadas.

    Me gusta

    1. También incluye las llamadas a otros métodos que se hacen dentro de una prueba, hablamos de: el constructor de la clase, métodos privados, métodos estáticos, llamada a propiedades, etc. No solo se da la cobertura del método bajo prueba sino todo el código que se llamó dentro de este método.

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s