Seguro que te has podido preguntar en más de una ocasión, ¿por qué debería usar Quick & Nimble? ¿Qué es BDD? Entonces, has llegado al artículo adecuado, ya que aquí encontrarás toda la información que necesitas para poder tenerlo más claro. Los datos que te daré sabrás cómo se puede utilizar para poder realizar pruebas basadas en el comportamiento en iOS, de una forma bastante útil.
Desarrollar aplicaciones que tengan un buen rendimiento es una cosa, pero trabajar con buenas pruebas puede comprometer el comportamiento esperado de la aplicación, algo que sin duda es una tarea más complicada de llevar a cabo.
En este artículo repasaremos una de las pruebas de aplicaciones, la que recibe el nombre de Behavior-Driven Development (BDD).
¿Qué es el Behavior-Driven Development (BDD) y cuáles son sus ventajas?
El Behavior-Driven Development o Desarrollo basado en el comportamiento es un conjunto de prácticas de desarrollo de software que están centradas en las especificaciones, las características y en el comportamiento de la aplicación.
El objetivo es obtener unos datos que sean comprensibles para los desarrolladores, los testers y los clientes.
Sin duda alguna, podemos decir que una de las principales ventajas de BDD, es el hecho de poder tener una especificación que sirva para describir el comportamiento de una característica de software bien definida y que sea fácil de entender.
Estando descrita de una forma más parecida a nuestro lenguaje natural.
Given, When, Then (Contexto, Comportamiento, Respuesta)
Esta es la forma en la que se describe un caso de pruebas, en donde:
Given: se encarga de representar el contexto en el que se producirá el comportamiento. Hace referencia al comportamiento que tendrá antes de su inicio.
When: es el comportamiento que está siendo probado.
Then: se describe la salida esperada en función del contexto (Given) y del comportamiento (When).
En estos casos, las especificaciones descritas son fáciles y se pueden entender las características desde todas las perspectivas, tanto las del desarrollador, el tester o el cliente.
¿Por qué utilizar BDD?
El desarrollo de software moderno ha cambiado demasiado y sigue cambiando a pasos agigantados cada año.
Ahora se tienen interacciones más rápidas y existe la posibilidad de usar la integración continua, la implementación continua y las compilaciones diarias que terminan implementándose en la producción.
Las pruebas automatizadas se han convertido en una pieza esencial para el flujo de trabajo de cualquier proyecto, dentro del sentido de que hace que todo sea posible gracias a que funciona como un paso de validación que puede servir para dar garantía de que no se ha interrumpido un flujo de trabajo ya existente en la aplicación de una nueva versión.
Que existan pruebas automatizadas no significa que no exista ningún error, pero en algunos casos, pueden ser justo lo que se necesita para impedir que se implemente un fallo que pueda afectar a los clientes.
Por eso, en este artículo quiero ayudarte a tener una visión general del alto nivel que se puede obtener por medio de las pruebas de desarrollo impulsadas por el comportamiento BDD en Swift con Quick & Nimble.
De forma que puedas tener claro qué son y por qué puede ser una de las mejores opciones para ti, pudiendo ajustarse a tus necesidades.
Por qué usando Quick & Nimble se puede trabajar con BDD y por qué es bueno utilizarlo
Ahora que ya tienes una mejor noción sobre qué es BDD, es el momento de que comencemos a ver cómo usarlo en nuestras aplicaciones de iOS con Quick & Nimble.
Antes de empezar explicaremos brevemente cada uno de estos aspectos:
- Quick: se trata de un marco de desarrollo que está basado en el comportamiento para Swift y Objetive-C, el cual está inspirado en RSpec, Spectay y Ginkgo.
- Nimble: Quick hace su trabajo junto a Nimble, un marco de aserción que se encarga de hacer que sea más claro y sencillo que coincida con las expectativas que se tienen en las pruebas.
En cuanto veas un ejemplo podrás observar que las especificaciones son legibles y se pueden conocer de forma sencilla con tan solo leerlo, pudiendo conocer el comportamiento que se está probando y el resultado que se espera.
Asimismo, también se pueden realizar pruebas asincrónicas utilizando Quick & Nimble.
En estos casos podemos decir que es muy similar a XCTest, pero se espera hasta que la condición consiga coincidir o llegue al tiempo de espera.
En realidad, hay una gran cantidad de proyectos de código abierto que utilizan Quick & Nimble en sus pruebas.
Lo que queda claro es que la utilización de Quick & Nimble te puede ayudar a obtener pruebas mucho más significativas sobre el comportamiento y que sirven de gran ayuda para los controladores de vista.
Es decir, Quick & Nimble es un complemento ideal al desarrollo BDD y por tanto, es muy recomendable utilizarlo.
Todo sobre el BDD (Desarrollo impulsado por el comportamiento)
Hasta este punto ya ha quedado completamente claro qué es el BDD, pero en caso de qué aún queden algunas dudas al respecto, aquí me encargaré de darte toda la información que puedes llegar a necesitar.
Lo primero que debes de saber del BDD es que es una síntesis o un refinamiento de otras prácticas derivadas como el Desarrollo Impulsado por Pruebas (TDD) y el Desarrollo Impulsado por Pruebas de Aceptación (ATDD).
Sin embargo, el BDD supera al TDD y al ATDD gracias a los siguientes puntos:
- Aplica el principio “Five Why´s” o “Cinco Porqués” a cada una de las historias de usuario que son propuestas, de forma que el propósito siempre esté claramente relacionado con los resultados empresariales que se desean obtener.
- También destaca por “Pensar de fuera hacia dentro”. Esto quiere decir que implementa solo los comportamientos que pueden contribuir directamente sobre los resultados del negocio.
- Permite describir el comportamiento en una sola anotación que es accesible tanto para expertos, testers, clientes y desarrolladores. De esta forma, se puede conseguir una mejor comunicación.
- Al aplicar estas técnicas hasta en los niveles más bajos de la abstracción del software, en donde se presta especial atención a la distribución del comportamiento, la evolución se puede presentar de una forma más efectiva.
¿Cuáles son los beneficios que se pueden conseguir utilizando BDD?
Anteriormente ya me encargue de hablar de algunos de los aspectos por los que BDD es superior a las otras alternativas que podemos encontrar.
Si trabajas en un equipo que actualmente está utilizando TDD o ATDD, estos son algunos de los puntos o beneficios por lo que deberías considerar el empezar a trabajar con BDD:
- Utilizando BDD se puede conseguir una orientación más precisa sobre la organización de la conversación entre los desarrolladores, los evaluadores y los expertos.
- Gracias a las anotaciones originadas desde un enfoque de BDD, sobre todo al usar el lienzo given-when-then, que explicamos anteriormente, se puede estar más cerca del lenguaje natural o cotidiano, teniendo una curva de aprendizaje que es menos profunda en comparación a la que nos podemos encontrar con otras herramientas.
- Las herramientas que están dirigidas a un enfoque BDD generalmente suelen ofrecer una generación automática de documentación técnica y del usuario final a partir de las “especificaciones” del BDD.
Estas son algunas de las ventajas principales que un equipo puede aprovechar al comenzar a utilizar el BDD.
Signos de uso de BDD
Entre los signos de uso de BDD nos podemos encontrar los siguientes:
Los equipos que utilizan BDD tienen que ser capaces de poder proporcionar una parte significativa de la “documentación funcional” en forma de historias de usuario aumentadas con escenarios ejecutables o algunos ejemplos.
En lugar de referirse a las “pruebas”, un profesional de BDD tiene que preferir términos como “escenario” o “especificación”.
De la forma en la que se practica actualmente BDD, se tiene como objetivo reunir en un solo lugar la especificación de un resultado valioso para un usuario, generalmente usando la matriz de funciones (Historias de usuario), así como otros ejemplos de escenarios expresados en la forma given-when-then; considerándose como las más legibles.
Cuando se hace un énfasis en el término “especificación” la intención que se tiene en BDD es proporcionar una única respuesta a la que muchos equipos puedan acudir, así como la creación de pruebas unitarias y de código “técnico”, la creación de funciones y de características.
De esta forma, se puede conseguir una mejor colaboración entre los especialistas, los desarrolladores y los evaluadores.
Asimismo, en lugar de referirse a las pruebas unitarias de una clase, el practicante o un equipo de BDD prefiere hablar de las especificaciones del comportamiento de la clase.
Esto se refleja en un mayor enfoque en papel de las especificaciones, además de que también se espera que los nombres sean más expresivos y cuando se completen con su descripción en formato given-when-then puedan utilizarse como un servicio de documentación técnica.
Conclusión
Utilizar Quick & Nimble además del concepto BDD para escribir nuestras pruebas puede servirnos de gran utilidad gracias a que nos permite describir las especificaciones de una forma bastante sencilla y comprensible para todos.
¿Qué te pareció el artículo? Si tiene alguna pregunta o comentario, no dude en comentar a continuación.
Ah, y si te ha gustado no te olvides de compartirla 😄