Práctica: Pruebas
Aunque la descripción de los objetivos a realizar en esta
práctica se refieren a la distribución
que resuelve el problema de la mochila puede
elegir cualquier otro algoritmo. Lo importante es que
la distribución cubra cada uno de los tópicos
expuestos en la lista:
- Lea los siguientes documentos
- Lea 536312
- Añada pruebas que comprueben el funcionamiento de
ReadKnap
cuando los ficheros no existen o no contienen los datos deseados
(no tienen números, contienen números negativos, etc.).
- Añada al módulo la función
GenKnap
y añada al programa
de pruebas una nueva prueba para comprobar su funcionamiento.
Use las funciones rand
y srand
. Use la función
int
para obtener un entero (p. ej int(rand(10)
devuelve un entero entre 0 y 9). La prueba puede consistir en
comprobar que los pesos y los beneficios están en un rango dado.
Otra posible prueba es llamar a GenKnap
dos veces
y comprobar que los problemas generados son distintos.
- Añada a la distribución de
Algorithm::Knap01DP
un ejecutable al que se le pasa como argumento
el nombre de un fichero conteniendo un problema
de la mochila y que produce como salida la solución.
- Compruebe la documentación usando el módulo
Test::Pod
de Andy Lester. Instálelo si es necesario.
- Una prueba SKIP declara un bloque de pruebas
que - bajo ciertas circustancias - puede saltarse.
Puede ser que sepamos que ciertas pruebas
sólo funcionan en ciertos sistemas operativos
o que la prueba requiera que ciertos paquetes están instalados
o que la máquina
disponga de ciertos recursos (por ejemplo, acceso a internet).
En tal caso queremos que los tests se consideren si se dan las circustancias
favorables pero que en otro caso se descarten sin protestas.
Consulte la documentación de los módulos
Test::More
y Test::Harness
sobre pruebas tipo SKIP. Construya una prueba SKIP para el
módulo Algorithm::Knap01DP
.
Por ejemplo, si el módulo
Algorithm::Knapsack
está instalado
en la máquina, genere un problema aleatorio y compruebe que la solución dada por ambos
algoritmos es la misma.
- Utilice el módulo
Test::Warn
para comprobar que los mensajes de warning (uso de
warn
and carp
)
se muestran correctamente.
- Comprueb la ''Kalidad'' de su distribución
- Haga un análisis de cubrimiento
- Haga un análisis de rendimiento
Casiano Rodríguez León
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León
is licensed under a Creative Commons Reconocimiento 3.0 Unported License.
Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19