Desarrollo Dirigido por Pruebas en Python (II). Un Caso Práctico (I)

A principios de año escribimos una entrada que puedes leer aquí. Después de un parón más largo de lo previsto, volvemos a la carga con el desarrollo dirigido por pruebas en Python.

Vamos a utilizar TDD y el módulo unittest para crear una aplicación que se conecte a twitter, recupere los mensajes de un hashtag y almacene parte de los mensajes en un fichero. El nombre del fichero será la fecha actual y el hashtag. El fichero contendrá la información de cada tweet separada por comas.

Dividiremos este ejemplo en varias entradas. En cada entrada, desarrollaremos una parte de la aplicación a medida que aprendemos distintas técnicas y buenas prácticas para aplicar TDD. En la primera entrada empezaremos con la aplicación y veremos algunos aspectos clave de la aplicación de TDD.

El diario de diseño

Vamos  comenzar creando el diario de diseño. Este diario es la lista de tareas que tenemos pendientes (una to-do list) de hacer cómo código a escribir o funcionalidad a implementar y nos va a servir para mantenernos en todo momento con el foco centrado. Utilizamos el diario cuando ya tengamos una funcionalidad implementada (y gracias a TDD probada) para decir la siguiente y cuando, durante un ciclo de TDD, se nos ocurra nueva funcionalidad o nuevas condiciones a implementar en nuestro código. Vamos a ver las tareas que tenemos que hacer en el cuadro 1.

Cuadro 1. Diario de diseño.
1) Conectarse a Internet y obtener los mensajes que contengan un tag concreto.
2) Procesar los tweets para obtener el nombre y dirección twitter del autor, la fecha y el contenido del tweet.
3) Guardar la información anterior en un nuevo fichero.
4) Crear una interfaz de usuario por línea de comandos.

Para empezar a escribir código elegimos una de las tareas anteriores, la que queramos. No tenemos que imponernos un orden ni pensar que tenemos dependencias. En su lugar elegimos la tarea que consideremos más importante, más arriesgada, más rápida de implementar, etc.

Continue reading

Desarrollo dirigido por pruebas en Python (I): Una historia que pasa todos los días

Vamos a iniciar una serie de artículos sobre desarrollo dirigido por pruebas en Python (TDD en inglés) con el objetivo de acercarlo a científicos e ingenieros. En el primero presentaremos la idea principal del desarrollo dirigido por pruebas, y para ello empezamos una pequeña historia:

Una empresa de desarrollo de productor de jardinería a medida, GardenTech, tiene un nuevo cliente, el señor Sellers. La reunión de requisitos podría ser algo así:

Ingeniero GardenTech: Buenos días señor Seller, díganos qué es lo que necesita.

Sellers: Necesito una manera de poder regar mis plantas.

GT: Podemos ayudarle, tenemos mucha experiencia en ese campo. ¿En qué ha pensado?

S: Tengo 5 macetas, así que me gustaría llevar el agua para allá y echársela.

GT: Perfecto, le pondremos a su aparato un agujero grande para que pueda llenarlo de agua y muchos pequeñitos para que no tronche las flores.

S: Pero ¿y si se me cae?

GT: Tranquilo, la usabilidad es nuestra especialidad, le añadiremos un asa para que pueda manejarlo y no será muy grande para que no pese.

S: ¿no será grande? Entonces igual lo pierdo.

GT: Todo está pensado, le daremos un color rojo brillante para que pueda encontrarlo a simple vista.

S: ¿Y si me mojo?

GT: Los agujeros pequeños estarán alejados del dispositivo mediante un tubo.

S: Perfecto, veo que piensan en todo.

GT: Somos buenos.

El señor Sellers y GardenTech están de acuerdo  en los requisitos que debe tener el artefacto, y GardenTech comienza a desarrollarlo. Un mes después la empresa llama al seños Sellers. En medio de la sala de reuniones hay una mesa con un bulto cubierto por una sábana.

Continue reading