Trabajo en una pequeña empresa como desarrollador en solitario. De hecho, soy el único desarrollador de la empresa. Tengo varios proyectos (relativamente) grandes que he escrito y mantenido con regularidad, y ninguno de ellos tiene pruebas que los respalden. Al comenzar nuevos proyectos, a menudo me pregunto si debería probar un enfoque TDD. Parece una buena idea, pero honestamente nunca puedo justificar el trabajo adicional involucrado.
Trabajo duro para ser progresivo en mi diseño. Me doy cuenta de que, un día, otro desarrollador tendrá que mantener mi código, o al menos solucionarlo. Mantengo las cosas lo más simples 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 las pruebas se remontan a los detalles, que 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 de forma manual. También encuentro que los requisitos y las características cambian con la frecuencia suficiente para que el mantenimiento de las pruebas agregue una cantidad considerable de resistencia al proyecto. Tiempo que de otra manera podría dedicarse a resolver las necesidades del negocio.
Así que termino con la misma conclusión cada vez. El retorno de la inversión es demasiado bajo.
Ocasionalmente he realizado algunas pruebas para garantizar que he escrito un algoritmo correctamente, como calcular el número de años que alguien ha estado en la empresa según la fecha de contratación. Pero desde el punto de vista de la cobertura de código, he cubierto aproximadamente el 1% de mi código.
En mi situación, ¿todavía encontraría una manera de hacer que la prueba de unidad sea una práctica regular, o estoy justificado para evitar esa sobrecarga?
ACTUALIZACIÓN: algunas cosas sobre mi situación que omití: todos mis proyectos son aplicaciones web. Para cubrir todo mi código, tendría que usar pruebas automatizadas de UI, y esa es un área en la que todavía no veo un gran beneficio sobre las pruebas manuales.