Cucumber, Qué es?

Casi todas las personas que trabajamos desarrollando software, definitivamente nos gusta mucho mas codificar que escribir código de prueba. Muchas veces la causa es por la “urgencia del proyecto” donde lo mas importante es codificar y cumplir el plazo y si el tiempo lo permite hagamos pruebas, o simplemente, por pereza y malas practicas.

Si leemos la definición de cucumber (Fuente), dice lo siguiente:

Cucumber es una herramienta de software que los programadores informáticos utilizan para probar otro software. Ejecuta pruebas de aceptación automatizados escritas en un estilo “Behavior-Driven development (BDD). Pero ahora, que carajos es BBD?
Si vamos a la definicion de nuestro buen amigo Wikipedia: “En la ingenieria de software, Behavior-Driven Development (BDD), es un proceso de desarrollo de software, que surgió a partir del Test-Driven Development (TDD)”. Esto parece no tener fin.. y ahora que es TDD?

Aunque TDD, no es la esencia de este Post, es importante entenderlo y si vemos su definición dice lo siguiente: “Test Driven Developmnet es un proceso de desarrollo de software que se basa en la repetición de un ciclo de desarrollo muy corto. Primero el desarrollador escribe un caso de prueba automatizado que define una mejora o una función nueva, entonces produce la cantidad mínima de código para pasar dicha prueba, y finalmente refactoriza el nuevo codigo para los standares de aceptación.”

Volviendo al BDD, este se basa en el uso de un vocabulario muy específico (y pequeño) que busca unir la parte técnica y la de negocio, y que sea a partir de este lenguaje donde arranque el Testing y, desde ahí, el desarrollo.

BDD es una extensión del TDD que aprovecha un sencillo “domain-specific scripting language”. Estas DSLs convierten sentencias de lenguaje natural estructurado en pruebas ejecutables. El resultado es una relación más estrecha con los criterios de aceptación para una función dada y las pruebas utilizadas para validar esa funcionalidad. Como tal, es una extensión natural de las pruebas de TDD

De esta manera se puede decir que Cucumber es una herramienta para implementar metodologías como (BDD), que permite ejecutar descripciones funcionales en texto plano como pruebas de software automatizadas.Estas descripciones funcionales, se escriben en un lenguaje específico de dominio, legible por el área de negocio, denominado “Gherkin”, el cual sirve simultáneamente como documentación de apoyo al desarrollo y de las pruebas automatizadas.

Es importante saber que Cucumber está escrito en Ruby, pero puede ser utilizado para probar código escrito tanto en Ruby como en otros lenguajes, incluyendo Java, C#, Python, .NET, Flex y muchas otras.

Para ir terminando este articulo conozcamos que es Gherkin: Gherkin es el lenguaje que entiende Cucumber, es un DSL legible para gente no técnica, que permite definir el comportamiento del software sin detallar como está implementado, además de que nos permite documentar las funcionalidades a la vez que escribimos casos de prueba automáticos. Gherkin es un lenguaje que usa el indentado para definir la estructura, de manera que los saltos de linea dividen las diferentes declaraciones, la mayoría de las lineas empiezan con palabras clave. El parser divide el texto en Features ( Características ), Scenarios y Steps, cuando pasas los casos de prueba, el parser busca un Step con ese nombre. Los Steps son los análogos de los Métodos en .Net o las Funciones en Javascript.

Un archivo Gherkin usualmente luce asi:

Feature: Some terse yet descriptive text of what is desired
  Textual description of the business value of this feature
  Business rules that govern the scope of the feature
  Any additional information that will make the feature easier to understand

  Scenario: Some determinable business situation
    Given some precondition
      And some other precondition
     When some action by the actor
      And some other action
      And yet another action
     Then some testable outcome is achieved
      And something else we can check happens too

  Scenario: A different situation
      ...

En el próximo articulo, hablaré sobre SpecFlow, que es la herramienta con la que podemos aplicar Cucumber en nuestros proyectos en .NET, y podremos ver de manera practica como ir de un archivo Gherkin, a la generación de nuestras clases de Test.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s