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