Blog de Programación sobre Java y Javascript
 
Introducción a BDD

Introducción a BDD

Son las abreviaturas de Behavior Driven Development, es una estrategia de desarrollo, en donde se define en un idioma común, entre los involucrados del negocio (StakeHolders) mejorando comunicación entre equipo técnicos y no técnicos

Aquí se centran en las pruebas en el usuario y comportamiento del sistema, aunque también se puede comenzar definiendo las pruebas.

Características de BDD

  • Se escriben en Idioma Común o lenguaje natural
  • Escenarios de pruebas definidos por comportamiento, se presentan en un formato llamado Given-when-then, describen el estado inicia, la acción y el resultado esperado
  • Automatización de pruebas, promueve la automatización de pruebas basadas en escenarios definidos, permitiendo que se cumplan
  • Lo realiza el equipo y determina los detalles de cómo se comportará la aplicación
  • Se adapta a las metodologías agiles, centrado en la entrega de valor del usuario
  • Se puede complementar con TDD en la Fase de código o implementación.

Requisitos

  • Cada requisito debe ser una HU, definiendo ejemplos concretos
  • Estos ejemplos debe ser un escensario de un usuario en el sistema
  • Se debe realmente definir la especificacion del comportamiento de un usuario
  • comprender formula “Given when then” o “Role Feature Reason

Formula Given-when-then

Se Definen para las Historias de Usuario cuando se usa BDD para describir una característica o funcionalidad, util para crear comprension compartida entre los miembros del equipo sobre como deberia comportarse una caracteristica en diferentes situaciones.

Given: Dato, se especifica escenario o precondiciones
When: Cuando: condiciones de las acciones a ejecutar
Then: Entonces: Resultado esperado, las validaciones a realizar

Ejemplos Given-when-then

  1. Ejemplo de prueba de login:
    • Given: El usuario está en la página de inicio de sesión.
    • When: Ingresa un nombre de usuario y una contraseña válidos.
    • Then: Debería ser redirigido a la página de inicio.
  2. Ejemplo de prueba de búsqueda:
    • Given: El usuario está en la página principal del motor de búsqueda.
    • When: Ingresa “gatos” en el campo de búsqueda y presiona Enter.
    • Then: Debería ver una lista de resultados relacionados con “gatos”.
  3. Ejemplo de prueba de compra en línea:
    • Given: El usuario ha agregado un artículo al carrito de compras.
    • When: Procede a la página de pago y completa la información de envío y pago.
    • Then: Debería recibir una confirmación de la orden y un número de seguimiento.
  4. Ejemplo de prueba de creación de usuario:
    • Given: El usuario está en la página de registro.
    • When: Ingresa un nombre de usuario único y una contraseña válida.
    • Then: Debería ver un mensaje de confirmación de registro y poder iniciar sesión con las credenciales proporcionadas.
  5. Ejemplo de prueba de eliminación de elemento:
    • Given: El usuario ha iniciado sesión y está en la página de perfil.
    • When: Elimina un elemento de su lista de favoritos.
    • Then: El elemento eliminado no debería aparecer en la lista de favoritos cuando se actualice la página.

Formula Role-Feature-Reason

  1. Especificación de registro de usuario:
    • Rol: Como nuevo usuario
    • Característica: Registro en el sitio web
    • Razón: Para acceder a funcionalidades exclusivas y personalizadas.
  2. Especificación de búsqueda de productos:
    • Rol: Como comprador en línea
    • Característica: Búsqueda de productos
    • Razón: Para encontrar y comprar productos que satisfagan mis necesidades y preferencias.
  3. Especificación de reserva de vuelo:
    • Rol: Como viajero
    • Característica: Reserva de vuelo
    • Razón: Para planificar y asegurar mi viaje de manera eficiente.
  4. Especificación de compartir contenido en redes sociales:
    • Rol: Como usuario de la red social
    • Característica: Compartir contenido
    • Razón: Para interactuar y comunicarme con mi red de contactos y compartir información relevante.
  5. Especificación de creación de una lista de tareas:
    • Rol: Como usuario de la aplicación de gestión de tareas
    • Característica: Creación de lista de tareas
    • Razón: Para organizar y administrar mis tareas de manera efectiva y aumentar mi productividad.

Ventajas de BDD

  • No se define pruebas sino comportamientos
  • Mejora comunicación entre todo el equipo transversales, técnicos y no técnicos
  • Curva de aprendizaje mas corta que TDD para el lenguaje
  • Llega a un publico mas amplio
  • Encaja con metodologías agiles
  • Claridad de los requisitos
  • Enfoque en características de alto valor
  • Mayor calidad de software

Ciclo de BDD

  1. Definición de Comportamiento (Behavioral Specification): Se identifican funcionalidades del sistema, escritas en documentación por analistas de negocio y desarrolladores quienes colaboran para definir el comportamiento esperado del sistema en términos de escenario de negocio, aquí ya se expresa en el lenguaje usando el formato Given-When-Then o Role-Feature-Reason.
  2. Automatización de Pruebas (Test Automation): Los escenarios anteriores se convierten en pruebas automatizadas, aquí se usan herramientas dependiendo de la tecnología como Cucumber, JBehave.
  3. Implementación (Implementation): Los desarrolladores escriben el Código y que cumplan requisitos y comportamientos ya definidos
  4. Ejecución de Pruebas (Test Execution): Las pruebas se ejecutan para verificar que el código cumple con el comportamiento esperado, puede ser parte de la IC o pruebas de aceptación
  5. Refactorización (Refactoring): Cuando se pasan las pruebas y el código se implementase realizan ajustes necesarios para mejorar el código y la calidad del entregable y las pruebas automatizadas nos aseguran que no se ha movida o dañado nada.
  6. Retroalimentación (Feedback): se recibe retroalimentación de las partes interesadas y revisan resultados, cualquier cambio o problema indica que se incorpora al ciclo comenzando con el 1°, la definición del comportamiento