specflow tutorial ultimate guide bdd tool
Una guía completa para el tutorial de Specflow y Behavior Driven Development (BDD):
¿Qué es Specflow?
Specflow es un marco de prueba que respalda las prácticas de BDD en el marco .NET. Es un marco de código abierto alojado en GitHub. Ayuda a utilizar ATDD (desarrollo de controladores de prueba de aceptación) para aplicaciones .NET. Con esto, podemos definir el escenario en inglés simple definido por el lenguaje Gherkin que es claramente comprensible para cualquier persona.
Hay varias herramientas para escribir pruebas en el enfoque BDD como Cucumber / JBehave para Java, Lettuce para Python, Jasmine para Javascript, Specflow para .NET.
BDD (Desarrollo impulsado por el comportamiento) es un conjunto de prácticas o un enfoque similar a TDD (Desarrollo impulsado por pruebas), que tiene como objetivo cerrar la brecha de comunicación entre las diferentes partes interesadas, como Productos, Desarrolladores y Testers.
El objetivo final del enfoque de BDD es crear requisitos comerciales que todo el equipo pueda comprender para evitar malentendidos y ayudar a distribuir la función que se está desarrollando de la manera más aceptable.
Una serie completa de tutoriales de Specflow:
Lea el Serie completa de formación Specflow para una mejor comprensión del concepto.
Tutorial #1: Introducción a la herramienta Specflow BDD (Este tutorial)
Tutorial #2: Ejemplo de Specflow y Selenium
Tutorial #3: Encuadernación de Specflow y conceptos avanzados
Tutorial #4: Transformaciones de argumentos de paso y tablas de flujo de especificaciones
Tutorial #5: Documentación de Specflow Living con Pickles
Tutorial #6: Generador de informes Specflow
Tutorial #7: Preguntas de la entrevista Specflow
Una breve descripción de los tutoriales de la serie Specflow:
| Tutorial # | Descripción |
|---|---|
| 7 | Preguntas de la entrevista Specflow En este tutorial se incluye una lista de las preguntas y respuestas de entrevistas de Specflow más populares con ejemplos para que pueda descifrar cualquier entrevista de Specflow con éxito en el primer intento. |
| 1 | Introducción a la herramienta Specflow BDD (Este tutorial) Este tutorial introductorio le explicará todo sobre Specflow en detalle. Specflow es un marco de prueba que respalda las prácticas de BDD en el marco .NET. Es un marco de código abierto alojado en GitHub. Ayuda a utilizar ATDD (desarrollo de controladores de prueba de aceptación) para aplicaciones .NET. |
| 2 | Ejemplo de Specflow y Selenium Este tutorial se centrará en la integración de Selenium con el marco de Specflow a través de un escenario de prueba simple de búsqueda de video en la aplicación de Youtube. También comprobará cómo compartir datos a través de diferentes enlaces a través de campos de clases privados. |
| 3 | Ejemplo de Specflow y Selenium Este tutorial se centrará en la integración de Selenium con el marco de Specflow a través de un escenario de prueba simple de búsqueda de video en la aplicación de Youtube. También comprobará cómo compartir datos a través de diferentes enlaces a través de campos de clases privados. |
| 4 | Transformaciones de argumentos de paso y tablas de flujo de especificaciones Este tutorial informativo de Specflow explicará en detalle las transformaciones de argumentos de paso que permiten conversiones de tipos personalizados para argumentos de Specflow para evitar el código repetitivo y las tablas de Specflow son útiles cuando necesita pasar muchos campos / datos en un solo paso en un tabular fácil de usar. formato. |
| 5 | Documentación de Specflow Living con Pickles A partir de este tutorial de Specflow, aprenderá cómo generar documentación viva de buen aspecto a través de un marco de código abierto llamado pickles utilizando sus archivos Specflow existentes. |
| 6 | Generador de informes Specflow En este tutorial de informes de Specflow, aprenderá las formas de ejecutar las pruebas de características de Specflow junto con la generación de informes HTML a través del ejecutable de Specflow. |
Comencemos con el primer tutorial de esta serie.
Lo que vas a aprender:
Introducción a la herramienta Specflow BDD
Vea el tutorial en video:
Aquí hay un video tutorial sobre Specflow y Behavior Driven Development:
Características de BDD
Las características clave de BDD se resumen a continuación:
#1) Intenta definir el comportamiento del sistema o característica que se está desarrollando a través de un ejemplo o escenario. Por ejemplo, si está creando una aplicación de calculadora simple, los diferentes comportamientos incluyen suma, multiplicación, división, etc.
Por lo tanto, a través de BDD, todas las partes interesadas se reunirán primero para decidir el comportamiento de la aplicación como Addition y tendrán escenarios como se muestra a continuación.
|_+_|Si ve la representación anterior, es un escenario en un inglés sencillo que es claramente comprensible para cualquier persona y aclara los requisitos para una función (según los criterios de aceptación). Por tanto, el primer paso es articular estos requisitos.
#2) Ahora, con un conjunto de estos escenarios, el QA escribe pruebas contra ellos y esto inicialmente fallará ya que la función aún no se ha desarrollado.
#3) Ahora, el desarrollador escribe un código de función y vuelve a ejecutar estas pruebas.
#4) Las pruebas pueden aprobarse o fallar. Si fallan, refactorice el código y repita el proceso
#5) Una vez que se completa la refactorización del código, todos los escenarios / pruebas deben pasar.
Por lo tanto, en esencia, BDD utiliza el enfoque TDD y lo lleva al siguiente nivel al tener algunas especificaciones comunes fácilmente comprensibles en forma de escenarios. También representan la documentación de características en sí misma.
Hay varias herramientas para escribir pruebas en el enfoque BDD como Cucumber / JBehave para Java, Lettuce para Pitón , Jasmine para Javascript, Specflow para .NET.
C ++ 11 preguntas de la entrevista
En este tutorial, nos centraremos en Specflow.
Leer también => Principales herramientas y marco de prueba de BDD
Las palabras clave: dado, cuándo y entonces
Desde el mundo de las pruebas unitarias, la mayoría de nosotros estamos familiarizados con las 3 A, es decir, organizar, actuar y afirmar. Ahora, Dado, Cuándo y Entonces son los reemplazos para estos en el mundo BDD.
Tomemos un Ejemplo para comprender cada uno de estos. Suponga que está enumerando un escenario para validar un producto que se agrega al carrito de compras de una aplicación de comercio electrónico que requiere que inicie sesión como requisito previo.
La especificación se puede escribir de la siguiente manera:
|_+_|Dado :Se utiliza para describir un conjunto de condiciones previas para el escenario que se está definiendo. Por ejemplo, en el ejemplo, el requisito previo del escenario es un cliente que inició sesión. Por lo tanto, en comparación con el Arreglar Por analogía en una prueba unitaria, la implementación del paso deberá garantizar que haya un cliente conectado.
Cuando :Se utiliza para describir una acción o paso de ejecución. En el ejemplo, muestra que el cliente está intentando agregar un producto a su carrito de compras. Por lo tanto, la implementación del paso para este paso se ocupará del código de simulación para agregar un producto al carrito. Esto se puede comparar con el Actuar paso en las pruebas unitarias.
Entonces :Esto se utiliza para describir el resultado del escenario y esencialmente dónde se deben colocar las validaciones. Se puede comparar con el Afirmar paso en el mundo de las pruebas unitarias. En el ejemplo aquí, la implementación del paso afirmará si el producto se agregó realmente y la cantidad es la misma que la elegida por el cliente.
El archivo de características
El archivo de características es esencialmente una agrupación de múltiples escenarios para la aplicación en desarrollo o prueba. También se puede considerar simplemente como diferentes módulos de la aplicación mediante los cuales la aplicación puede separarse lógicamente.
Por ejemplo:
Una aplicación de comercio electrónico puede decidir tener diferentes archivos de características de alto nivel como:
- Funcionalidad de inicio / cierre de sesión
- Carrito de compras
- Pago, etc.
¿Qué es Specflow?
Specflow es una herramienta que apoya las prácticas de BDD en .NET framework. Es un marco de código abierto alojado en GitHub. Ayuda a utilizar ATDD (desarrollo de controladores de prueba de aceptación) para aplicaciones .NET.
La vinculación de los requisitos comerciales para una aplicación mediante el paradigma Especificación por ejemplo ayuda a comprender mejor el comportamiento de la aplicación por parte de todas las partes interesadas y, por lo tanto, da como resultado el envío del producto con las expectativas correctas.
Hace uso de Pepinillo sintaxis para crear características y escenarios. También tiene una discusión / desarrollador activa foro .
Specflow - Introducción
En esta sección, exploraremos la instalación de specflow en el IDE de Visual Studio y la creación de archivos de características para una aplicación de utilidad de cadena simple.
Acerca de la aplicación de muestra
Ilustraremos diferentes características del marco Specflow en este tutorial usando una aplicación de calculadora que tiene funciones / interfaces para proporcionar diferentes operaciones como:
- Sumando 2 números.
- Restar 2 números.
- Dividir y multiplicar 2 números.
- Hallar la raíz cuadrada del número dado.
Specflow Guía de instalación
La instalación de Specflow es un proceso de 2 pasos
#1) Instalación de los complementos necesarios en Visual Studio IDE.
- Para instalar el complemento specflow, vaya a Herramientas -> Extensión y actualizaciones.
- Ahora haga clic en 'En línea' en el panel izquierdo.
- Ahora busque specflow en el panel derecho.
- En los resultados de la búsqueda, seleccione 'Specflow para Visual Studio 2017'.

