Introducción a TDD

20
Introducción a TDD Test Driven Development @JuanmaGomeR

Transcript of Introducción a TDD

Introducción a TDDTest Driven Development

@JuanmaGomeR

¿Qué es TDD?

Es una técnica que consiste, básicamente, en apoyarnos en un test

automatizado existente para desarrollar nuestra lógica de negocio

@JuanmaGomeR

¿Un test existente?

Sí. Pero no reutilizado, sino uno nuevo que escribamos nosotros

@JuanmaGomeR

El ciclo de TDD

RED

GREENREFACTOR

@JuanmaGomeR

RED

Escribimos un test automático que, cuando lo ejecutemos, falle (sale en

rojo)

RED

@JuanmaGomeR

GREEN

Escribimos el MÍNIMO código que haga pasar el test automático que hemos

escrito (sale en verde)

GREEN

@JuanmaGomeR

REFACTOR

Modificamos la apariencia de nuestro código, pero nunca su

comportamiento. Aplicamos patrones de diseño, DRY, SOLID...

REFACTOR

@JuanmaGomeR

¿Cómo TDDear?

Cada test representa un estado de mi sistema

@JuanmaGomeR

¿Cómo TDDear?

El SUT entra en el sistema y modifica su estado

@JuanmaGomeR

¿Cómo TDDear?

Por tanto, definimos estado inicial, estado que esperamos, y obtenemos el

estado final

@JuanmaGomeR

¿Cómo TDDear?

Comparamos estado esperado con estado final (creado por el SUT)

@JuanmaGomeR

Baby Steps

El primer test será el que ejemplifique el caso más sencillo. Cuando lo

pasemos, habremos dado soporte a una primera casuística

@JuanmaGomeR

Baby Steps

En el siguiente test, daremos un pasito adelante, planteando una casuística un pelín más compleja, el siguiente paso

natural

@JuanmaGomeR

Baby Steps

Y así seguiremos avanzando, de forma que consigamos abarcar la mayor cantidad de casuísticas posibles

@JuanmaGomeR

Triangulación

Llegará un momento en que triangulemos para encontrar un patrón

de comportamiento

@JuanmaGomeR

Triangulación

Este patrón nos llevará al diseño definitivo del algotirmo que buscamos

@JuanmaGomeR

Tras cada refactor

Es esencial pasar de nuevo los tests tras cada refactor para ver que nada

ha dejado de funcionar

@JuanmaGomeR

Si otro día modifico lógica de negocio

Compruebo primero los tests

@JuanmaGomeR

Si otro día modifico lógica de negocio

Modificar los tests afectados por los nuevos requerimientos (si fuera

necesario)

@JuanmaGomeR

Si otro día modifico lógica de negocio

Una vez definidos los nuevos tests, escribir la nueva lógica de negocio

@JuanmaGomeR