Nunca me gustaron las pruebas unitarias. Siempre pensé que aumentaba la cantidad de trabajo que tenía que hacer.
Resulta que eso solo es cierto en términos de la cantidad real de líneas de código que escribe y, además, esto se compensa por completo con el aumento en la cantidad de líneas de código útil que puede escribir en una hora con pruebas y desarrollo impulsado por pruebas.
Ahora me encantan las pruebas unitarias, ya que me permiten escribir código útil, ¡que a menudo funciona la primera vez! (toco madera)
He descubierto que las personas son reacias a hacer pruebas unitarias o comenzar un proyecto con desarrollo basado en pruebas si están bajo plazos estrictos o en un entorno donde otros no lo hacen, por lo que no lo hacen. Un poco como, una negativa cultural a intentarlo.
Creo que una de las cosas más poderosas sobre las pruebas unitarias es la confianza que te da para emprender la refactorización. También da nuevas esperanzas, que puedo darle mi código a otra persona para que lo refactorice / mejore, y si las pruebas de mi unidad aún funcionan, puedo usar la nueva versión de la biblioteca que modificaron, prácticamente, sin temor.
Es este último aspecto de las pruebas unitarias que creo que necesita un nuevo nombre. La prueba unitaria se parece más a un contrato de lo que este código debe hacer ahora y en el futuro.
Cuando escucho la palabra prueba, pienso en ratones en jaulas, con múltiples experimentos realizados para ver la efectividad de un compuesto. Esto no es lo que son las pruebas unitarias, no estamos probando un código diferente para ver cuál es el enfoque más afectivo, estamos definiendo qué resultados esperamos con qué entradas. En el ejemplo de los ratones, las pruebas unitarias se parecen más a las definiciones de cómo funcionará el universo en comparación con los experimentos realizados en los ratones.
¿Estoy en crack o alguien más ve esta negativa a hacer pruebas y piensan que es una razón similar por la que no quieren hacerlo?
¿Qué razones dan ustedes / otros para no realizar la prueba?
¿Cuáles crees que son sus motivaciones en las pruebas unitarias?
Y como un nuevo nombre para las pruebas unitarias que podrían superar algunas de las objeciones, ¿qué tal jContract? (Un poco centrado en Java, lo sé :), o contratos de unidad?