Creación de Features en Cucumber

76 views
Skip to first unread message

Martin Trejo

unread,
Apr 23, 2009, 3:40:03 PM4/23/09
to mxor, ruby-s...@googlegroups.com
Hola a todos,

También me quedé encantado con Cucumber después de la presentación de
Manuel en el BarCamp Qro, compré el libro y ahi voy haciendo los
ejemplos y leyendo y releyendo.

Cucumber me pareció interesante por la capacidad de presentar
escenarios complejos de una manera comprensible para el desarrollador
y para el cliente (al menos, es lo que pretendo), sin embargo,
encuentro casos que son demasiado comunes, pero que no consigo
reflejar en un Feature.

Caso concreto: capturar la entrada de artículos en un almacen.

Se me hace un caso harto conocido, pero cómo diablos se refleja en un Feature?

Mi ejercicio inicial es el siguiente:

Característica: El ejecutivo captura entrada de artículos
promocionales al almacen
Para llevar control de la existencia de artículos promocionales en almacen
cada ejecutivo captura los artículos que se ingresan al almacen

Esquema del escenario: Captura entrada de artículos promocionales
Dado cada ejecutivo tiene asociado un almacen promocional
Y que capturó los artículos promocionales en un movimiento de entrada
Cuando guarda el movimiento de entrada
Entonces se deben actualizar las existencias del almacen


Comentarios? Quejas? Sugerencias?

Saludos,

Martín Trejo Chávez

Israel Benitez

unread,
Apr 23, 2009, 4:17:45 PM4/23/09
to ruby-s...@googlegroups.com
Igual que tu, voy dando los primeros pasos, he trabajado un poco y de
acuerdo con mi poca experiencia, pondría algo mas o menos asi:

Escenario: Captura entrada de artículos promocionales
Dado soy el ejecutivo Juan
Y tengo 10 articulos en existencia en mi almacen
Cuando hago doy entrada a 4 articulos
Entonces veo 14 articulos en la existencia del almacen


Según me han funcionado las features de cucumber, hacer uso de nombres
y cantidades específicas sirve para pasar parámetros para los 'steps'
del escenario y cambiar el comportamiento, asi como también poner más
casos en las tablas de ejemplos que se ponen en el escenario (esa
parte no la he usado aún).

Usando las descripciones que puse arriba, podrías en otro momento
redactar otro escenario usando cosas como:

Dado que soy el ejecutivo Alberto
Cuando doy salida e 3 articulos
Entonces veo 19 artículos en la existencia del almacen

Y solo tendrías que escribir el 'paso' de la salida, el resto lo
puedes tomar del otro escenario.

Otra ventaja es que así ya también van apareciendo los modelos y las
Fixtures para ejecutar el ejemplo.

Espero no andar tan perdido.

Saludos.

El día 23 de abril de 2009 14:40, Martin Trejo
<chilli...@gmail.com> escribió:

Edgar Suarez

unread,
Apr 23, 2009, 4:31:25 PM4/23/09
to ruby-s...@googlegroups.com
Pero según entiendo, los features deberían ser válidos para cualquier
caso. Y si pones números en específico los tests sólo te estan pasando
para esos valores solamente.

Claro que pueden parecer genéricos, pero creo que es mejor tratar de
abarcar lo más que se pueda en cuanto definición de pasos.

Por ejemplo, cuando dices:

Dado que soy un usuario registrado
Cuando doy clic en registrar
Entonces deberia redireccionarme a la pagina de inicio

En este ejemplo estás "hablando" en primera persona, pero esa primera
persona es variable dependiendo de quién lea el feature. No le estás
asignado un nombre, sino que generalizas.

Sin embargo, puede haber casos en los que sí necesites especificar
algo, como en validaciones de emails por ejemplo.

Yo también soy nuevo en esto, y mi comentario es de acuerdo a lo poco
que he leído. Puede que esté mal o que haya entendido mal un concepto,
así que tómenlo sólo como punto de vista ;)

--
Edgar J. Suárez - [ e.js ]

Martin Trejo

unread,
Apr 23, 2009, 4:52:20 PM4/23/09
to ruby-s...@googlegroups.com, mxor
Gracias, me parecen bastante interesantes tus escenarios.

2009/4/23 Israel Benitez <israel....@gmail.com>:
>
> Igual que tu, voy dando los primeros pasos, he trabajado un poco y de
> acuerdo con mi poca experiencia, pondría algo mas o menos asi:
>
> Escenario: Captura entrada de artículos promocionales
>   Dado soy el ejecutivo Juan
>   Y tengo 10 articulos en existencia en mi almacen
>   Cuando hago doy entrada a 4 articulos
>   Entonces veo 14 articulos en la existencia del almacen
>
>
> Según me han funcionado las features de cucumber, hacer uso de nombres
> y cantidades específicas sirve para pasar parámetros para los 'steps'
> del escenario y cambiar el comportamiento, asi como también poner más
> casos en las tablas de ejemplos que se ponen en el escenario (esa
> parte no la he usado aún).
>

Yo solo he ocupado las del ejemplo de mastermind del libro ;)

> Usando las descripciones que puse arriba, podrías en otro momento
> redactar otro escenario usando cosas como:
>
>   Dado que soy el ejecutivo Alberto
>   Cuando doy salida e 3 articulos
>   Entonces veo 19 artículos en la existencia del almacen
>
> Y solo tendrías que escribir el 'paso' de la salida, el resto lo
> puedes tomar del otro escenario.
>
> Otra ventaja es que así ya también van apareciendo los modelos y las
> Fixtures para ejecutar el ejemplo.
>
> Espero no andar tan perdido.
>
Ps estás más "encontrado" que yo... jajajaja.

Martin Trejo

unread,
Apr 23, 2009, 4:55:24 PM4/23/09
to ruby-s...@googlegroups.com, mxor
2009/4/23 Edgar Suarez <edga...@gmail.com>:
>
> Pero según entiendo, los features deberían ser válidos para cualquier
> caso. Y si pones números en específico los tests sólo te estan pasando
> para esos valores solamente.
>

Se pueden sustituir más adelante con Scenarios Outlines y las tablas tipo FIT

> Claro que pueden parecer genéricos, pero creo que es mejor tratar de
> abarcar lo más que se pueda en cuanto definición de pasos.
>
> Por ejemplo, cuando dices:
>
> Dado que soy un usuario registrado
> Cuando doy clic en registrar
> Entonces deberia redireccionarme a la pagina de inicio
>
> En este ejemplo estás "hablando" en primera persona, pero esa primera
> persona es variable dependiendo de quién lea el feature. No le estás
> asignado un nombre, sino que generalizas.
>
> Sin embargo, puede haber casos en los que sí necesites especificar
> algo, como en validaciones de emails por ejemplo.
>
> Yo también soy nuevo en esto, y mi comentario es de acuerdo a lo poco
> que he leído. Puede que esté mal o que haya entendido mal un concepto,
> así que tómenlo sólo como punto de vista ;)
>
> --

Muy bien recibido, por cierto, gracias!
Reply all
Reply to author
Forward
0 new messages