#2) Configurar el proyecto con archivos de características y definiciones de pasos.
- Cree un proyecto nuevo y sencillo en Visual Studio. Podemos crear cualquier tipo de proyecto como biblioteca de clases / aplicación de consola / proyecto de prueba de unidad, etc. Para simplificar, estamos tomando un proyecto de biblioteca de clases. Nombra el proyecto como “SpecflowBasic”.
- Para ejecutar los escenarios de Specflow que vamos a crear, necesitamos un corredor de prueba. Specflow proporciona un corredor listo para usar llamado Specflow + Runner (que es una versión paga y la versión gratuita presenta un retraso).
(Otros corredores también están disponibles para NUnit y MsTest que veremos en los artículos posteriores de esta serie).
Para instalar Specflow + Runner - Vaya a Herramientas -> Administrador de paquetes NuGet -> Consola del administrador de paquetes.
Una vez que se abra la Consola del Administrador de paquetes, ejecute el comando.
|_+_| 
- Además, para afirmar los valores, necesitaremos la ayuda de un marco de prueba. NUnit puede ser una de las opciones y las otras incluyen MsTest, etc. Para instalar el marco NUnit en la aplicación, abra la Consola del Administrador de paquetes y escriba el comando.
#3) Cree una nueva clase llamada 'CalculatorApplication' que se convertirá en nuestra aplicación bajo prueba. Esta es una clase simple que tiene funciones para realizar suma / multiplicación / división / raíz cuadrada, etc., para la entrada dada. Así es como se ve la clase CalculatorApplication.
#4) Una vez que se haya instalado el paquete, cree 2 carpetas en el proyecto y nómbrelas como Características y Definiciones de pasos para almacenar los archivos de características y los enlaces de pasos, respectivamente. Discutiremos en detalle el motivo de esta organización de carpetas para las definiciones de funciones y pasos.
#5) Ahora, en la carpeta de características, agregue un nuevo archivo de características y asígnele el nombre CalculatorFeature.

