Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Guía para marcos de pruebas de desarrollo impulsado por el comportamiento (BDD)

Foto de cabeza de Grigori Trofimov, arquitecto senior de soluciones de Parasoft
4 abril 2023
6 min leer

El desarrollo basado en el comportamiento se centra en el comportamiento empresarial que su código intenta implementar. BDD es popular en muchas organizaciones de desarrollo de software empresarial, ya que ayuda al personal técnico y no técnico a comprender el comportamiento de las aplicaciones. Aquí hay una guía completa sobre el marco/herramientas de prueba de BDD.

¿Qué es un marco de prueba de BDD?

El desarrollo impulsado por el comportamiento, o BDD, es una rama de los principios definidos por desarrollo basado en pruebas (TDD). En TDD, construimos lo correcto. En BDD, nos aseguramos de construir lo correcto. Los principios y tecnologías aprovechados en BDD se han adoptado ampliamente en las pruebas funcionales. Un marco de prueba BDD incluye empresas como Cucumber y SpecFlow, que han permitido a propietarios de productos sin conocimientos técnicos definir el comportamiento de la aplicación como texto legible por humanos. A medida que esos comportamientos (o características) se traducen en código de prueba, el equipo de control de calidad puede lograr la automatización de las pruebas de forma más rápida y sencilla, incluso con falta de conocimiento del dominio.

BDD no es un concepto nuevo en 2021. La mayoría de las organizaciones han adoptado BDD como la forma más efectiva de traducir los requisitos comerciales en un buen software. En este artículo, destacamos algunos de los principales controladores y tecnologías con un enfoque en Java.

¿Cuáles son los requisitos comerciales?

Los requisitos comerciales documentan las necesidades y el propósito del producto final. Los requisitos también definirán los usuarios y los estándares que se utilizarán para la evaluación. BDD proporciona herramientas y procesos compartidos en todo el equipo (técnico y no técnico) para fomentar la colaboración para cumplir con los requisitos comerciales definidos.

Un requisito comercial traducido a un idioma como Pepinillo Puede ser definido como:

Dado que los Condición previa

Cuándo Acción

Entonces Resultado

Estas características (o comportamientos) se asignan para probar el código que puede ejecutar el comportamiento y validarlo. En desarrollo, la práctica es definir la característica ANTES de escribir cualquier código. Esto asegura que está construyendo lo correcto, ni más ni menos.

La estructuración de los requisitos comerciales como una declaración Dado / Cuándo / Entonces facilita la redacción de pruebas de aceptación.

¿Qué son las pruebas de aceptación?

Las pruebas de aceptación determinan si los requisitos de las características que se están probando cumplen con las expectativas. Esto ayuda a alinear el software con los requisitos comerciales definidos y garantizar que se cumplan las especificaciones. Las pruebas de aceptación son una parte integral del aseguramiento de la calidad, pero definir y ejecutar las pruebas de aceptación puede ser un desafío sin el conocimiento del dominio o una buena herramienta de automatización de pruebas funcionales.

¿En qué me he metido?

Analicemos qué son los marcos de prueba, junto con algunas tecnologías y desafíos que puede encontrar al implementar el marco de prueba de BDD como su solución de prueba de software.

En un nivel alto, los marcos de automatización de pruebas de BDD leen las especificaciones ejecutables escritas en inglés sencillo y verifican que las pruebas sean exitosas. BDD también va de la mano con Agile, lo que permite a los equipos de desarrollo y calidad optimizar sus flujos para la eficiencia.

Pero adoptando BDD no es una empresa de la noche a la mañana. El texto legible por humanos debe traducirse en código, y donde hay código, hay desarrolladores. Normalmente, esa biblioteca de pruebas debe ser desarrollada y mantenida por desarrolladores o evaluadores técnicos (apuesto a que estás calculando cuánto te costará). Aquí es donde las herramientas del marco de pruebas BDD entran en juego para ayudar a salvar el día. Para realizar la transición al marco BDD, puede depender de soluciones de prueba funcionales que se integran con el marco BDD para ayudar a definir las características.

Infografía que muestra Definir - Archivo de características (arriba a la izquierda), Verificar - Herramienta BDD (arriba a la derecha), Crear código de pegamento.java (abajo, en el medio)

BDD en desarrollo

Hay tres pasos principales al aplicar las prácticas de BDD a sus pruebas.

  1. Defina el requisito comercial como una prueba (archivo de características) que fallará.
  2. Desarrolle aplicaciones para pasar las pruebas definidas por el archivo de características.
  3. Revise el código para asegurarse de que se cumplen los requisitos de las funciones y de que no está creando algo que no sea necesario.

Lavar, enjuagar, repetir. Aquí es donde vemos el beneficio de definir características antes de escribir cualquier código que ayuda a garantizar que solo está construyendo lo que necesita, sin lujos adicionales (o trabajo innecesario).

Cómo aprovechar BDD en la automatización de pruebas

BDD tiene muchos beneficios en las pruebas. El uso de un inglés sencillo para redactar exámenes significa que pueden redactarse más rápidamente, incluso por miembros del equipo sin conocimientos técnicos. Además, las pruebas de configuración y desmontaje, que pueden ser una secuencia compleja de llamadas API, se pueden definir en una "frase".

BDD fomenta el uso de metodologías ágiles durante el desarrollo y las pruebas. Permite el intercambio efectivo de conocimientos sobre el sistema y los requisitos de prueba entre todo un equipo. Los comportamientos también se pueden mapear de nuevo a los requisitos de Jira, lo que puede ser valioso para la trazabilidad y la cobertura de las pruebas.

