Trabajando con las pruebas unitarias en un algoritmo con objetos

¿Cómo podemos identificar más fácilmente dónde se introdujo un defecto en un algoritmo? Durante la serie de Algoritmos Mantenibles, logramos crear un algoritmo como un árbol de objetos como el siguiente:

arbol-de-objetos

Los objetos de responsabilidad única nos permiten probar unitariamente cada rama del árbol. Esto contrasta con las pruebas de un procedimiento, en donde probamos una sola pieza grande. Cada uno de los  rectángulos en la siguiente imagen representadan las pruebas unitarias de cada objeto, con lo que vemos que tenemos una cobertura completa. Las pruebas de un objeto superior tambien ejercitan los objetos inferiores:

cobertura-de-pruebas-de-los-objetos

Cuando una prueba unitaria falla, estaremos seguros de que el error está confinado a uno de los rectángulos, por lo que será más fácil de corregir. Como se ilustra en la imagen, si una prueba unitaria de ApellidosFormateados falla (cuadro en rojo), sabremos que el área a revisar es la clase misma, pues las pruebas unitarias de ApellidosEnMayusculas están exitosas (el cuadro está azul). Además, revisaremos que estemos enviando los parámetros correctos al crear ApellidosFormateados.

cobertura-de-pruebas-de-los-objetos-falla-localizada

Por otro lado, si las pruebas unitarias de ambos ApellidosFormateados  y ApellidosEnMayusculas fallan, podemos ir al objeto más inferior pues allí es donde se introdujo un defecto, o revisar si cambiamos los parámetros con que creamos ApellidosFormateados.

falla-en-el-ultimo-objeto

Este es un de los motivos por los que es muy útil visualizar los llamados entre los objetos al programar. Si solamente vemos al software como archivos de texto duraremos más tiempo en identificar dónde se dan los errores.

El código fuente de este ejemplo lo podemos encontrar en este repositorio: https://github.com/oscarcenteno/algoritmos.cs.sujetos.

Este es una de las ventajes de la programación con objetos de responsabilidad única.

Un comentario sobre “Trabajando con las pruebas unitarias en un algoritmo con objetos

  1. Definitivamente las pruebas unitarias son muy útiles. Ademas es mas fácil visualizar los llamados entre los objetos al programar. Porque si solamente vemos al software como archivos de texto, se dura más tiempo en identificar dónde se dan los errores y también se da un sentimiento de frustración.

    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 )

Google+ photo

Estás comentando usando tu cuenta de Google+. 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 )

w

Conectando a %s