Verá que, de forma predeterminada, el archivo de características tiene alguna descripción en Característica y escenario.
Reemplaza eso con lo que vamos a probar.
|_+_|#6) Generación de definiciones de pasos: Specflow proporciona una forma automatizada de generar enlaces / implementación para los diferentes pasos en escenarios de archivos de características. Esto se puede lograr haciendo clic derecho en el archivo de características y haciendo clic en 'Generar definiciones de pasos'.

Este paso no garantiza una implementación para todos los pasos, pero hace todo lo posible por agrupar los pasos comunes en escenarios y reutilizar tantos enlaces como pueda. Sin embargo, hace el trabajo de evitar el código repetitivo cada vez que se necesita implementar un paso de escenario.
Después de hacer clic 'Generar definiciones de pasos' Aparecerá una ventana con una lista de las implementaciones de pasos identificados que el procesador ha detectado. Uno puede seleccionar o deseleccionar según los requisitos.

En las secciones posteriores, veremos más detalles sobre el menú desplegable Estilo que se muestra en la captura de pantalla anterior.
Por ahora, mantengamos todos ellos seleccionados con la configuración predeterminada. Al hacer clic en la Vista previa, se mostrará una instantánea de cómo se verá la implementación.

Después de crear las definiciones de pasos, aún así, si hay algunos pasos sin implementar, los archivos de características tienen una forma visual de identificar las aplicaciones sin implementar. Muestra esos pasos en un color diferente al hacer que sea absolutamente sencillo saber que hay algunos pasos que aún no tienen una implementación (o que tienen definiciones de pasos ambiguas).
Una pantalla de muestra muestra lo siguiente:

Nota: Las definiciones de Step también se pueden crear manualmente: cualquier archivo .cs que tenga el atributo (Binding) es una clase de implementación de Step y la sintaxis de Gherkin buscará coincidir con la implementación del paso de escenario dado
Ejecución
Como ya hemos agregado Specflow + Runner en la sección anterior, ejecutar los escenarios es bastante sencillo (dado que es una versión de evaluación de Specrun, introduce un retraso variable de 10-20 s antes de que se ejecuten los escenarios., Este retraso no está presente para las variantes registradas y otros sabores de corredor Specrun como NUnit y MsTest).
Si todos los pasos tienen no ha sido implementado y si todavía hay enlaces que tienen un estado pendiente. Entonces la salida se mostrará como pendiente.
Intentemos ejecutar estas pruebas / escenarios en este punto cuando no haya implementación para los enlaces y todos los escenarios estén pendientes.

