Creo que pasó la hora que los desarrolladores maduren un poco en cuanto a la necesidad de probar TODA y CUALQUIER aplicación que sea escrita, independientemente de su tamaño. Creo que ya pasó hace mucho la fase en la cual la arrogancia era suficiente para creer que su aplicación funcionaría sin tests (después de todo, ¡usted es el mejor programador del mundo!).
"Pero Knuth no usa test. Tenemos que seguir el ejemplo de los mejores"...
Estoy de acuerdo. Debemos seguir el ejemplo de los mejores programadores del mundo. Pero recuerda, Knuth no usa test porque el es Knuth. Si él dice que la aplicación funciona sin tener test yo le creo. Ahora, decir que esto es bueno es al menos cuestionable. Knuth no trabaja con el mercado. Él no trabaja en el mantenimiento del código. Trabaja apenas en proyectos en los que sólo él tiene el control total (vale recordar que ahora TeX es abierto, aunque solo Knuth puede usar el nombre TeX). Y él es uno de los más grandes desarrolladores en el mundo. Una realidad muy diferente de lo que yo y ustedes pasamos cada día.
Sé que el mundo ya grito hace mucho tiempo, que sin tests no anda ninguna aplicación (¿ya ha oído hablar de los que escribieron el Manifiesto Ágil? ¿no? ¿dónde vivió en los últimos años?). ¿Por qué rayos seguir el ejemplo de estos tipos?
¿Es que realmente no saben de lo que están hablando? Demosle una oportunidad a lo que están diciendo.
YO que no soy nadie todavía, consigo ver innumerables ventajas en el uso de test.
- El tiempo de desarrollo disminuye considerablemente a partir de la tercera semana (no tenemos más que matarnos cazando fallos de regresión y esperando que el personal de QA de el aval);
- En general testeamos el código con un main, para ver si está funcionando. ¿Cuál es la diferencia de tiempo entre eso y escribir un test de verdad que además nos va a ayudar a lo largo de todo el proyecto?
- Sabemos exactamente que cambio ha provocado una ruptura de compatibilidad (en lugar de saber en que mes se produjo);
- No es necesario recordar bien el código entero. Si se olvida, echa un vistazo a las pruebas de aquella parte del código y listo;
- Si alguien fuera a mantener el código en unos 6 meses e incidentalmente introduce un bug, los test lo avisarán;
- La integración continua funciona a causa de los test;
- La refactorización funciona a causa de los test;
- El desarrollo Ágil funciona a causa de los test;
- El Diseño de su aplicación tiende a ser mejor y menos acoplado;
- Entre otras cosas, lo que considero más importante es el hecho de que usted puede dormir en paz, sabiendo que mi código está funcionando. Nadie va a llamarlo los fines de semana (o en el medio de la noche) para arreglar un sistema que está en producción.
¿Y aún no crees que vale la pena invertir en esto? No haga caso a los desarrolladores de hace 30 años que todavía están hablando (a menos que ellos tengan sentido común y usen test).
Pero ¿cómo escribir test? En primer lugar, haga clic aquí.
¿Te gusto? Así es como se aprende mucho en computación sobre lo que es relativamente nuevo en el mercado. Y los test, lamentablemente son todavía relativamente nuevos en el mercado.
¿Y luego? ¿Qué debo hacer? Bueno, a partir de ahora, sólo tener la disciplina de escribir los test para sus funcionalidades. Listo. Y el mundo está casi a salvo = D.
Los desarrolladores no pueden tener miedo de aprender cosas nuevas. Lo nuevo, en programación, es lo que va a garantizar que podemos regresar a casa y vivir un poco, en lugar de trabajar sólo por horas, hasta que se agoten y también nos dará la seguridad de tener un futuro en el que podamos trabajar, y no depender de estar bien solo en una empresa, sino en un mercado que es mucho mejor y mas seguro que la primer opción.
Si uno está haciendo los test, un muy buen camino a seguir es TDD, donde muchas mas cosas se aprenden, donde se cambia la mentalidad de los desarrolladores, y donde se terminan de obtener los beneficios totales de los test.