testing - poner - ¿Por qué debería practicar Desarrollo controlado por prueba y cómo debería comenzar?
que es tags h1 y cursiva (6)
Mucha gente habla sobre escribir pruebas para su código antes de comenzar a escribir su código. Esta práctica se conoce generalmente como desarrollo impulsado por prueba o TDD para abreviar. ¿Qué beneficios obtengo al escribir software de esta manera? ¿Cómo empiezo con esta práctica?
Buen comienzo : Comenzar con Tdd en Java usando Eclipse por Brett L. Schuchert
Es un conjunto de screencasts sobre TDD en Java y en C #. Está comenzando desde cero y enseñando los conceptos básicos de TDD.
En mi opinión, lo mejor es que claramente te permite ver si tu código hace lo que se supone que debe hacer. Esto puede parecer obvio, pero es muy fácil desviarse de sus objetivos originales, como descubrí en el pasado: p
Es posible que esté trabajando en un entorno ágil o en cascada. Tal vez tengas procedimientos bien definidos que fueron probados en combate a través de años de arduo trabajo, o tal vez acabas de comenzar tu propia puesta en marcha. No importa cuál sea la situación, es probable que haya enfrentado al menos uno, si no más, de los siguientes dolores, problemas o causas de una entrega fallida:
- Parte de su equipo se mantiene fuera del circuito durante la creación de requisitos, especificaciones o historias de usuarios
- La mayoría, si no todas, de tus pruebas son manuales, o no tienes pruebas en absoluto
- Aunque tiene pruebas automáticas, no detectan problemas reales
- Las pruebas automáticas se escriben y se ejecutan cuando ya es demasiado tarde para proporcionar un valor real al proyecto
- Siempre hay algo más urgente que dedicar tiempo a las pruebas
- Los equipos se dividen entre los departamentos de pruebas, desarrollo y análisis funcional, y con frecuencia no están sincronizados.
- Una incapacidad para refactorizar el código debido al temor de que algo se rompa
- El costo de mantenimiento es demasiado alto
- El tiempo de comercialización es demasiado grande
- Los clientes no sienten que lo que se entregó es lo que pidieron
- La documentación nunca está actualizada
- Tiene miedo de implementar en la producción porque el resultado es desconocido
- A menudo no puede implementar en producción porque las pruebas de regresión tardan demasiado en ejecutarse
- El equipo está pasando demasiado tiempo tratando de descubrir qué hace algún método o clase
El desarrollo basado en pruebas no resuelve mágicamente todos estos problemas. En cambio, nos pone en el camino hacia la solución. No hay una solución mágica, pero si hay una práctica de desarrollo que puede marcar la diferencia en tantos niveles, esa práctica es TDD. El desarrollo impulsado por pruebas acelera el tiempo de comercialización, permite una refactorización más fácil, ayuda a crear un mejor diseño , y fomenta un acoplamiento más flexible. Además de los beneficios directos, el TDD es un requisito previo para muchas otras prácticas (la entrega continua es una de ellas). Un mejor diseño, un código bien redactado, una documentación más rápida para el momento de lanzamiento al mercado, actualizada y una sólida cobertura de prueba son algunos de los resultados que logrará al aplicar TDD.
Hay muchos beneficios:
- Obtendrá información inmediata sobre si su código está funcionando, para que pueda encontrar errores más rápidamente
- Al ver que la prueba pasa de rojo a verde, usted sabe que tiene una prueba de regresión funcional y un código de trabajo
- Usted gana confianza para refactorizar el código existente, lo que significa que puede limpiar el código sin preocuparse de lo que podría romperse.
- Al final, tiene un conjunto de pruebas de regresión que se pueden ejecutar durante compilaciones automáticas para darle mayor confianza de que su base de código es sólida.
La mejor manera de comenzar es simplemente comenzar. Hay un gran libro de Kent Beck sobre el desarrollo impulsado por pruebas. Simplemente comience con el nuevo código, no se preocupe por el código anterior ... siempre que sienta que necesita refactorizar algún código, escriba una prueba para la funcionalidad existente, luego refactorícela y asegúrese de que las pruebas se mantengan verdes. Además, lee este gran artículo .
La parte de los beneficios se ha cubierto recientemente , en cuanto a dónde comenzar ... en un sistema de pequeñas empresas donde no hay demasiadas incógnitas por lo que los riesgos son bajos. Si aún no conoce un marco de prueba (como NUnit), comience por aprender eso. De lo contrario, comience escribiendo su primera prueba :)
Beneficios
- Descubre cómo compartimentar tu código
- Descubre exactamente lo que quiere que haga su código
- Ya sabes cómo se supone que debe actuar y, en el futuro, si la refabricación rompe algo
- Te acostumbras a asegurarte de que tu código siempre sepa lo que se supone que debe hacer
Empezando
Solo hazlo. Escriba un caso de prueba de lo que desea hacer y luego escriba el código que debe pasar la prueba. Si pasas tu prueba, genial, puedes pasar a escribir casos en los que tu código siempre fallará (2 + 2 no debería ser igual a 5, por ejemplo).
Una vez que pasen todas sus pruebas, escriba su lógica comercial real para hacer lo que quiera hacer.
Si está empezando desde cero, asegúrese de encontrar un buen conjunto de pruebas que sea fácil de usar. Me gusta PHP, así que PHPUnit o SimpleTest funcionan bien. Casi todos los idiomas populares tienen disponible un conjunto de pruebas xUnit para ayudar a crear y automatizar las pruebas.