Ahora intentemos implementar la clase CalculatorApplication con los métodos que queremos probar, es decir, sumar, restar, multiplicar, dividir y sqrt.
A continuación se muestra un ejemplo de código de cómo se ve nuestra clase CalculatorApplication:
|_+_|Una vez que la aplicación esté lista, intentemos descubrir las formas de implementar los enlaces para cada uno de los pasos del escenario.
Veamos el enfoque paso a paso para implementar estos:
- Primero, necesitamos tener una instancia de la aplicación que necesita ser probada. Para simplificar, podemos crear una instancia de AUT (clase de aplicación en prueba) en enlaces de paso y usar la instancia instanciada para llamar a diferentes métodos / funciones según el paso que se implemente.
- Para capturar la entrada y la salida, estamos declarando variables para contener estos valores con el fin de llamar a funciones en la instancia de la Aplicación.
Veamos la implementación de un extremo a otro para todos los enlaces involucrados en la validación de la funcionalidad Agregar (el resto de los escenarios simplemente están extendiendo esto).
El escenario Agregar se ve como se muestra a continuación:
|_+_|Veamos la implementación de pasos para cada uno de estos pasos individuales. Para el uso de todas las implementaciones de pasos, declaramos una instancia de Aplicación bajo prueba, así como variables para contener variables de entrada y salida como se muestra a continuación:
|_+_|Veamos la implementación de los pasos del escenario uno por uno.
Paso 1: Dado que he proporcionado 70 y 20 como las entradas.
|_+_|Aquí, acabamos de inicializar las variables de entrada con los valores pasados de los pasos del escenario. p0 y p1 son los valores que se pasan del paso de escenario y se inicializarán como 70 y 20 respectivamente.
Paso 2: Cuando presiono agregar.
|_+_|Este es el paso Ejecución (o Actuar) donde se llama al método real en la Aplicación bajo prueba. Observe que, dado que las variables de entrada input1 y input2 ya contienen los valores pasados en Step1, la instancia de la aplicación puede llamar al método con estas variables.
Paso 3: - Entonces el resultado debería ser 90.
|_+_|Este es el paso de Validación (o Afirmar) donde la salida es generada por la llamada al método y la instancia de Aplicación es validada contra la salida esperada.
Note, que el Afirmar La palabra clave utilizada es de NUnit Framework, que devuelve verdadero o falso dependiendo de la validación / expectativa establecida. En caso de que devuelva falso, hará que la implementación del Paso falle y eso mostrará el resultado del escenario como un error.
es mejor realizar pruebas de conectividad en una computadora conectada a una red en vivo.
Además, tenga en cuenta que la variable de salida obtiene el valor del paso anterior en el que se llamó al método real en la instancia de la aplicación.
Similar a lo anterior, las implementaciones de Step para el resto de los pasos del escenario se realizan de la misma manera, la diferencia está en llamar a diferentes métodos en la instancia de aplicación y afirmar diferentes valores de salida.
Una vez implementados todos los pasos del escenario, se pueden ejecutar las pruebas.
La salida resultante se verá como se muestra a continuación:

También puede ver el resultado del escenario individual que también enumera el resultado de los pasos individuales:

Conclusión
Espero que este artículo le haya dado una comprensión básica de qué es BDD y cuáles son las herramientas que soportan BDD para .NET donde cubrimos Specflow.
También discutimos la instalación y ejecución de archivos de características de Specflow con la ayuda de una aplicación de muestra.
Archivos de código
Los archivos de código utilizados en la aplicación se muestran a continuación:
CalculatorFeatureSteps.cs
|_+_|CalculatorApplication.cs
|_+_|paquetes.config
¡Nuestro próximo tutorial le informará sobre el ejemplo de extremo a extremo del uso de Specflow y Selenium Webdriver!
Lectura recomendada
- Tutoriales detallados de Eclipse para principiantes
- Tutorial de TestLink: Guía para principiantes de la herramienta de gestión de pruebas TestLink (Tutorial n. ° 1)
- Tutorial de Bugzilla: Tutorial práctico de la herramienta de gestión de defectos
- Tutorial TestComplete: una guía completa de la herramienta de prueba de GUI para principiantes
- Ver tutorial de automatización de pruebas: una guía de herramientas de automatización de pruebas móviles
- Tutorial de redes informáticas: la guía definitiva
- Tutorial de la herramienta de prueba de accesibilidad WAVE
- Marco BDD (desarrollo impulsado por el comportamiento): un tutorial completo