Introducción al Test-Driven Development (TDD) por Eric Mignot
Charla dictada en la Universidad de Los Andes, Mérida-Venezuela, Mayo 2012.
Ciclo en cascada de desarrollo de software. Testing. Valor entregado a los clientes y usuarios.
Agilidad, Scrum.
Colaboración, trabajo en equipo, especificaciones de software, tests, calidad del software.
Ciclo TDD: 1) Test, 2) Code y 3) Refactor.
Práctica, ejemplos.
3. Cuando lo pienso hoy...
...escribíamos la aplicación varias veces :-(
4. Cuando lo pienso hoy...
...escribíamos la aplicación varias veces :-(
5. Cuando lo pienso hoy...
...escribíamos la aplicación varias veces :-(
6. Cuando lo pienso hoy...
...escribíamos la aplicación varias veces :-(
7. Receta a seguir...
...para tener Éxito (ascender en la compañía):
● Seguir los procesos
● Dominar las herramientas
● Escribir documentos precisos
● Negociar el contrato duramente con el cliente
● Seguir el plan
8. No Funcionaba mal...
● Solíamos trabajar durante las noches pero solamente al
final del proyecto
● Conseguíamos culpar al cliente de todo
● Teníamos éxito financiero gracias al trabajo añadido
después del fin del proyecto
9. Ah Claro...
● estábamos cansados
● estresados
● cruzábamos los dedos a cada entrega
● ...
● pensábamos en serio hacer y vender empanadas (más
fácil, no?) en vez de todo esto
16. A menudo, hubo un golpe, una
chispa...
● algunos leyeron un libro
● otros se tomaron una cerveza con amigos
● para otros fue la noche que rebasó el límite
17. Por ejemplo algunos...
...leyeron este libro...
...y lo leyeron de nuevo
...y lo leyeron de nuevo
...
23. Una idea clave
Hacer colaborar las diferentes partes interesadas
24. Si simplificamos un poco...
...encontramos 3 categorias de partes interesadas
● Aquellos que especifican
● Aquellos que escriben código
● Aquellos que testean
25. Desafortunadamente, la mayoria del
tiempo
● No hablan el mismo idioma
● No trabajan juntos
● Incluso a veces ni siquiera se conocen
26. Manos a la obra !
Podemos ayudarlos
● a trabajar juntos
● a hacer ´til el trabajo de cada uno
● a sentirse juntos en esa aventura
● A tener placer ?
27. Buena noticia !
Hemos inventado todo lo que hace falta para eso :-)
28. Que tal no hablar de "tests"...
● Una especificación evoca un comportamiento
● Un test ilustra un ejemplo de utilización
● Un test puede ser un programa que ejecuta código
29. ...sino de especificaciones ejecutables
● Contienen ejemplos
● Estan ligadas al codigo
● Son un lugar de encuentro y de intercambio de ideas
30. Entónces ? Test o Spec ?
Depende del punto de vista, para qué sirven, a quién
● ¿Se ejecutan para averiguar que todo funciona bien ?
-> parecen tests
● ¿Se escriben para describir un comportamiento aún por
venir ?
-> parecen especificaciones
31. Que es Test-Driven Development ?
Elija la definición que le ayude
● Especificar comportamientos gracias a ejemplos
● Ligar especificaciones y código
● Escribir tests antes del código
● Intercambiar ideas escribiendo código
● Compartir ideas
● Hacer que los tests sean las stars de la aventura
● Ponerse de acuerdo acerca de nuestra intención
● Capitalizar nuestras conversaciones en tests
● Documentar como usar un código
● Levantarse y pensar en las pruebas por escribir hoy
● Acostarse y pensar a las pruebas que pasaron hoy
● ...
33. Una primera visión sencilla del ciclo
1 : Test
● escribir un test y ver que falla
2 : Code
● hacer pasar el test rápidamente
3 : Refactor
● no se añade funcionalidad
● se mejora la calidad interna
34. TDD & Calidad
¿Qué es un programa de calidad ?
5 minutos con su vecino
35. TDD & Calidad
¿Cuál es nuestro compromiso como profesional informático ?
5 minutos más :)
37. "El modelo emerge durante el
refactoring"
Durante un curso TDD, los participantes suelen preguntarme
● ¿Tengo que escribir tests para las clases que emergen
durante un refactoring ?
● Si lo hago, ¿no estoy quebrando el ciclo ?