domingo 4 de enero de 2009

Sistema de Prueba

Voy a decir, como suelo hacerlo, algo que resulta obvio a miles (quizás decenas de miles) de personas, pero que he aprendido, no de un libro o porque me lo dijeron, sino de leer y pensar.

La idea tiene uno o dos días dándome vueltas en la cabeza, y aquí va; no es un proyecto de software en sí, sino una idea sobre un tipo de proyecto de software, una herramienta para el desarrollo de software.

Desarrollo de Sistemas de Prueba y Detección de Fallos Para Sistemas de Software en Desarrollo (0.1)

Para poder hacerlo, primero se necesita tener un sistema, no necesariamente en desarrollo, pero la finalidad es:
  • Evitar pasar horas y horas buscando los errores del programa
  • Sacar a la luz menos errores (desconocidos)
  • Documentar y ventilar los errores del programa con todo el control posible sobre el estado del programa, es decir, conocer el valor de todas las variables que se tienen en juego (hasta donde sea posible)
La idea para hacer esto es un script que se integraría al código fuente, un módulo de autoprueba que permita a los desarrolladores probar todos los estados del software y a los usuarios poder archivar el reporte de maco (haré una entrada sobre este término) que sea realmente útil a los desarrolladores.
A nivel básico, el software tendría funciones que llaman, de manera consecutiva para obtener todas las combinaciones posibles dentro de parámetros establecidos por el probador, todas las funciones del programa, hasta que:
  • La prueba finalice.
  • El programa falle.
En el primer caso, devolvería en un archivo todos los parámetros establecidos, tentativamente información sobre el computador en que se ejecutó (como cantidad de RAM utilizada/disponible, velocidad del procesador u otros factores que podrían afectar la velocidad de ejecución del software), la cantidad de veces que se llamó a cada función del programa y todas las llamadas al programa hechas, y el tiempo que se tardó en completar la prueba.

En el segundo caso, devolvería el estado del programa en el momento en que falló, el código de error que lanzó el programa (si hubo). En caso de que el programa muera de manera inesperada, habrá disponible una manera sencilla de saber el estado del programa en el momento en que falló: el programa va archivando, hasta el momento de finalización de la prueba, el estado en que está ejecutando todas las funciones actualmente, y la próxima función a ser evaluada.

También se podrán establecer grupos de resultados considerados erróneos (o mejor dicho, parámetros dentro de los cuales los resultados son considerados correctos), de tal forma que el software pueda reportar errores de lógica.
--
Sé que es algo limitado y sencillo, pero simplemente es una idea inicial. Aún no he implementando tal cosa para ninguno de mis sistemas. Esto es, según mi criterio, el inicio de la inteligencia artificial que llevaría a una Singularidad.

Quien esté familiarizado con este tipo de cosas, favor comentar. Quien le haya agradado esta publicación, favor de comentar. A quien no, también.

1 comentarios:

R.Vidal dijo...

eclipse
ponte a ver el IDE eclipse
y tu sabe
eclipse XD