La regresión del software es un error en la programación del software que hace que el software retroceda efectivamente en una o más áreas. Hay dos tipos principales de regresión de software: funcional y no funcional. Funcional significa que el programa funciona a la velocidad adecuada, pero una o más funciones no están funcionando, mientras que no funcional significa que todas las funciones están funcionando, pero la velocidad se reduce drásticamente. Un evento, como una actualización, suele ser la causa de la regresión. Las pruebas de regresión verifican el software para asegurarse de que no se haya producido ni ocurrirá ninguna regresión.
La regresión funcional del software es una forma en que la regresión del programa puede manifestarse. Cuando esto ocurre, el programa continuará ejecutándose a toda velocidad, por lo que es posible que el usuario no note la regresión al principio. En esta manifestación, hay ciertas funciones que ya no funcionan. Por ejemplo, si un programa puede buscar archivos, es posible que esa función ya no funcione. Esto puede afectar las funciones accesorias, las que no se utilizan comúnmente, o la función principal del programa.
La regresión de software no funcional es más peligrosa y más fácil de notar, aunque todas las funciones siguen funcionando. En esta manifestación, la regresión hace que el programa se ejecute más lento o la salida del programa será significativamente menor. La falta de velocidad significa que el programa también puede volverse vulnerable a codificación y ataques maliciosos, poniendo tanto el programa como la computadora en la que se está ejecutando en riesgo de piratería. La velocidad puede volverse tan lenta que puede resultar imposible utilizar el programa.
Para que se produzca la regresión del software, debe producirse un supuesto evento. Este evento cambia la codificación del software e introduce estos errores, ya sea intencionalmente, lo cual es raro, o involuntariamente. El desarrollador puede estar intentando corregir un error o actualizar la versión, pero introduce incorrectamente algún código que hace retroceder el programa. El evento más típico es una actualización, porque esto afecta directamente la codificación del programa. Otros eventos incluyen cambios de versión o configuración.
Para aliviar las posibilidades de regresión del software, generalmente se emplean las pruebas de regresión. Este tipo de prueba examina el nuevo programa y lo compara con todas las versiones anteriores del programa. Luego ejecuta la programación a través de una prueba para ver si hay algún signo de regresión y para asegurarse de que toda la codificación sea funcional. Cualquier signo de código retrocedido o que no funciona se devolverá al desarrollador o usuario e informará qué ha retrocedido o dónde se encuentra la regresión.