test tecnica por guiado ejemplo driven development desarrollo comportamiento testing design tdd bdd agile

testing - tecnica - behavior driven development



¿Conducido por el comportamiento o desarrollo impulsado por prueba? (4)

Recientemente escuché sobre BDD y lo encontré muy similar a TDD.

¿Cuál de estos dos usa (si corresponde)?

y cuales son los pros y los contras de cada uno?


BDD es similar a TDD pero con una mentalidad diferente. En BDD está tratando de crear especificaciones ejecutables en lugar de pruebas. Esto se logra principalmente usando un vocabulario diferente pero mecánicas similares a TDD.

BDD parece ser una reacción a muchos casos en los que las personas afirmaron estar haciendo TDD pero estaban escribiendo pruebas de integración en lugar de pruebas unitarias. La gente de BDD pensó que hablar sobre las pruebas era engañoso y las pruebas se convirtieron en especificaciones. Esto parece un poco metafísico, pero hay algunas buenas ideas detrás de esto.


Soy muy del BDD = TDD hecho correctamente campamento. Si estás haciendo TDD como describió originalmente Beck y practicado por muchos, entonces esencialmente no hay diferencia.

Lo que trae BDD a la mesa son algunas variantes interesantes sobre el lenguaje utilizado para describir el proceso. Mediante el uso de terminología alternativa en las descripciones del proceso y las herramientas, las personas de BDD esperan fomentar mejores prácticas, un objetivo loable.

He estado haciendo TDD durante tanto tiempo que ahora es difícil para mí juzgar si esto realmente ayuda. Creo (espero :-) que ya aprendí muchas de las lecciones que fomentan las herramientas / lenguaje BDD para que no parezcan brindarme mucho valor extra. Por supuesto, YMMV, y no he hecho un proyecto completo del "mundo real" usando herramientas BDD, así que podría llevar mis experimentos personales y extrapolar demasiado lejos.

Supongo que las herramientas / lenguaje BDD pueden ser más útiles para la gente que ha sido introducida a esta forma de abordar el desarrollo, ya que evitan toda confusión con la "prueba" utilizada en el sentido más tradicional. Todavía no lo he hecho, y me interesaría si la gente de aquí tuviera alguna experiencia.


BDD se trata de ejecutar los escenarios. Similar a TDD probaremos todos y cada uno de los escenarios como una historia.

La historia será explicada por el cliente. Basándose en la historia, se escribirán los escenarios. Herramientas como CUCUMBER hicieron más fácil escribir escenarios.


TDD y BDD son prácticamente lo mismo. La diferencia es cómo lo explicamos y, por lo tanto, cómo los equipos exitosos terminan haciendo que funcione para ellos.

BDD se basa en TDD al formalizar los buenos hábitos de los mejores profesionales de TDD. TDD es una herramienta o guía de desarrolladores para escribir un buen software y BDD es una buena herramienta para ayudar al desarrollo externo con una mayor participación del negocio a medida que se desarrolla utilizando un lenguaje ubicuo.

Mi experiencia es que BDD ayuda en la colaboración, y el uso de especificaciones ejecutables legibles por el negocio ayuda a construir un lenguaje compartido cuando todos en el equipo están involucrados en la redacción de documentación que describe lo que el sistema debe hacer. Esto ayuda a todo el equipo a aprender el idioma del dominio juntos.

BDD es lo que se necesita para que TDD tenga éxito.