Criterios de aceptación/historia de usuario de tipo "Ver contenido"

Soy relativamente nuevo en los criterios de aceptación en formato GWT, y me cuesta escribirlos para las funciones que implican la revisión de contenido. Por ejemplo: el usuario está en la página de inicio del sitio web de comercio electrónico y revisa los artículos que se venden en ese sitio web.

Mi historia de usuario se ve así: Como usuario, quiero ver los productos disponibles para poder encontrar el que quiero comprar. Pero, ¿qué pasa con los criterios de aceptación? Se me ocurrió la parte "Dado" (Dado que he navegado a la página de inicio del sistema) y la parte "Entonces" (Entonces puedo ver los productos disponibles); sin embargo, "Cuándo" es un misterio para a mí. ¿Cuál es ese disparador que mueve al usuario de "Dado" a "Entonces"? ¿Quizás estoy totalmente equivocado con las partes "Dado"/"Entonces"?

Intenté buscar eso en Google, pero parece que mis solicitudes son torpes o no es un gran problema para todos los demás.

Gracias de antemano y disculpa si se ha publicado antes :)

Respuestas (3)

Se topó con el principal problema del formato GWT: es demasiado detallado. Especialmente para requisitos simples. Si realmente quieres seguir con este formato, aquí tienes una posibilidad:

Given products are registered by administrator
When user navigates to home page
Then he sees recently added products

Si se le permite ser creativo, también puede tomar atajos y deshacerse del paso dado:

When user navigates to home page
Then he sees recently registered products

Givenes lo que los evaluadores llamarían una condición previa, no es obligatorio.

Deberíamos comenzar con esto: los criterios de aceptación no necesitan estar en el formato GWT.

GWT, como parte del desarrollo impulsado por el comportamiento, estaba destinado específicamente a describir el comportamiento esperado. Algunos ejemplos claros de dónde GWT encaja perfectamente podrían ser:

Given I am logged in as an authorized user 
And I have a list of products 
When I delete a product 
Then the product is no longer in the list
Given I am not logged in as a permission-limited user 
And I have a list of products 
When I delete a product 
Then the product is still in the list 
And the operation fails with an error "X"

Sin embargo, si solo estamos hablando de algo como la presentación de datos, una lista con viñetas de los campos esperados o una imagen de un boceto de pizarra probablemente sea mucho mejor.

El formato GWT no se creó para los criterios de aceptación ; en realidad, eso no es cierto. Este formato se creó como una herramienta para la colaboración de BA, QA y desarrolladores. Consulte dannorth.net/introducing-bdd : "¡ Estábamos tratando de definir un lenguaje ubicuo para el proceso de análisis en sí mismo ! " podríamos romper la historia en sus fragmentos constituyentes y automatizarlos
Gracias por la verificación de hechos. Estoy corregido. Ajustaré mi respuesta en consecuencia.
Vale la pena señalar que hace algunas declaraciones en el artículo sobre los criterios de aceptación que no son universalmente aceptados. En particular, afirma que los criterios de aceptación deben ser ejecutables. Como no tiene derecho al término, esa declaración no tiene más (ni menos) validez que otros expertos en el tema que permitirían criterios de aceptación no ejecutables.
También se refiere al lenguaje ubicuo de DDD como inspiración para BDD, pero BDD proporciona una plantilla ubicua (no lenguaje). Y toda la idea de BDD tampoco es universalmente aceptada... BAs que escriben toneladas de líneas adicionales solo para automatizar fácilmente las pruebas, que muy probablemente serán automatizadas en el nivel más alto posible (lo que a su vez es malo para la capacidad de mantenimiento y el rendimiento) por personas que no son realmente capaces de escribir código (eso no era parte de la ideología, pero resultó de esta manera). Me gusta la idea de nombrar las pruebas de manera significativa, pero esa idea no debería haber ido más allá.

La idea con Given-When-Then es que divida sus criterios de aceptación en pequeñas partes que luego se pueden ejecutar. Eso significa una acción (cuando) y un resultado esperado (entonces). Estas acciones y controles se realizan en un contexto (dado). En su caso, en realidad le falta el contexto porque está cargando la página de inicio.

Su prueba de aceptación debe ser algo como:

CUANDO cargue la página de inicio
ENTONCES debería ver los artículos que se venden

Consulte las explicaciones sobre esta pregunta similar: Dado cuándo, luego, prueba: ¿NECESITO un "cuándo"?