Desarrollo impulsado por el comportamiento - SpecFlow

SpecFlow es un proyecto de código abierto. El código fuente está alojado en GitHub. Los archivos de características que utiliza SpecFlow para almacenar un criterio de aceptación para las características (casos de uso, historias de usuario) en su aplicación se definen utilizando la sintaxis de Gherkin.

El formato Gherkin fue introducido por Cucumber y también lo utilizan otras herramientas. El lenguaje Gherkin se mantiene como un proyecto en GitHub -https://github.com/cucumber/gherkin

Elementos de características y SpecFlow

Las características clave de los elementos Feature son:

  • El elemento de característica proporciona un encabezado para el archivo de características. El elemento de característica incluye el nombre y una descripción de alto nivel de la característica correspondiente en su aplicación.

    • SpecFlow genera una clase de prueba unitaria para el elemento de característica, con el nombre de la clase derivado del nombre de la característica.

    • SpecFlow genera pruebas unitarias ejecutables a partir de los escenarios que representan los criterios de aceptación.

  • Un archivo de características puede contener múltiples escenarios que se utilizan para describir las pruebas de aceptación de la característica.

    • Los escenarios tienen un nombre y pueden constar de varios pasos de escenario.

    • SpecFlow genera un método de prueba unitaria para cada escenario, con el nombre del método derivado del nombre del escenario.

Múltiples pasos del escenario

Los escenarios pueden tener varios pasos de escenario. Hay tres tipos de pasos que definen las condiciones previas, acciones o pasos de verificación que componen la prueba de aceptación.

  • Los diferentes tipos de pasos comienzan con el Given, When o Then palabras clave respectivamente y los pasos posteriores del mismo tipo se pueden vincular utilizando el And y But palabras clave.

  • La sintaxis de Gherkin permite cualquier combinación de estos tres tipos de pasos, pero un escenario suele tener distintos bloques de Given, When y Then declaraciones.

  • Los pasos del escenario se definen mediante texto y pueden tener una tabla adicional llamada DataTable o texto de varias líneas llamado argumentos DocString.

  • Los pasos del escenario son una forma principal de ejecutar cualquier código personalizado para automatizar la aplicación.

  • SpecFlow genera una llamada dentro del método de prueba unitaria para cada paso del escenario. La llamada la realiza el tiempo de ejecución de SpecFlow que ejecutará la definición del paso que coincide con el paso del escenario.

  • La coincidencia se realiza en tiempo de ejecución, por lo que las pruebas generadas se pueden compilar y ejecutar incluso si el enlace aún no está implementado.

  • Puede incluir tablas y argumentos de varias líneas en los pasos del escenario. Estos son utilizados por las definiciones de pasos y se pasan como argumentos adicionales de tabla o cadena.

Etiquetas

Las etiquetas son marcadores que se pueden asignar a funciones y escenarios. Asignar una etiqueta a una característica es equivalente a asignar la etiqueta a todos los escenarios en el archivo de características. Un nombre de etiqueta con una @ inicial indica una etiqueta.

  • Si es compatible con el marco de pruebas unitarias, SpecFlow genera categorías a partir de las etiquetas.

  • El nombre de la categoría generada es el mismo que el nombre de la etiqueta, pero sin la @ inicial.

  • Puede filtrar y agrupar las pruebas que se ejecutarán utilizando estas categorías de pruebas unitarias. Por ejemplo, puede etiquetar pruebas cruciales con @important y luego ejecutar estas pruebas con más frecuencia.

Elementos de fondo

El elemento de idioma de fondo permite especificar una condición previa común para todos los escenarios en un archivo de características

  • La parte de fondo del archivo puede contener uno o más pasos de escenarios que se ejecutan antes que cualquier otro paso de los escenarios.

  • SpecFlow genera un método a partir de los elementos de fondo que se invoca a partir de todas las pruebas unitarias generadas para los escenarios.

Esquemas de escenarios

Los esquemas de escenarios se pueden utilizar para definir pruebas de aceptación basadas en datos. El esquema del escenario siempre consta de una especificación de plantilla de escenario (un escenario con marcadores de posición de datos que utilizan la sintaxis <placeholder>) y un conjunto de ejemplos que proporcionan valores para los marcadores de posición

  • Si el marco de pruebas unitarias lo admite, SpecFlow genera pruebas basadas en filas a partir de esquemas de escenarios.

  • De lo contrario, genera un método lógico de prueba unitaria parametrizado para un esquema de escenario y un método de prueba unitaria individual para cada conjunto de ejemplos.

  • Para una mejor trazabilidad, los nombres de los métodos de prueba unitaria generados se derivan del título del esquema del escenario y del primer valor de los ejemplos (primera columna de la tabla de ejemplos).

  • Por tanto, es una buena práctica elegir un parámetro único y descriptivo como primera columna del conjunto de ejemplos.

  • Como la sintaxis de Gherkin requiere que todas las columnas de ejemplo tengan marcadores de posición coincidentes en el esquema del escenario, incluso puede introducir una columna arbitraria en los conjuntos de ejemplo utilizados para nombrar las pruebas con más legibilidad.

  • SpecFlow realiza la sustitución del marcador de posición como una fase separada antes de hacer coincidir los enlaces de paso.

  • La implementación y los parámetros en los enlaces de pasos son, por lo tanto, independientes de si se ejecutan a través de un escenario directo o un esquema de escenario.

  • Esto le permite especificar más adelante ejemplos en las pruebas de aceptación sin cambiar los enlaces de pasos.

Comentarios

Puede agregar líneas de comentarios a los archivos de características en cualquier lugar comenzando la línea con #. Sin embargo, tenga cuidado, ya que los comentarios en su especificación pueden ser una señal de que los criterios de aceptación se han especificado incorrectamente. SpecFlow ignora las líneas de comentarios.