Characterisation tests: ¿Qué son y cómo utilizarlos?

¿Alguna vez te has encontrado con un código en producción del que no tienes contexto alguno? Ya sea porque se trata de un proyecto legacy, carece de documentación o simplemente no se realizó ningún test sobre él. En situaciones como estas, los Characterisation Tests pueden ser la solución que necesitas.

En un encuentro reciente, Kristian Muñoz, Senior Software Craftsperson en Codurance, explica en qué consisten estos tests y cómo pueden ayudar a comprender y modificar código sin contexto.

¿Qué son los characterisation tests?

Los test de caracterización o, también conocidos como tests de comportamiento, son pruebas diseñadas específicamente para verificar y comprender las características y el comportamiento real de un código. En este sentido, nos permiten profundizar y comprender en detalle cómo se comporta una base de código en diversas situaciones.

¿Esto qué significa? Que en aquellos momentos donde trabajamos a ciegas, los characterisation tests son capaces de proporcionarnos una visión objetiva del código y extraer información para poder realizar cambios, añadir nuevas características o realizar refactorizaciones sin temor de alterarlo indebidamente. 

De manera resumida, los characterisation tests nos permiten abordar este problema de forma sistemática de la siguiente manera:

    1. El proceso comienza seleccionando un fragmento de código para el cual se desea escribir una prueba.
    2. Luego, se escribe el test con una aserción errónea.
    3. Se ejecuta el test y se utiliza el mensaje de error para determinar el funcionamiento correcto.
    4. Por último, cambias el test para para que pruebe el comportamiento correcto. 

La idea es tomar estos pasos y repetirlos continuamente hasta lograr modificar el código de forma segura. Es decir, a través de este proceso iterativo, vas extrayendo información sobre el comportamiento del código y vas ajustando las pruebas hasta lograr una cobertura adecuada. Eso si, asegurate de dar a los tests un nombre representativo del comportamiento que verifica. De esta manera, los tests no solo te estarán ayudando a comprender el código existente, sino que también te serán útiles para documentarlo y respaldar las decisiones de cambio.

Para implementar estos tests, es posible que se necesite preparar el sistema, especialmente si no es fácilmente testeable. Sin embargo, su utilidad radica en su capacidad para proporcionar una red de seguridad al comprender el comportamiento del código, incluso en sistemas complejos o con limitaciones para exponer su estado interno.

Ejercicios de testing

Los tests de caracterización representan una técnica invaluable para comprender, modificar y validar código sin contexto. Si te encuentras trabajando en un proyecto legado o enfrentando código difícil de entender, considera utilizar esta técnica para obtener una mayor comprensión y confianza en tu trabajo. Aquí te invitamos a resolver algunos ejercicios que te permitirán poner en práctica esta teoría:

Para conocer cómo los resolveríamos en Codurance te recomendamos ver nuestro vídeo: 'Characterisation tests: Qué son y cómo utilizarlos'. 

Evalúa la calidad de tu software con nuestro Software Quality Assessment