¿Es apropiado que los escenarios de BDD tengan una especificidad de estilo "haga clic aquí"?
He leído muchos ejemplos en los que se establecen escenarios para evitar cualquier interacción de interfaz de usuario en particular, pero herramientas como SpecFlow aparentemente requerirían este nivel de detalle.
¿Es apropiado exigirle al BA que escriba una historia que contenga escenarios de alto nivel y luego los reduzca a un nivel más técnico (y de elementos específicos) durante la fase de los 3 amigos?
Por ejemplo, es esto apropiado:
Given the user is on /search
And the "Jeff" is entered into the field "searchinput"
When the "Search" button is clicked
Then the page displayed is /results/Jeff
And the fields displayed include "Name"
And the second field displayed is "Post Code"
El ejemplo de la historia y el ejemplo de herramientas en esta página parecen ser incompatibles si intentamos pasar de uno a otro (ignorando el hecho de que se encuentran en procesos comerciales muy diferentes): https://en.wikipedia.org/wiki/ Desarrollo impulsado por el comportamiento
Su nivel de comportamiento es correcto. La mayoría de los profesionales (incluido yo mismo) recomendarían que lo redactes de una manera que sea menos específica para la implementación. Por ejemplo:
Given the user is on the search page
When the user searches for "Jeff"
Then the results page is displayed
And the "Name" field is displayed with the value "Jeff"
And the "Post Code" field is displayed with the value "80273"
Esto es independiente de la implementación, lo que significa que no necesita conocer la implementación con anticipación y puede abordar múltiples implementaciones (web y móvil, por ejemplo) más fácilmente.
También ajusté la redacción para que sea más fácil de automatizar. Si un PO o alguna otra persona no técnica está escribiendo la prueba, no esperaría que supieran cómo hacer algunos de estos cambios. Espero que los desarrolladores los reconozcan y ayuden allí. Específicamente, las últimas dos líneas ahora tienen el mismo patrón y son más fáciles de automatizar, y todo el escenario podría ejecutarse con muchos valores diferentes conectados para cada uno de esos elementos entre comillas de manera muy limpia.
Finalmente, preguntaste en un comentario cómo cierras la brecha. Mi recomendación es escribir el caso de prueba antes de conocer la implementación. Eso te obliga a usar más este lenguaje independiente de la implementación.
andrascsanyi
Matt W.
andrascsanyi