Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

sábado, 29 de marzo de 2008

La implantación de TDD en nuestra empresa

red_2dgreen_2drefactor.png


Que el desarrollo guiado por pruebas, o Test-Driven Development (TDD) es beneficioso para la calidad de nuestro software es algo innegable. Nos permite desarrollar sin basarnos en el depurador para verifica que nuestro software sigue cumpliendo con los requisitos, y facilita la tarea de refactorización del mismo, precisamente gracias a ello, posibilitando así que el código quede más limpio y optimizado. El uso de las pruebas unitarias o de desarrollador no involucra mayor problema pero, ¿cómo incorporamos el proceso de desarrollo guiado por pruebas a nuestro equipo o empresa?


Si nuestra empresa nunca ha realizado un desarrollo basado en pruebas, lo primero que deberemos hacer es formar a los miembros de nuestro equipo adecuadamente. En este sentido, el conocimiento de las herramientas disponibles para la creación y automatización de las pruebas será indispensable, por lo que habrá que enseñar a nuestro equipo cómo usar estas nuevas herramientas y descubrir qué características y metodologías encajan mejor en nuestro propio entorno de trabajo.


Desde el comienzo se hará necesario un seguimiento de la aceptación del proceso por parte del equipo, ya que será vital conocer cómo interiorizan la filosofía de TDD y en qué modo es puesta en práctica. Para conseguirlo, estableceremos pequeños objetivos fácilmente alcanzables, tal vez limitando el alcance de las pruebas a determinados elementos de las aplicaciones, permitiendo así que los programadores se familiaricen lo suficiente con la metodología de TDD antes de abarcar metas más ambiciosas. De esta forma, conseguiremos una mayor interiorización de la misma más rápidamente y, mediante estos pequeños logros, también conseguiremos que el equipo se sienta motivado ante el cambio, reduciendo así una posible resistencia al mismo ya que, como cualquier otro cambio, TDD requiere por parte de nuestro equipo un cambio en los comportamientos adquiridos y el desarrollo de nuevos hábitos, como puede ser el desarrollar código SÓLO cuando existe una prueba que validar. Conviene recordar que tan del equipo son los programadores como los analistas o jefes de proyecto, que deberán, en su totalidad, amoldarse a las nuevas condiciones de trabajo impuestas por la metodología de desarrollo que hemos decidido adoptar.


Una posible hoja de ruta para la adopción de TDD en nuestra empresa podría ser la siguiente:




  1. Formar al equipo.

  2. Estudiar los requerimientos y limitaciones de nuestra organización.

  3. Identificar los parámetros que nos ayuden a comprobar en qué medida se va desarrollando la implantación de TDD.

  4. Establecer pequeñas metas que puedan ser fácilmente alcanzables, para ir incrementando el alcance y dificultad de las mismas de forma progresiva. Por ejemplo, establecer en qué partes del código se establecerán los métodos de prueba, e ir ampliando su alcance.

  5. Delimitar un lapso de tiempo en el que se evaluará la adopción de TDD.

  6. Usar TDD, escribiendo las pruebas siempre antes que el código que deba superarlas.

  7. Comprobar la validez de las pruebas, y la adecuación de las mismas a lo definido en TDD.

  8. Realizar ajustes, en base a la evaluación anterior.

  9. Continuar ampliando el ámbito de actuación de nuestro equipo, abarcando cada vez más código.

  10. Proseguir con la investigación y adopción de las mejores prácticas de desarrollo, y las herramientas más óptimas. Esto implica un reciclaje continuo del equipo, lo que hace que se sienta motivado y proactivo.


Para saber más:

Actualización (8 de abril de 2008): El blog registra una nueva entrada el 3 de abril de 2008 sobre Cheat Sheets, en concreto recogiendo una "hoja de trucos" o guía de Test-Driven Development, disponible para su descarga en formato PDF.

