¿Qué es la caracterización del software?


En programación informática, una prueba de caracterización (también conocida como Golden Master Testing) es un medio para describir (caracterizar) el comportamiento real de una pieza de software existente y, por lo tanto, proteger el comportamiento existente del código heredado contra cambios involuntarios mediante pruebas automatizadas.
Utilizamos las pruebas para muchas cosas, desde las pruebas exploratorias y las pruebas manuales hasta las pruebas unitarias y otras formas de automatización. La cuestión principal es que necesitamos saber que nuestro código funciona, y hemos agrupado una variedad de prácticas y las hemos puesto bajo esta bandera. Podemos buscar algunos puntos comunes entre ellas, pero son difíciles de encontrar.
El objetivo de las pruebas de caracterización es ayudar a los desarrolladores a verificar que las modificaciones realizadas a una versión de referencia de un sistema de software no modificaron su comportamiento de manera no deseada o indeseable. Permiten, y proporcionan una red de seguridad para, extender y refactorizar el código que no tiene pruebas unitarias adecuadas.

La mayoría de los tipos de pruebas tienen la cualidad de ser sobre la corrección. Probamos nuestro código para ver si hace lo que queremos que haga. Esto supone que sabemos lo que se supone que tiene que hacer, que tenemos algún tipo de especificación en nuestra cabeza o en otro lugar que nos dice lo que estamos buscando.
¿Y si no es así?
Desgraciadamente, esto es exactamente lo que ocurre con muchos programas informáticos. Necesitamos hacer cambios en él, pero no sabemos lo suficiente sobre lo que hace.
Casi todo el mundo ha pasado desde minutos hasta horas mirando piezas de lógica enrevesada, tratando de entender lo suficiente sobre ellas para poder cambiarlas. Es una de las experiencias universales del desarrollo.
Lo bueno es que podemos utilizar las pruebas para ayudarnos. Es una prueba con un enfoque diferente. En lugar de tratar de averiguar si el código es correcto o no, podemos tratar de caracterizar su comportamiento para entender lo que realmente hace.