Suites de prueba

27. enero 2009, 23:40

Al darme cuenta de que el ciclo de desarrollo que estoy usando para “tuu” es el de escribir código, probarlo, depurarlo, probarlo, depurarlo, etc. decidí que sería muy util si pudiera automatizar un poco el proceso de pruebas. Así, en vez de estar escribiendo el mismo comando muchas veces o introduciendo datos a mano, simplemente puedo usar un comando que haga todas las pruebas y me reporte los resultados.

Esto se llama prueba funcional, que quiere decir que se prueba el programa completo para verificar que en realidad hace lo que se espera.

Primero intenté usar DejaGNU, pero después de pasar todo el dia de ayer simplemente haciéndolo funcionar, decidí abandonar esa idea. El problema con DejaGNU es que está escrito en un lenguaje llamado “Expect” que es una extención de Tcl, y los test se deben escribir en “Expect”. No soy un gran fan de Tcl, pero realmente intenté aprender a usarlo. Después de un rato me di cuenta que escribir los test era mucho más complejo que crear el programa original, así que decidí buscar algo más simple.

Entonces dí con una página muy interesante: open source software testing tools que lista una gran cantidad de herramientas enfocadas a la prueba de software. Después de leer los manuales de algunas herramientas noté que todas ellas eran endiabladamente complejas, lo único que necesito es correr un programa y verificar que su salida es la esperada, caracter por caracter.

Y fue así como decidí crear mi propia herramienta de pruebas. Elegí Python como lenguaje y creé un pequeño sistema de pruebas en unas pocas horas (Python es un buen lenguaje). El sistema simplemente ejecuta la herramienta, le pasa parámatros o simula entrada por el usuario y lee la salida. Si la salida no corresponde a lo esperado aunque sea por un sólo carácter entonces el test se considera fallido.

Lo más interesante es que ya logré capturar un bug en mi código, y con un test muy simple. Imprimía un espacio de más en mi programa y esto fue detectado rápidamente por mi sistema de pruebas. Este error hubiera sido muy difícil de detectar sin el sistema, ya que yo no puedo ver los espacios en blanco.

Sí, he escuchado que algunos se preguntan porque no hice el sistema en “tuu”. Bueno, pues, tuu todavía no existe y además no tendría mucho sentido probar un lenguaje con el mismo lenguaje verdad? Aunque en un futuro, talves haga un sistema de pruebas basado en tuu.

Elio Cuevas Gómez

,

---

Comentarios

Se han desactivado los comentarios a este artículo.

---