jueves, 30 de agosto de 2012

Test-driven development (TDD)

Test-driven development (TDD)



el TDD significa desarrollo guiado por pruebas. se trata de el desarrollo de aplicaciones pensando primero en las pruebas y implementando el codigo para que estas se cumplan. involucra principalmente 2 practicas el software testing y el refactoring.


  1. Elegir un requisito: Se elige de una lista el requerimiento que se cree que nos dará mayor conocimiento del problema y que a la vez sea fácilmente implementable.
  2. Escribir una prueba: Se comienza escribiendo una prueba para el requisito. Para ello el programador debe entender claramente las especificaciones y los requisitos de la funcionalidad que está por implementar. 
  3. Verificar que la prueba falla: Si la prueba no falla es porque el requerimiento ya estaba implementado o porque la prueba es errónea.
  4. Escribir la implementación: Escribir el código más sencillo que haga que la prueba funcione. Se usa la metáfora "Déjelo simple" ("Keep It Simple, Stupid" (KISS)).
  5. Ejecutar las pruebas automatizadas: Verificar si todo el conjunto de pruebas funciona correctamente.
  6. Eliminación de duplicación: El paso final es la refactorización, que se utilizará principalmente para eliminar código duplicado. Se hacen de a una vez un pequeño cambio y luego se corren las pruebas hasta que funcionen.
  7. Actualización de la lista de requisitos: Se actualiza la lista de requisitos tachando el requisito implementado.
EJEMPLO
Lo primero, hacer un test para el requerimiento :


public void testSuma() {
   assertEquals(5, Matematicas.suma(2,3));

el test fallara  porque falta la libreria Matematicas  por tanto se  desarrolla de tal manera que la prueba se cumpla:

public class Matematicas {
   public static int suma (int a, int b) {
      return 5;
   }
}  

este codigo cumple con la prueba pero se debe rehacer para que el codigo funcione para cualquier caso:

public class Matematicas {
   public static int suma (int a, int b) {
      return a+b;
   }
}

luego se elige el siguiente requerimiento y repetir el ciclo.



TDD es  parte de las metodologias agiles.   permite dividir tareas por tanto se integra muy bien con kanban.