Diferencia entre revisiones de «JBehave»

De Dos Ideas.
Saltar a: navegación, buscar
(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 del Producto]] y todos los miembros del equiop a través de escenarios automatizados pero legibles.  
+
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 ==
* Escensarios escritos en texto plano
+
* 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.

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.

Ver también