Testing Colombia

Testing con calidad

Herramientas

Specflow ejemplo de introduccion

SpecFlow es una herramienta basada en lenguaje Gherkin (Given-When-Then) pensada para entornos de desarrollo ágil, busca mejorar la especificación de requerimientos, se generan escenarios en palabras de negocio, esto facilita al desarrollador saber cuál es la funcionalidad real en la que se debe trabajar, evitando código que no va ser ejecutado, esta herramienta permite también utilizar la especificación para pasar rápidamente a diseñar los test, de ahí a que en el diseño se genera paralelamente documentación la cual es muy fácil de entender para los “Stakeholders”,dado que se realiza en palabras de negocio y no en lenguaje técnico.

En el siguiente ejemplo se va a diseñar un ejemplo de especificación para una funcionalidad muy sencilla que es convertir un valor en grados centígrados a su valor representativo en grados Fahrenheit, la idea es ver como a partir de escribir el escenario en términos de negocio o de lenguaje natural, se inicia a desarrollar la funcionalidad necesaria para tal escenario  o lo que es también llamado BDD (Behavior Driven Development – Desarrollo Guiado por comportamiento), también el inicio entorno a ATDD (Aceptance test driven Developmnet –Desarrollo guiado por Pruebas de aceptación guiadas ).

Vamos a iniciar por crear un proyecto de Pruebas en Visual estudio, para este ejemplo se usó la versión “Microsoft Visual Studio Community 2013”, ir al menú File, New, Project:

1

Seleccionamos la opción:  Template, Visual C# y por ultimo UnitTestProyect, se define un nombre y clic en OK

2

Se ha generado un proyecto de pruebas unitarias, como en la siguiente imagen:

3

seleccionamos el proyecto de pruebas unitarias, clic derecho y elegimos la opcion ManageNuget Packages

Nuget

 

En este punto vamos a Seleccionar los siguientes Packages:

  • SpecFlow
  • SpecRun For SpecFlow 1.9.0

5

Una vez instalados los anteriores Packages vamos a hacer clic derecho sobre el proyecto de pruebas y seleccionamos la opción add, New Item y buscamos SpecFlow Feature File.

 

7

8

Se ha generado un archivo como el siguiente, el cual incluye la estructura básica de el archivo:

9

En este punto vamos a escribir nuestro escenario en lenguaje “Gherkin”.

10

Vamos a hacer clic derecho sobre el ejemplo elegimos la opción Generate Step Definitions.

11

En la imagen siguiente se ve el resumen de la configuración que acabamos de escribir definiendo el orden de los pasos, hacemos clic en Generate Step Definitions:

12

Se ha generado el archivo de pasos SpecFlowFeature1Steps el cual genero automáticamente el código para implementar los pasos que fueron definidos en palabras de negocio o lenguaje natural.

13

para implementar los métodos que se marcan como pendientes en el archivo de pasos anterior vamos a hacer clic derecho sobre la solución y elegimos la opciòn add, new proyect, C# y seleccionamos un proyecto de tipo Class Library, le asignamos un nombre y clic en OK.

14

El siguiente paso es asociar el proyecto de pruebas unitarias con el nuevo proyecto que acabamos de configurar, para ello seleccionamos en proyecto de Pruebas, clic derecho y seleccionamos la opción Add, Reference, en este se genera una clase por default, para el ejercicio la vamos a renombrar por «ImplementacionFunc«:

15

En este paso elegimos el menú Solutions, Projects y seleccionamos el que acabamos de Crear “Implementacion”:

16

Una vez referenciados los dos proyectos desde el proyecto de pruebas abrimos el archivo “SpecFlowFeature1Steps” y hacemos una referencia al proyecto Implementacion:

17

Ahora vamos a definir una referencia a la clase “ImplementacionFunc” del proyecto Implementación en nuestro archivo “SpecFlowFeature1Steps”:

18

En este paso vamos a modificar el código generado en el archivo de pasos del proyecto de pruebas, siempre tratando de escribir las variables en términos de negocio, para ello este primer método utiliza un valor de entrada que es el valor de los grados centígrados a convertir de tipo doublé “Cent_Number”, el cual referencia a la clase Implements.

19

En la clase “Implements” se debe definir el método para “Cent_Number”:

20

El siguiente método del archivo de pasos se define la variable result, que es la que va a almacenar el cálculo de la conversión, también a través de la instancia “impl” vamos a ejecutar el método “convert” en la clase “ImplementacionFunc”:

21

22En el archivo “ImplementacionFunc” se implementa el método “convert” el cual retorna un valor de tipo “doublé” que es el cálculo de la conversión:

23

En el último método de pasos en la clase “SpecFlowFeature1Steps”: se define una aserción de respuesta, esto para comprobar que el valor retornado sea igual al valor esperado, lo cual nos determinara si el caso de prueba fue exitoso o fallo, para ello se va a comparar contra una variable del mismo tipo que el resultado la cual se debe definir en la clase “SpecFlowFeature1Steps”, para usar la clase «Assert» es necesario añadir las librerias de Microsoft.VisualStudio.TestTools.UnitTesting;.

25

24

Seleccionamos en el menú de visual Studio la opción Test, Windows y Test Explorer, en esta ventana elegimos la opción de la parte superior “Run All”:

27

Como podemos ver el resumen de la ejecución, el caso de prueba fue exitoso, así podemos ver como esta herramienta permite iniciar procesos de pruebas tan pronto se tiene la especificación y como aporta también al desarrollador una forma de iniciar a trabajar ágilmente sobre lo verdaderamente importante de la funcionalidad necesaria.

Si tienes mas informacion para añadir a esta entrada no dudes en comentar.

Deja un comentario

Tema creado por Anders Norén