Durante el último año más o menos, he llevado a mi equipo hacia el modo de desarrollo lanzamiento-lanzamiento-lanzamiento-a menudo (AKA: Desarrollo rápido de aplicaciones, no ágil). Para obtener más información sobre la forma en que cerramos la compilación, consulte mi respuesta aquí: Una forma sencilla de mejorar la calidad de la versión en el entorno RAD
Cuando adoptamos RAD, las personas eran bastante independientes y estaban haciendo pruebas unitarias primero; Las pruebas integradas ocurrieron mucho más tarde en el proceso. Fue un proceso natural para ellos sin mucha aplicación formal. Ahora la situación es bastante diferente:
Toda la plataforma está bien integrada con compilaciones / lanzamientos establecidos que funcionan en el lado del cliente sin puntos críticos.
Los nuevos requisitos de funcionalidad siguen llegando y los creamos gradualmente a medida que avanzamos.
La dinámica general del sistema es muy importante porque, si bien los grupos de desarrollo independientes pueden estar siguiendo los procesos correctamente, han surgido fallas importantes debido a circunstancias complicadas y no obvias.
Muchas partes del sistema involucran nuevos algoritmos e insumos de investigación, por lo que los desafíos (y, por lo tanto, el mecanismo de prueba) no siempre se prevén correctamente, como las pruebas de características en software bien definido.
Recientemente, estaba tratando de obtener una mejor imagen general para ver si necesitamos mejorar el proceso. Cuando me senté con mi equipo, muchos de ellos se negaron: "¡Ya no hacemos pruebas unitarias!" mientras que otros pensaron que no deberíamos comenzar ahora porque nunca será efectivo.
¿Son útiles las pruebas unitarias en un sistema relativamente maduro? ¿Deberíamos al menos tener que sopesar el alcance de la prueba dependiendo de la madurez de las unidades? ¿Las pruebas unitarias ralentizarán el ritmo de desarrollo? ¿Es necesario evaluar las pruebas unitarias de una manera diferente?
¿Cuáles son las mejores prácticas de prueba para una plataforma madura en un entorno de lanzamiento-lanzamiento-temprano-a menudo?