tdd vs bdd analyze differences with examples
Este tutorial explica las diferencias entre TDD y BDD con ejemplos:
TDD o Test Driven Development y BDD o Behavior Driven Development son las dos técnicas de desarrollo de software.
Antes de profundizar en la diferencia entre estos dos, primero comprendamos qué significan individualmente y cómo se usan.
¡¡Empecemos!!
Cómo resolver el índice de matriz fuera de los límites de excepción en Java
Lo que vas a aprender:
¿Qué es TDD?
TDD son las siglas de Test Driven Development. En esta técnica de desarrollo de software, primero creamos los casos de prueba y luego escribimos el código subyacente a esos casos de prueba. Aunque TDD es una técnica de desarrollo, también se puede utilizar para el desarrollo de pruebas de automatización.
Los equipos que implementan TDD, toman más tiempo para el desarrollo, sin embargo, tienden a encontrar muy pocos defectos. TDD da como resultado una calidad de código mejorada y un código que es más reutilizable y flexible.
TDD también ayuda a lograr un alto cobertura de prueba de aproximadamente 90-100%. Lo más desafiante para los desarrolladores que siguen TDD es escribir sus casos de prueba antes de escribir el código.
Lectura sugerida => Guía definitiva para redactar casos de prueba excelentes
Proceso de TDD
La metodología TDD sigue un proceso muy simple de 6 pasos:
1) Escriba un caso de prueba: Según los requisitos, escriba un caso de prueba automatizado.
2) Ejecute todos los casos de prueba: Ejecute estos casos de prueba automatizados en el código desarrollado actualmente.
3) Desarrolle el código para esos casos de prueba: Si el caso de prueba falla, escriba el código para que ese caso de prueba funcione como se esperaba.
4) Ejecute casos de prueba nuevamente: Ejecute los casos de prueba nuevamente y verifique si todos los casos de prueba desarrollados hasta ahora están implementados.
5) Refactorice su código: Este es un paso opcional. Sin embargo, es importante refactorizar su código para hacerlo más legible y reutilizable.
6) Repita los pasos del 1 al 5 para nuevos casos de prueba: Repita el ciclo para los otros casos de prueba hasta que se implementen todos los casos de prueba.
Ejemplo de implementación de un caso de prueba en TDD
Supongamos que tenemos el requisito de desarrollar una función de inicio de sesión para una aplicación que tiene campos de nombre de usuario y contraseña y un botón de envío.
Paso 1: Crea un caso de prueba.
|_+_|
Paso 2: Ejecute este caso de prueba y obtendremos un error que dice que la página de inicio de sesión no está definida y no hay métodos con los nombres enterUserName, enterPassword y submit.
Paso 3: Desarrolle el código para ese caso de prueba. Escribamos el código subyacente que ingresará el nombre de usuario y la contraseña y obtendrá un objeto de página de inicio cuando sean correctos.
|_+_|
Paso 4: Ejecute el caso de prueba nuevamente y obtendremos una instancia de la página de inicio.
Paso 5: Refactoricemos el código para proporcionar los mensajes de error correctos cuando las condiciones if en el método de envío no sean verdaderas.
|_+_|Paso 6: Ahora, escriba un nuevo caso de prueba con un nombre de usuario y una contraseña vacíos.
|_+_|Ahora bien, si intenta ejecutar este caso de prueba, fallará. Repita los pasos 1 a 5 para este caso de prueba y luego agregue la funcionalidad para manejar cadenas vacías de nombre de usuario y contraseña.
¿Qué es BDD?
BDD son las siglas de Behavior Driven Development. BDD es una extensión de TDD donde en lugar de escribir los casos de prueba, comenzamos escribiendo un comportamiento. Posteriormente, desarrollamos el código que se requiere para que nuestra aplicación realice el comportamiento.
El escenario definido en el enfoque BDD facilita la colaboración de desarrolladores, evaluadores y usuarios comerciales.
BDD se considera una mejor práctica cuando se trata de pruebas automatizadas ya que se centra en el comportamiento de la aplicación y no en pensar en la implementación del código.
El comportamiento de la aplicación es el centro de atención en BDD y obliga a los desarrolladores y probadores a ponerse en el lugar del cliente.
Proceso de BDD
El proceso involucrado en la metodología BDD también consta de 6 pasos y es muy similar al de TDD.
1) Escribe el comportamiento de la aplicación: El comportamiento de una aplicación está escrito en inglés simple por el propietario del producto o los analistas de negocios o QA.
2) Escriba los scripts automatizados: Este simple lenguaje similar al inglés se convierte luego en pruebas de programación.
3) Implementar el código funcional: Luego se implementa el código funcional subyacente al comportamiento.
4) Verifique si el comportamiento es exitoso: Ejecute el comportamiento y vea si tiene éxito. Si tiene éxito, pase al siguiente comportamiento; de lo contrario, corrija los errores en el código funcional para lograr el comportamiento de la aplicación.
5) Refactorizar u organizar el código: Refactorice u organice su código para hacerlo más legible y reutilizable.
6) Repita los pasos 1-5 para un nuevo comportamiento: Repita los pasos para implementar más comportamientos en su aplicación.
Leer también => Cómo participan los evaluadores en las técnicas TDD, BDD y ATDD
Ejemplo de implementación de comportamiento en BDD
Supongamos que tenemos el requisito de desarrollar una función de inicio de sesión para una aplicación que tiene campos de nombre de usuario y contraseña y un botón de envío.
Paso 1: Escribe el comportamiento de la aplicación para ingresar el nombre de usuario y la contraseña.
¿Quién es responsable del valor comercial entregado por un equipo scrum?|_+_|
Paso 2: Escriba el script de prueba automatizado para este comportamiento como se muestra a continuación.
|_+_|Paso 3: Implemente el código funcional (esto es similar al código funcional en el paso 3 del ejemplo de TDD).
|_+_|Paso 4: Ejecute este comportamiento y vea si tiene éxito. Si tiene éxito, vaya al paso 5; de lo contrario, depure la implementación funcional y luego ejecútela nuevamente.
Paso 5: Refactorizar la implementación es un paso opcional y, en este caso, podemos refactorizar el código en el método de envío para imprimir los mensajes de error como se muestra en el paso 5 para el ejemplo de TDD.
|_+_|Paso 6: Escriba un comportamiento diferente y siga los pasos del 1 al 5 para este nuevo comportamiento.
Podemos escribir un nuevo comportamiento para verificar si obtenemos un error por no ingresar el nombre de usuario como se muestra a continuación:
|_+_|TDD Vs BDD - Diferencias clave
TDD | BDD |
---|---|
Podría ser un mejor enfoque para proyectos que involucren API y herramientas de terceros. | Podría ser un mejor enfoque para proyectos impulsados por acciones de los usuarios. Por ejemplo: sitio web de comercio electrónico, sistema de aplicaciones, etc. |
Significa desarrollo impulsado por pruebas. | Significa desarrollo impulsado por el comportamiento. |
El proceso comienza escribiendo un caso de prueba. | El proceso comienza escribiendo un escenario según el comportamiento esperado. |
TDD se centra en cómo se implementa la funcionalidad. | BDD se centra en el comportamiento de una aplicación para el usuario final. |
Los casos de prueba están escritos en un lenguaje de programación. | Los escenarios son más legibles en comparación con TDD, ya que están escritos en un formato simple en inglés. |
Los cambios en el funcionamiento de la aplicación tienen un gran impacto en los casos de prueba en TDD. | Los escenarios de BDD no se ven muy afectados por los cambios de funcionalidad. |
Solo se requiere colaboración entre los desarrolladores. | Se requiere la colaboración entre todos los interesados. |
Algunas de las herramientas que soportan TDD son: JUnit, TestNG, NUnit, etc. | Algunas de las herramientas que admiten BDD son SpecFlow, Cucumber, MSpec, etc. |
Las pruebas en TDD solo pueden ser entendidas por personas con conocimientos de programación, | Las pruebas en BDD pueden ser entendidas por cualquier persona, incluidas aquellas sin conocimientos de programación. |
TDD reduce la probabilidad de tener errores en sus pruebas. | Los errores en las pruebas son difíciles de rastrear en comparación con TDD. |
Conclusión
Elegir entre TDD o BDD puede ser muy complicado. Algunos podrían argumentar que BDD es mejor para encontrar errores, mientras que otros podrían simplemente decir que TDD brinda una mayor cobertura de código.
Ninguna metodología es mejor que la otra. Depende de la persona y del equipo del proyecto decidir qué metodología utilizar.
Esperamos que este artículo haya despejado tus dudas sobre TDD vs BDD !!
Lectura recomendada
- Más de 180 casos de prueba de prueba de aplicaciones web (lista de verificación de muestra)
- ¿Cómo traducir casos de prueba manuales en scripts de automatización? - Una guía paso a paso con ejemplo
- Preguntas de la entrevista de casos de prueba: escriba casos de prueba basados en el escenario
- Cómo participan los probadores en las técnicas TDD, BDD y ATDD
- Cobertura de prueba en pruebas de software (consejos para maximizar la cobertura de prueba)
- Las 8 mejores herramientas y marcos de prueba de desarrollo impulsado por el comportamiento (BDD)
- Tutorial de Specflow: la guía definitiva para la herramienta BDD
- Cómo escribir casos de prueba: la guía definitiva con ejemplos