Una vez que se crean sus archivos de características, es hora de automatizar. Los archivos de características se pueden ejecutar como parte de un flujo de DevOps o una canalización de versiones. Es importante contar con informes que mapeen los resultados de la ejecución con los requisitos para garantizar que los requisitos comerciales sean consistentes con las implementaciones presentadas por el equipo de desarrollo.

Como se mencionó anteriormente, el ahorro de costos es un gran beneficio. Dado que los usuarios pueden desarrollar sus propias bibliotecas y probar código utilizando software como Parasoft Selenic y SOAtest, disminuye la dependencia de los desarrolladores para facilitar la infraestructura de prueba de BDD.

¿Cuáles son los retos?

El mayor desafío en las pruebas de BDD es la necesidad de asignar el texto en “inglés simple” al código, adaptado a cada función. Se necesitan desarrolladores para desarrollar el código subyacente, y el costo de ese tiempo se suma rápidamente (pero no olvide los beneficios mencionados anteriormente: no se pierde toda esperanza).

Parasoft SOAtest alivia este desafío mediante la creación mejorada de IA de pruebas de componentes y API automatizadas sin script. Además, Parasoft Selenic ayuda a crear y mantener scripts de IU de Selenium. Este es un enfoque diferente para desarrollar su biblioteca de pruebas. Esto también significa que las personas sin conocimientos técnicos pueden crear pruebas, lo que permite a los desarrolladores dedicar su tiempo a desarrollar nuevas funciones, en lugar de probarlas.

Cómo y por qué adoptar BDD en el desarrollo de software

Herramientas BDD

Probablemente una de sus preguntas más importantes sobre las herramientas BDD hasta ahora haya sido: ¿Cómo uso BDD sin escribir código? Las herramientas de prueba que permiten a personas sin conocimientos técnicos crear su propia biblioteca de pruebas o ampliar el marco existente pueden ser un paso crucial para aumentar el retorno de la inversión de BDD.

Pepino

Cucumber usa el lenguaje Gherkin para definir casos de prueba. Es un lenguaje no técnico que es fácil de leer y usa declaraciones Dado / Cuándo / Entonces para estructurar los comportamientos de su software. También promueve las prácticas de BDD y utiliza requisitos claros desde el inicio del proceso. Todos estos atributos fáciles de usar hacen de Cucumber una de las herramientas más populares en BDD.

Una implementación común de Cucumber ejecutará pruebas de aceptación escritas en JUnit o TestNG, que pueden ser una prueba funcional o una prueba de IU de selenio. Las características están escritas en pepinillo y cada paso tiene un definición de paso que asigna la declaración a algún código.

Imagen de código para una definición de paso que comienza con @Given

Cada método de prueba corresponde a una oración, y Pepino es la piedra de Rosetta que hace la traducción.

Hoy, Cucumber es compatible con Ruby, Java, JavaScript y Python. También hay puertos de Cucumber a otros lenguajes, como SpecFlow para C #.

JUnit

JUnit es un marco simple para escribir pruebas repetibles. Se usa comúnmente para pruebas unitarias, pero se puede usar de manera eficiente para impulsar Selenium WebDriver o incluso escribir pruebas de rendimiento. Permite a los usuarios escribir métodos de prueba y afirmaciones o configurar / eliminar código. Pepino puede llamar a este código cuando lee un paso de Característica. JUnit5 ha agregado muchas características nuevas como la parametrización, pero otros marcos comunes, incluidos TestNG y RSpec, tienen sus propias ventajas.

parasoft

Cuando las organizaciones tienen que elegir entre calidad y entrega, a menudo recurren a proveedores como Parasoft, que se ha especializado en el desarrollo de software y la automatización de pruebas durante más de 35 años. El siguiente conjunto de herramientas permite que los equipos aprovechen al máximo BDD.

flauta dulce

Parasoft Recorder es una extensión de Chrome que captura la acción de la interfaz de usuario en la página web, así como el tráfico de la API. Estas grabaciones se pueden asignar a elementos de trabajo, funciones o historias de usuario. Esos metadatos pueden vivir con la prueba y vincularse a la función inicial para la trazabilidad en todo el SDLC.

Selenico

JUnit5 y TestNG se utilizan a menudo para realizar pruebas de IU de Selenium, pero no todo el mundo es experto en Java, por lo que herramientas como Parasoft Selenico permite a los usuarios desplazarse hacia la izquierda con grabación y reproducción y autorreparación para la automatización de pruebas.

Ser capaz de generar código Java puro simplemente registrando pruebas manuales asigna el código de prueba directamente a los requisitos comerciales.

Prueba SOA

Las pruebas de API generalmente son difíciles de definir y requieren un conocimiento profundo del servicio, así como del sistema. Parasoft Prueba SOA es una herramienta para la automatización de pruebas funcionales sin script, pero también se puede utilizar con Cucumber. Simplemente puede importar un archivo de definición de servicio como Swagger, configurar la prueba y agregar datos. También puede reutilizar la grabación de Parasoft Recorder para crear automáticamente pruebas de API, que luego se pueden reutilizar para pruebas de carga y rendimiento.

La integración de Cucumber permite a los usuarios agregar definiciones de pasos que apuntan a estas pruebas.

Conclusión

BDD brinda la capacidad para que todo el equipo (incluso los miembros del equipo no tan técnicos) se dediquen a escribir y probar su software. Algunos de los desafíos que acompañan a BDD, como la asignación de texto en inglés simple (también conocido como no técnico) al código, se pueden resolver utilizando soluciones como Parasoft Recorder. En general, BDD es una excelente guía para desarrollar lo correcto de la manera correcta.

Obtenga más información sobre cómo Parasoft puede ayudar a su equipo de desarrollo de software a adoptar y ser más eficaz con BDD.