Diferencia entre revisiones de «JBehave»
 (Página nueva: JBehave es un framework Java para mejorar la colaboración entre desarrolladores, QA, analistas de negocio, Dueño del Producto y todos los miembros del equiop a través de es...)  | 
				|||
| (No se muestran 8 ediciones intermedias de 4 usuarios) | |||
| Línea 1: | Línea 1: | ||
| − | JBehave es un framework [[Java]] para mejorar la colaboración entre desarrolladores, QA, analistas de negocio, [[Dueño   | + | JBehave es un framework [[Java]] para mejorar la colaboración entre desarrolladores, QA, analistas de negocio, [[Dueño Del Producto]] y todos los miembros del equipo a través de escenarios automatizados y legibles.    | 
== Características ==  | == Características ==  | ||
| − | *   | + | * Escenarios escritos en texto plano  | 
* Posibilidad de crear múltiples escenarios en un único archivo  | * Posibilidad de crear múltiples escenarios en un único archivo  | ||
* Escenarios pendientes  | * Escenarios pendientes  | ||
| Línea 11: | Línea 11: | ||
* Altamente configurable  | * Altamente configurable  | ||
* Soporte para [[Maven]]  | * Soporte para [[Maven]]  | ||
| + | |||
| + | ==Los escenarios==  | ||
| + | La forma de escribir escenarios de JBehave es similar a una [[Historia De Usuario]]. En general, una [[Historia De Usuario]] suele escribirse como:   | ||
| + |  Como [Rol]  | ||
| + |  Quiero [Caracteristica]  | ||
| + |  De manera que reciba [Valor]  | ||
| + | |||
| + | Los escenarios en JBehave se escriben de la siguiente forma:   | ||
| + |  Given [Contexto]  | ||
| + |  When [Evento que ocurre]  | ||
| + |  Then [Salida esperada]  | ||
| + | |||
| + | ==Ejemplo==  | ||
| + | Vamos a probar un escenario de login. Las clases que intervienen en esto serán:   | ||
| + | * '''LoginService''': la clase de negocio bajo prueba  | ||
| + | * '''login_exitoso''': un archivo de texto que contiene el escenario  | ||
| + | * '''LoginExitoso''': una clase Java que representará al escenario  | ||
| + | * '''LoginSteps''': una clase Java que contendrá la lógica de la prueba  | ||
| + | |||
| + | === LoginService.java ===  | ||
| + | Esta será la clase de negocio que probaremos. Tiene un único método ''login'' el cual recibe un usuario y una clave. Si la clave es igual al usuario en mayúsculas devuelve true, sino false.   | ||
| + | |||
| + | <code java>  | ||
| + | package com.dosideas.business;  | ||
| + | |||
| + | public class LoginService {  | ||
| + | |||
| + |     public boolean login(String user, String pass) {  | ||
| + |         if (user.toUpperCase().equals(pass)) {  | ||
| + |             return true;  | ||
| + |         } else {  | ||
| + |             return false;  | ||
| + |         }  | ||
| + |     }  | ||
| + | }  | ||
| + | </code>  | ||
| + | |||
| + | === login_exitoso ===  | ||
| + | Este es el archivo de texto con el escenario. Aquí podremos ir agregando los diferentes escenarios que querramos validar.  | ||
| + |  Given No estoy logueado  | ||
| + |  When me logueo como usuario Zim y clave ZIM  | ||
| + |  Then el login tiene que devolver true  | ||
| + | |||
| + | === LoginExitoso.java ===  | ||
| + | Esta clase extiende a ''org.jbehave.scenario.Scenario'' y se encarga de representar al escenario a utilizar. Lo único que hace es cargar la implementación a usar para realizar las pruebas, en este caso ''LoginSteps''.   | ||
| + | |||
| + | Esta clase tiene que estar junto al archivo de texto ''login_exitoso''.  | ||
| + | |||
| + | Esta clase es un test de [[JUnit]], y será la que ejecutaremos para realizar las pruebas.  | ||
| + | |||
| + | <code java>  | ||
| + | package com.dosideas.jbehave;  | ||
| + | |||
| + | import org.jbehave.scenario.Scenario;  | ||
| + | |||
| + | public class LoginExitoso extends Scenario {  | ||
| + | |||
| + |     public LoginExitoso() {  | ||
| + |         super(new LoginSteps());  | ||
| + |     }  | ||
| + | }  | ||
| + | </code>  | ||
| + | |||
| + | === LoginSteps.java ===  | ||
| + | Esta clase contiene la lógica de las pruebas, y es quien realmente asocia los mensajes de los escenarios a código para ejecutar. En esta clase, a través de las anotaciones, se convierte parte del texto en parámetros.  | ||
| + | |||
| + | <code java>  | ||
| + | package com.dosideas.jbehave;  | ||
| + | |||
| + | import static org.jbehave.Ensure.ensureThat;  | ||
| + | import com.dosideas.business.LoginService;  | ||
| + | import org.jbehave.scenario.annotations.Given;  | ||
| + | import org.jbehave.scenario.annotations.Then;  | ||
| + | import org.jbehave.scenario.annotations.When;  | ||
| + | import org.jbehave.scenario.steps.Steps;  | ||
| + | |||
| + | public class LoginSteps extends Steps {  | ||
| + | |||
| + |     private boolean login;  | ||
| + | |||
| + |     @Given("No estoy logueado")  | ||
| + |     public void logout() {  | ||
| + |         login = false;  | ||
| + |     }  | ||
| + | |||
| + |     @When("me logueo como usuario $usuario y clave $pass")  | ||
| + |     public void login(String usuario, String pass) {  | ||
| + |         LoginService loginService = new LoginService();  | ||
| + |         login = loginService.login(usuario, pass);  | ||
| + |     }  | ||
| + | |||
| + |     @Then("el login tiene que devolver $loginEsperado")  | ||
| + |     public void comprobarLogin(String loginEsperado) {  | ||
| + |         ensureThat(login == Boolean.valueOf(loginEsperado));  | ||
| + |     }  | ||
| + | }  | ||
| + | </code>  | ||
| + | |||
| + | === Ejecutamos... ===  | ||
| + | La ejecución es como un test [[JUnit]] más, ya que la clase ''LoginExitoso'' es un test JUnit.   | ||
== Ver también ==  | == Ver también ==  | ||
| + | * [[Herramientas Para Pruebas De Aceptacion]]  | ||
* [http://jbehave.org Web oficial de JBehave]  | * [http://jbehave.org Web oficial de JBehave]  | ||
| + | |||
| + | [[Category:Java]]  | ||
| + | [[Category:BDD]]  | ||
Revisión actual del 14:29 31 ago 2009
JBehave es un framework Java para mejorar la colaboración entre desarrolladores, QA, analistas de negocio, Dueño Del Producto y todos los miembros del equipo a través de escenarios automatizados y legibles.
Contenido
Características
- Escenarios escritos en texto plano
 - Posibilidad de crear múltiples escenarios en un único archivo
 - Escenarios pendientes
 - Resultados claros y fáciles de leer
 - Captura de parámetros de los escenarios
 - Conversión de parámetros a objetos propios
 - Soporte para múltiples lenguajes y términos de escenarios
 - Altamente configurable
 - Soporte para Maven
 
Los escenarios
La forma de escribir escenarios de JBehave es similar a una Historia De Usuario. En general, una Historia De Usuario suele escribirse como:
Como [Rol] Quiero [Caracteristica] De manera que reciba [Valor]
Los escenarios en JBehave se escriben de la siguiente forma:
Given [Contexto] When [Evento que ocurre] Then [Salida esperada]
Ejemplo
Vamos a probar un escenario de login. Las clases que intervienen en esto serán:
- LoginService: la clase de negocio bajo prueba
 - login_exitoso: un archivo de texto que contiene el escenario
 - LoginExitoso: una clase Java que representará al escenario
 - LoginSteps: una clase Java que contendrá la lógica de la prueba
 
LoginService.java
Esta será la clase de negocio que probaremos. Tiene un único método login el cual recibe un usuario y una clave. Si la clave es igual al usuario en mayúsculas devuelve true, sino false.
package com.dosideas.business;
public class LoginService {
   public boolean login(String user, String pass) {
       if (user.toUpperCase().equals(pass)) {
           return true;
       } else {
           return false;
       }
   }
}
login_exitoso
Este es el archivo de texto con el escenario. Aquí podremos ir agregando los diferentes escenarios que querramos validar.
Given No estoy logueado When me logueo como usuario Zim y clave ZIM Then el login tiene que devolver true
LoginExitoso.java
Esta clase extiende a org.jbehave.scenario.Scenario y se encarga de representar al escenario a utilizar. Lo único que hace es cargar la implementación a usar para realizar las pruebas, en este caso LoginSteps.
Esta clase tiene que estar junto al archivo de texto login_exitoso.
Esta clase es un test de JUnit, y será la que ejecutaremos para realizar las pruebas.
package com.dosideas.jbehave;
import org.jbehave.scenario.Scenario;
public class LoginExitoso extends Scenario {
   public LoginExitoso() {
       super(new LoginSteps());
   }
}
LoginSteps.java
Esta clase contiene la lógica de las pruebas, y es quien realmente asocia los mensajes de los escenarios a código para ejecutar. En esta clase, a través de las anotaciones, se convierte parte del texto en parámetros.
package com.dosideas.jbehave;
import static org.jbehave.Ensure.ensureThat; import com.dosideas.business.LoginService; import org.jbehave.scenario.annotations.Given; import org.jbehave.scenario.annotations.Then; import org.jbehave.scenario.annotations.When; import org.jbehave.scenario.steps.Steps;
public class LoginSteps extends Steps {
private boolean login;
   @Given("No estoy logueado")
   public void logout() {
       login = false;
   }
   @When("me logueo como usuario $usuario y clave $pass")
   public void login(String usuario, String pass) {
       LoginService loginService = new LoginService();
       login = loginService.login(usuario, pass);
   }
   @Then("el login tiene que devolver $loginEsperado")
   public void comprobarLogin(String loginEsperado) {
       ensureThat(login == Boolean.valueOf(loginEsperado));
   }
}
Ejecutamos...
La ejecución es como un test JUnit más, ya que la clase LoginExitoso es un test JUnit.