Blog

Cobertura de Pruebas de Software: ¿cómo aumenta con la Automatización?

En un anterior post hablé sobre el ROI de la automatización de pruebas y sus beneficios y mencioné que aumenta la cobertura de la prueba. Ahora bien, ¿sabemos realmente qué es la cobertura de prueba? En esta publicación, entraré en más detalles al respecto.

¿Cómo la Automatización incrementa la Cobertura de las Pruebas de Software?

Conocida comúnmente como test coverage, la cobertura de prueba es una de las medidas de la calidad de los tests que nos dice cuánto código se ha probado. Define ciertas entidades del sistema con la intención de cubrirlas con pruebas. Es una forma de indicar cuándo hemos probado lo suficiente y nos da ideas de qué más probar (ampliando así la cobertura).

Por ejemplo, considere realizar pruebas para que sea como barrer los pisos de su casa. Usualmente, me olvido de barrer alguna parte, como el baño del segundo piso, así que mi cobertura no incluye esa habitación. Imagínese si solo incluyera la limpieza de dormitorios para mis criterios de cobertura de barrido. Bajo ese criterio, si barro el 100% de los dormitorios, ¿significa que toda la casa está limpia?

¡No, porque falta la cocina, el comedor, los baños, etc.! Por lo tanto, tenga cuidado y mida la cobertura de la prueba con precaución. Tener un cierto nivel de cobertura es un indicador de la calidad de las pruebas, pero nunca es un indicador de la calidad del sistema, ni tampoco garantiza que todo haya sido probado. La cobertura de prueba nos dice qué porcentaje del código se ha probado, pero tampoco significa que se haya probado en todas las situaciones.

¿Para qué sirve la Cobertura de Prueba?

Siguiendo con el ejemplo anterior, la cobertura de la prueba es buena para:

  • Medir la calidad del barrido
  • Indicar cuando dejar de barrer
  • Saber qué otros lugares necesitan ser barridos

Ciertos criterios pueden ser más poderosos que otros. Conocerlos puede darle un indicador de cuán profundas son las pruebas y cuándo aplicar un criterio u otro. Por ejemplo, se dice que un criterio A incluye otro criterio B si cualquier conjunto de casos de prueba TS que cubre el criterio A también cubre el criterio B.

Según el ejemplo, para el barrido es posible que deseemos seguir los siguientes criterios:

  1. Barrer todos los dormitorios
  2. Barrer cada parte de la casa (dormitorio, baño, cocina, etc.)
  3. Barrer cada pequeño punto, incluso las esquinas, porque es probable que acumulen suciedad.

Como puede ver, el Criterio 3 incluye 2, que incluye 1 (la relación es transitiva ya que el número 3 incluye el número 1). Si diseñamos un caso de prueba para el criterio número 3, también debería cubrir los dos primeros criterios. Para probar software, los criterios generalmente incluyen diversos caminos, condiciones, declaraciones, funciones, etc. dentro de un programa.

Otro ejemplo real podría ser, por ejemplo, la partición de clases de equivalencia, donde se definen las clases y luego se selecciona un elemento de cada clase, y de esta manera cubrimos todas las clases. Si pensamos en pruebas de caja blanca, tenemos cobertura de sentencias, cobertura de rama, cobertura de ruta, etc., y en particular, para las state machines (estados de máquina), tenemos criterios que indican cubrir todos los nodos, todas las transiciones, etc.

¿Dónde encaja la Automatización de Pruebas en todo esto?

Bueno, imagine que se deshace de la escoba y la reemplazas con un robot súper rápido. Lograría limpiar los pisos más rápido y contemplar más lugares, lo que también le permitirá concentrarse en cosas más importantes mientras hace el trabajo por usted:

Más automatización de pruebas = más cobertura de pruebas

Y usted, ¿mide la cobertura de sus pruebas? ¿Se imagina cómo la automatización ayudaría a mejorar esta medida de calidad de los tests? Comience hoy mismo con la automatización de pruebas, conozca más sobre nuestro servicio de automatización de pruebas aquí.


Otros contenidos relacionados

¿Cómo optimizar la cobertura de las pruebas a largo plazo?

Automatización de Pruebas: el motor de la Ingeniería de Calidad

4 desafíos comunes de la Automatización de Pruebas: ¿cómo enfrentarlos?

40 / 145