Buenos días,
He estado dando un repaso a Cucumber y me ha gustado bastante. La verdad es que nunca lo había utilizado pero pinta genial. También me leí uno de los libros que me habéis recomendado (Cucumber and Cheese) y he de decir que me parece un recurso genial para cualquier persona que se quiera iniciar, no solamente en Cucumer, sino en general en Watir y Ruby. Habría casi matado por tener algo así hace tiempo cuando empecé a hacer mis pinitos en el mundo del scritping :)
Volviendo al tema que estamos intentando poner en marcha, todavía no lo termino de ver montado con Cucumber. Básicamente vamos a generar un set de datos bastante grande, que tenemos que verificar en diferentes puntos, lo cual nos lleva a un escenario tal que:
Data Set UI XML XML(+XSLT)
---------------------------------------------------------------------------------------------
Data Point 1 Data Point 1 Data Point 1 Data Point 1
. . . .
. . . .
. . . .
Data Point N Data Point N Data Point N Data Point N
Y a partir de aquí generaremos combinaciones de [1...N; N aprox 100]. Una vez generadas las combinaciones, tenemos que verificar los datos (transformados) en diferentes puntos del sistema y cada punto de verificació es asíncrono, lo cual significa que no necesariamente puede verificarse con un escenario completo. Cucumber parece ser ideal para manejar escenarios de alto nivel, pero en nuestro caso la parte clave a estresar es el modelo de datos del sistema, con lo cual todavía no termino de ver claro que nos sirva.
Se me ocurren 3 escenarios sobre cómo hacerlo, utilizando Cucumber (1 y 2) y sin utilizar Cucumber (3)
1) Datos redundantes:
Scenario Outline: Modifying UI values
Given I have no data
When I edit the field "<type>"
And I enter the data "<data>"
And I click the save button
Then I should see the "<data>" persisted for the "<type>" field
| type | field |
| field_1 | content_1 |
| field_2 | content_2 |
| field_N | content_N |
Repetir esto X veces para cada juego de datos y luego volver a repetirlo para cada punto de validación.
2) Perder detalles:
Definir como en el caso anterior, pero hacer referencia al data set N y reutilizarlo en los siguientes escenarios, parseándolo antes:
3) Keyword-driven:
a. Definir una tabla con todos los datos de entrada.
b. Parsear la tabla y editar los datos en la UI.
c. Exportar el XML inicial y verificarlo contra la tabla de set de datos inicial (parseando los tags).
d. Transformat el XML y verificarlo contra la tabla de set de datos inicial (parseando los tags).
¿Qué os parece?