Soy parte de un equipo de desarrolladores que trabaja con muchos otros equipos para mantener y mejorar una aplicación que ha estado en uso durante al menos 15 años. Cuando se construyó y diseñó por primera vez, TDD era inaudito.
La aplicación es bastante estable, y rara vez encontramos un error que detiene la presentación, pero hacemos un promedio de uno o dos errores a la semana que reduce considerablemente la calidad del servicio. Estos errores tardan una eternidad en encontrar y corregir, en gran parte debido a señalar con el dedo, y la única prueba que tenemos es la prueba de interfaz. Debido a que se desperdicia mucho tiempo buscando dónde está el error antes de que pueda solucionarse, yo y otro desarrollador planeamos proponer el desarrollo impulsado por pruebas. Pronto habrá una nueva revisión, y nos gustaría ver pruebas de unidades casi completas en los nuevos módulos, también planeamos sugerir la creación de unidades de prueba para cualquier código que tengamos que modificar que sea heredado (es decir, corrección de errores o implementación de características ), pero no para perder tiempo desarrollando casos de prueba para código que no haya causado problemas.
Para mí, esto parece razonable. Este mes tuvimos un error que tardó más de dos semanas en solucionarse, pero podría haberse identificado antes de implementarse si se hubieran realizado pruebas unitarias. Pero para nuestros gerentes parece que van a gastar más dinero.
¿Cómo puedo convencer a nuestros clientes de que quieren gastar el dinero en pruebas unitarias y desarrollo basado en pruebas? ¿Hay algún estudio que muestre el ROI de las pruebas unitarias?