• No se han encontrado resultados

Behavior Driven Development

N/A
N/A
Protected

Academic year: 2021

Share "Behavior Driven Development"

Copied!
12
0
0

Texto completo

(1)

Behavior Driven

Development

(2)

Repaso de TDD

Práctica de desarrollo de software propuesta por Kent Beck

Parte de XP y de metodologías ágiles, pero puede ser usada también con cualquier otra metodología

(3)

Las 3 reglas de Tío Bob

Las 3 reglas de Tío Bob Martin (@unclebobmartin) sobre TDD:

!

1. No está permitido que escribas código para producción a menos que sea para hacer pasar un test unitario que falla.

2. No está permitido que escribas más de un test unitario que falle; y los fallos de compilación son fallos.

3. No está permitido que escribas más código para producción que el que sea suficiente para pasar un test unitario que falla.

“If you think about this you will realize that you simply cannot write very much code at all without compiling and executing something. Indeed, this is really the point. In everything we do, whether writing tests, writing production code, or refactoring, we

keep the system executing at all times. The time between running tests is on the order of seconds, or minutes. Even 10 minutes is too long.”

(4)

The Bowling Game Kata

Uncle Bob propone un ejemplo de aprendizaje que se ha hecho muy popular entre los practicantes de TDD: aprendizaje basado en Katas. Propone la Kata del Juego de Bolos.

Prueba la Kata, repítela, memorízala. La preguntaremos en el examen. Al final interiorizas decisiones y empiezas a conseguir “sentido de

diseño”.

Memoriza las secciones, repítelas

El Primer Test

El Segundo Test

El Tercer Test

El Cuarto Test

(5)

Prerrequisitos para BDD

Para hacer bien BDD se supone que:

Sabemos hacer tests unitarios (The Art of Unit Testing - proquest)

Sabemos la técnica de TDD y todas las técnicas asociadas (mocks, inyección de dependencias, etc.) (TDD by example - proquest)

Pero la técnica no es suficiente, hay que saber cómo usarla:

Qué nombre poner a los tests para que sean legibles y mantenibles

Cómo definir los tests para ampliar las características del proyecto y conseguir más valor

(6)

Nombrado correcto de los tests

Estilo tradicional (mal):

! ! !

Usando “When” y “Should”:

public class BankAccountTest {!

@Test!

public void testTransfer() {...}!

!

@Test!

public void testDeposit() {...}!

}

public class WhenTransferringInternationalFunds {!

@Test!

public void shouldTransferFundsToDestinationAccount() {...}!

!

@Test!

public void shouldDeductFeesAsSeparateTransation() {...}!

!

(7)

Escenarios

Estructura para definir criterios de aceptación y pruebas

“Given” (condiciones previas)

“When” (situación)

“Then should” (resultado)

Given a customer has a current account!

When the customer transfers funds from this account to an overseas account !

Then the funds should be deposited in the overseas account!

(8)

Especificaciones ejecutables

Al ser de muy alto nivel, las pruebas se convierten en especificaciones ejecutables

Se definen a partir de los ejemplos y de los criterios de aceptación, en el lenguaje del modelo del dominio de negocio (siguiendo las

propuestas de Domain Driven Design charla de Eric Evans)

Sirven

Para guiar el desarrollo de TDD y de la programación del sistema

Documentación viva

Ejemplos de uso

La ejecución de las pruebas y de las especificaciones ejecutables se realiza de forma automática en la tubería de despliegue

(9)
(10)

Lenguajes

Las especificaciones son DSLs (Domain Specific Languages) que se traducen a frameworks de testing de más bajo nivel

El framework más conocido es Cucumber, con implementación en más de

40 idiomas y traducción a Ruby, Java, .Net, y muchos otros lenguajes

El lenguaje en el que se definen las especificaciones en Cucumber se llama

Gherkin

Feature: Search courses!

Courses should be searchable by topic!

Search results should provide the course code! !

Scenario: Search by topic!

Given there are 240 courses which do not have the topic "biology"!

And there are 2 courses A001, B205 that each have "biology" as one of the topics!

When I search for "biology"!

Then I should see the following courses:!

| Course code |!

(11)

Building the right software right

Debemos conseguir:

Software que funciona

(building the software right)

Software que aporta valor

(building the right software)

BDD integra las técnicas de TDD,

automatización, continuous

delivery (building the software

right) junto con las de

retroalimentación frecuente,

desarrollo incremental (building

(12)

Lecturas

Referencias

Documento similar

Every week you will work with an English tutor on a lesson that is made just for you.. • You must attend one English class for one

Los últimos estadios de la blefarocalasia deben ser diferenciados de otras causas de laxitud palpebral, nótese que la mayoria de causas de hiperlaxitud palpebral se presentan

 Genesis 1:26-28 Entonces dijo Dios: Hagamos al hombre a nuestra imagen, conforme a nuestra semejanza; y señoree en los peces del mar, en las aves de los cielos, en

A continuación, el médico evaluará su capacidad para ver letras o símbolos a distancia y examinará el interior de los ojos para detectar derrames de los vasos sanguíneos..

¿Cómo el sector veterinario en la ciudad de Tijuana Baja California pude desarrollar su competitividad en base al crecimiento de tenencia de mascotas no convencionales?.

En el caso de posibles impagos derivados del Contrato de la Tarjeta o de cualquier modalidad especial de financiación, tanto en El Corte Inglés ( y Red Grupo El Corte Inglés) como

Esta corriente dentro de la arquitectura, registra al Diseño como herramienta fundamental para mejorar la sustentabilidad en el hábitat.. Es más abarcativa que la corriente

o esperar la resolución expresa" (artículo 94 de la Ley de procedimiento administrativo). Luego si opta por esperar la resolución expresa, todo queda supeditado a que se