Trabajo en una pequeña empresa como desarrollador en solitario. Soy el único desarrollador de la compañía, de hecho. Tengo varios proyectos (relativamente) grandes que he escrito y mantengo regularmente, y ninguno de ellos tiene pruebas para respaldarlos. Cuando comienzo nuevos proyectos, a menudo me pregunto si debería intentar un enfoque TDD. Parece una buena idea, pero honestamente nunca puedo justificar el trabajo extra involucrado.
Trabajo duro para ser progresista en mi diseño. Me doy cuenta de que ciertamente algún día otro desarrollador tendrá que mantener mi código, o al menos solucionarlo. Mantengo las cosas lo más simple posible y comento y documento cosas que serían difíciles de entender. Y el hecho es que estos proyectos no son tan grandes o complicados que un desarrollador decente tendría dificultades para comprenderlos.
Muchos de los ejemplos que he visto de pruebas se reducen a minucias y cubren todas las facetas del código. Como soy el único desarrollador y estoy muy cerca del código en todo el proyecto, es mucho más eficiente seguir un patrón de prueba de escritura y luego manual. También encuentro que los requisitos y las características cambian con la frecuencia suficiente para mantener las pruebas agregaría una cantidad considerable de resistencia en un proyecto. Tiempo que de otro modo podría gastarse en resolver las necesidades del negocio.
Así que termino con la misma conclusión cada vez. El retorno de la inversión es demasiado bajo.
De vez en cuando he configurado algunas pruebas para asegurarme de haber escrito un algoritmo correctamente, como calcular el número de años que alguien ha estado en la empresa en función de su fecha de contratación. Pero desde el punto de vista de la cobertura del código, he cubierto aproximadamente el 1% de mi código.
En mi situación, ¿aún encontraría una manera de hacer que las pruebas unitarias sean una práctica regular, o estoy justificado para evitar esa sobrecarga?
ACTUALIZACIÓN: Algunas cosas sobre mi situación que omití: Mis proyectos son todas aplicaciones web. Para cubrir todo mi código, tendría que usar pruebas de interfaz de usuario automatizadas, y esa es un área donde todavía no veo un gran beneficio sobre las pruebas manuales.