2011-12-13 4 views
8

Estamos utilizando BDD y utilizando SpecFlow para impulsar nuestro desarrollo (ATDD).Uso de SpecFlow para pruebas de regresión de extremo a extremo

Nuestro equipo de control de calidad quisiera definir sus propias pruebas de regresión de extremo a extremo (en Gherkin/SpecFlow) y reutilizar los Pasos que ya hemos definido.

(Tenga en cuenta - Sé que esto no es un gran ejemplo, pero debe proporcionar suficientes detalles)

Una prueba puede incluir ..

  1. Acceder
  2. Buscar un producto
  3. seleccionar un producto para comprar
  4. crear un orden Seleccionar la opción de entrega
  5. .
  6. Envíe la orden.
  7. Cancele el pedido.

Esto haría sugiere un escenario como ..

Dada estoy conectado
cuando la búsqueda de un producto
Y seleccionar un producto para comprar
Y crear un orden
Y I Seleccione la opción de entrega
y envío el pedido
y cancelo el pedido
Entonces ?? !!

Lo cual es claramente incorrecto ya que no estamos verificando la salida en cada paso.

Así que este puede resolverse como una secuencia de escenarios:

Escenario 1:
Dado estoy conectado
cuando la búsqueda de un producto
entonces veo una lista de productos

Escenario 2:
Cuando selecciono un producto para comprar
Entonces puede crear una orden

Escenario 3:
Cuando creo el orden
Y seleccione la opción de entrega
Entonces puedo enviar la orden

, etc, etc

El principal problema con esto es que parece que no hay manera para especificar el orden/secuencia en que se ejecutan los escenarios (una característica de nUnit?). Debido a que existen dependencias entre los escenarios (no se establecen en un punto de inicio conocido), deben ejecutarse en secuencia.

Mis preguntas son:

a) estamos tratando de encajar una clavija cuadrada en un agujero redondo ?!

b) ¿Alguien sabe si hay alguna manera de usar SpecFlow/Gherkin de esta manera?

c) ¿Alguien sabe qué alternativas hay?

¡Muchas gracias!

Respuesta

11

Diría que está escribiendo sus escenarios en el nivel de abstracción incorrecto. Pero eso depende de para qué los quiera usar;

Si quiere escribir scripts de prueba, entonces está en el camino correcto ... pero será una pesadilla mantenerlo, en el primer caso (secuencia de comandos larga) será muy frágil y el segundo caso (varios escenarios) necesitan asegurar un cierto orden de ejecución. Ambos están desalentados y considerados antipatrones.

Le sugiero que combine las pruebas ATDD que está escribiendo y hable con el departamento de pruebas para obtener su opinión sobre el asunto e incluir los casos de prueba que necesitan para garantizar que el sistema sea probado minuciosamente. ¿Quien sabe? Incluso podría aprender algo el uno del otro: P

Y cuando escribe esas "especificaciones" (como prefiero llamarlas) las escribe en un nivel superior. Así que en lugar de escribir:

Given I am logged in 
When I Search for a product 
    And I Select a product to buy 
    And I Create an order 
    And I Select delivery option 
    And I Submit the order 

se escribe algo así como

When I submit an order for product 'Canned beans' 

en la etapa de definiciones detrás de ese paso de llevar a cabo todo lo que la automatización (inicio de sesión, navegar a la página del producto, seleccione las opciones de entrega, enviar el pedido).

Todo esto se puede leer acerca de estos grandes artículos sobre cómo escribir pruebas mantenibles de UI Automation:

espero que esto ayude a

+0

Muchas gracias por su respuesta Marcus y los artículos que usted lista - muy útil! Estoy un poco más claro ahora en la prueba de la prueba. Es decir, ¿tenemos la capacidad de encadenar escenarios ya escritos para ejecutarlos en secuencia y realizar pruebas de sistema de extremo a extremo? p.ej. inicie sesión y luego busque productos y luego envíe el pedido, luego registre la cuenta y luego edite la cuenta, luego busque los pedidos, vea el pedido y luego cancele el pedido, etc. Sería útil, por lo tanto, encadenar escenarios como Cuándo Entonces Cuándo Entonces Cuándo Entonces ... Desafortunadamente, no parece ser una forma de ejecutar escenarios en un orden específico. –

+0

Actualización: si los escenarios tienen el nombre '001 Haga esto', '002 Haga eso' etc., entonces se ejecutan en ese orden. Se siente un poco raro, pero para nuestros propósitos, esto funcionará hasta que se encuentre una mejor solución. –

+1

Definitivamente recomendaría no escribir escenarios que dependen del orden. Eso será difícil de mantener ... –

Cuestiones relacionadas