Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TDD: En primer lugar, se escribe una prueba y se verifica que las pruebas fallan.
A continuación, se implementa el código que hace que la prueba pase
satisfactoriamente y seguidamente se refactoriza el código escrito
En BDD también vamos a escribir las pruebas antes de escribir el código fuente,
pero en lugar de pruebas unitarias, lo que haremos será escribir pruebas que
verifiquen que el comportamiento del código es correcto desde el punto de
vista de negocio. Tras escribir las pruebas escribimos el código fuente de la
funcionalidad que haga que estas pruebas pasen correctamente. Después
refactorizamos el código fuente.
Este lenguaje con el que vamos a describir las funcionalidades es lo que en DDD
(Domain Driven Design o Diseño Guiado por el Dominio) llaman lenguaje ubicuo,
es decir, un lenguaje semiformal que es compartido por todos los miembros de
un equipo de desarrollo de software, tanto desarrolladores de software como
personal no técnico. Este es uno de los aspectos claves: BDD facilita la
comunicación entre todos los implicados en el desarrollo, sean técnicos o no.
Otra opción es que sean los propios desarrolladores quienes escriban esta
definición de las funcionalidades, a partir de la descripción a alto nivel de la
funcionalidad que le ha dado la gente de negocio. Esto hace que los
desarrolladores tengan que ver esa funcionalidad desde el punto de vista de
negocio, y eso es positivo.
Gherkin
Gherkin, es un lenguaje comprensible por humanos y por computadoras, con el
que vamos a describir las funcionalidades, definiendo el comportamiento del
software, sin entrar en su implementación. Se trata de un lenguaje fácil de leer,
fácil de entender y fácil de escribir. Es un lenguaje de los que Martin Fowler llama
'Business Readable DSL', es decir, 'Lenguaje Específico de Dominio legible por
Negocio'.
Utilizar Gherkin nos va a permitir crear una documentación viva a la vez que
automatizamos los tests, haciéndolo además con un lenguaje que puede
entender negocio. Otro aspecto interesante es que se puede usar Gherkin en
otros idiomas, no sólo en inglés. Actualmente Gherkin soporta más de 60
idiomas.
Lo bueno de Gherkin es que para empezar a hacer BDD sólo nos hace falta
conocer 5 palabras, con las que construiremos sentencias con las que vamos a
describir las funcionalidades:
Cucumber fue creada en 2008 por Aslak Hellesoy y está escrito en Ruby, aunque
tiene implementaciones para casi cualquier lenguaje de programación: JRuby
(usando Cucumber-JVM), Java, Groovy, JavaScript, JavaScript (usando
Cucumber-JVM y Rhino), Clojure, Gosu, Lua, .NET (usando SpecFlow), PHP
(usando Behat), Jython, C++ o Tcl.
Ejemplo de uso
Una de las formas más sencilla de instalar Cucumber para nuestras primeras
pruebas es hacerlo con node. Para ello simplemente debemos ejecutar desde
una ventana de línea de comandos:
Vamos a partir de una historia de usuario, con el esquema clásico: “Como [As a
human] quiero [ search GenbetDev en Google] para que [find GenvetaDev
website]”, para crear el caso de prueba que vamos a automatizar con Cucumber:
As a human
cucumber-js features/my_feature.feature
En linux sería:
cucumber.js features/my_feature.feature
El resultado será el siguiente:
Esto lo que nos indica es que debemos ahora implementar el código de pruebas
que permita verificar ese test. Una posibilidad sería la siguiente:
module.exports = function() {
browser.url('http://google.com');
});
browser.setValue('input[name="q"]', searchTerm);
browser.keys(['Enter']);
});
this.Then(/^I see "([^"]*)"$/, function (link) {
});