8 comentarios:

  1. [...] La implantación de TDD en nuestra empresa [...]

    ResponderEliminar
  2. [...] especialmente indicado para equipos que consten de 7 a 15 miembros, aproximadamente. Comenzaremos, ya que introdujimos TDD en su día, a hacer lo propio con Scrum, para ir ampliando tanto uno como otro en sucesivas [...]

    ResponderEliminar
  3. Carlos San Martín Montañés28 de diciembre de 2009, 13:15

    Me ha parecido un artículo realmente interesante y me ha ayudado mucho para empezar a entender mejor este método.

    En mi empresa, una cadena de supermercados internacional llamada SIMPLY, estamos tratando de implantar el TDD (Test Drive Development) como metodología de pruebas.

    Yo soy el responsable del diseño de dicha metodología, pero no se muy bien por donde empezar ya que nunca había oido hablar de ella y lo único que sé es a través de artículos de internet que he podido leer, tan buenos como el tuyo. Yo soy solo el becario de la empresa y no soy programador así que he tenido que estudiar bastante todo este mundo de las pruebas para ponerme al día, pero de programar no se nada.

    He podido ver que eres un experto en el tema de la metodología TDD, por lo que te estaría enormemente agradecido si me pudierais ayudar con algún tipo de información o consejo que me permitiera empezar a diseñar dicha metodología en mi empresa de forma adecuada, ya que actualmente me encuentro algo desorientado al respecto.

    Muchas gracias por todo.

    Recibe un cordial saludo y mi más sincera enhorabuena por el artículo

    ResponderEliminar
  4. Carlos San Martín Montañés7 de enero de 2010, 7:13

    Hola Mithdraug,

    Con toda la información que he ido leyendo sobre ATDD y TDD, he podido entender el proceso seguido en ambas metodologías y ahora estoy tratando de adaptarlo a mi empresa. En este punto me están surgiendo una serie de dudas más concretas. Tú que eres experto en estos temas, a ver si me puedes ayudar.

    Te explico cuál sería nuestro ciclo de desarrollo de un proyecto software:

    El primer paso sería determinar las pruebas de aceptación a partir de los requisitos definidos. ¿En este punto se empezarían ya a codificar estas pruebas de aceptación o esperamos a tener el siguiente paso realizado que se explica a continuación? Esta es mi primera duda.

    El segundo paso que hacemos es desglosar cada requisito en tareas. Actualmente sobre cada una de estas tareas se escribe el código necesario y realizamos pruebas. Si ahora queremos aplicar la metodología TDD, primero definiremos las pruebas unitarias, luego con cada prueba se codificará y se realizará el código para que sea correcta la prueba.

    Mi principal duda es en qué orden se realizarían los dos pasos anteriores y cuál es el proceso que deberíamos seguir para pasar de tener las pruebas de aceptación definidas a comprobar que son correctas.

    A nivel de documentación, ¿sería interesante tener registro de todo tipo de pruebas?, ¿cómo y cuáles crees tu que sería mejor documentarlas o no merece la pena guardar registro de ninguna de las pruebas?.

    Por otro lado podrías recomendarme alguna herramienta de software libre para análisis de cobertura de código en la ejecución de pruebas (Java, AS400, VB). ¿Cuál crees tu que sería el porcentaje de cobertura ideal?

    Espero que me aclares un poco todas estas ideas que te planteo.

    Muchas gracias por todo, me eres de gran ayuda.

    Un abrazo

    ResponderEliminar
  5. Carlos, estos días ando con bastante ajetreo, pero intentaré responderte en breve a cuanto me planteas.

    Un saludo.

    ResponderEliminar
  6. Carlos San Martín Montañés14 de enero de 2010, 8:29

    Gracias por acordarte,

    No te preocupes cuando tengas un rato me comentas lo que sepas del tema, que seguro me será de gran ayuda para empezar a implantar TDD en mi empresa.

    Nosotros usamos Java para programar.

    Espero con gran interés tu respuesta.

    Un saludo

    Carlos

    ResponderEliminar
  7. Carlos San Martín Montañés26 de enero de 2010, 8:09

    Hola Mithdraug,

    Soy Carlos, te escribo para recordarte que sigo esperando tu respuesta y tus consejos que seguro me serán de gran ayuda.

    Espero que escribas pronto.

    Un abrazooo

    ResponderEliminar
  8. Buenas, Carlos.

    Disculpa la tardanza de la respuesta. Como habrás podido observar el blog ha estado parado durante casi dos meses por la acumulación de trabajo que he tenido. Ahora ando un poco (pero sólo eso: una pizca) menos atareado, intentaré buscar un hueco para solventar las dudas que te surgían.

    Saludos.

    ResponderEliminar