En el desarrollo de software, ¿cuál es la diferencia entre las pruebas unitarias y las pruebas de regresión?

Casi todas las pruebas unitarias son pruebas de regresión, pero no todas las pruebas de regresión son pruebas unitarias.

Las pruebas unitarias se refieren al tamaño del sistema bajo prueba. Las pruebas unitarias cubren las partes más pequeñas posibles del código, como funciones y métodos individuales. Por el contrario, las pruebas de componentes, las pruebas de integración y las pruebas de extremo a extremo cubren sistemas más grandes.

Las pruebas de regresión se refieren al propósito de la prueba. Las pruebas de regresión comprueban si alguna parte del código se comporta como se probó por última vez. Si se supone que el sistema es funcionalmente equivalente, pero el resultado de una prueba de regresión ha cambiado, eso significa que algo no funciona como se esperaba.

No todas las pruebas automatizadas son pruebas de regresión, aunque algunas personas definen las pruebas automatizadas sólo como pruebas de regresión. Alguna otra forma de control de calidad incluye: pruebas de calidad/pruebas ad-hoc, donde una persona puede comprobar si la salida de un sistema es la esperada; o monitorización/alerta, donde un sistema emite ciertas métricas mientras se ejecuta (por ejemplo: uso de memoria, tiempo de actividad). Si esas métricas alcanzan un determinado umbral, los ingenieros investigarán por qué.