Devel::Cover: Estudio del Cubrimiento de las Pruebas

Instale el módulo Devel::Cover. El módulo Devel::Cover ha sido escrito por Paul Johnson y proporciona estadísticas del cubrimiento alcanzado por una ejecución. Para usarlo siga estos pasos:

hp@nereida:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP$ cover -delete
Deleting database /home/lhp/projects/perl/src/threads/knapsack/Algorithm-Knap01DP/cover_db
lhp@nereida:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP$ make HARNESS_PERL_SWITCHES=-MDevel::Cover test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01alltests....ok
t/02bench.......ok
All tests successful.
Files=2, Tests=16, 18 wallclock secs (17.05 cusr +  0.75 csys = 17.80 CPU)

Writing HTML output to /home/lhp/projects/perl/src/threads/knapsack/Algorithm-Knap01DP/cover_db/coverage.html ...
done.
La ejecución toma ahora mas tiempo. Al ejecutar cover de nuevo obtenemos una tabla con las estadísticas de cubrimiento:

lhp@nereida:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP$ cover
Reading database from /home/lhp/projects/perl/src/threads/knapsack/Algorithm-Knap01DP/cover_db


---------------------------- ------ ------ ------ ------ ------ ------ ------
File                           stmt   bran   cond    sub    pod   time  total
---------------------------- ------ ------ ------ ------ ------ ------ ------
...lib/Algorithm/Knap01DP.pm  100.0   82.1   37.5  100.0    0.0  100.0   88.8
Total                         100.0   82.1   37.5  100.0    0.0  100.0   88.8
---------------------------- ------ ------ ------ ------ ------ ------ ------


Writing HTML output to /home/lhp/projects/perl/src/threads/knapsack/Algorithm-Knap01DP/cover_db/coverage.html ...
done.
El HTML generado nos permite tener una visión mas detallada de los niveles de cubrimiento.
lhp@nereida:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP$ cd cover_db/
lhp@nereida:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP/cover_db$ ls -l
total 68
-rw-r--r--  1 lhp lhp  3424 2007-05-16 15:48 blib-lib-Algorithm-Knap01DP-pm--branch.html
-rw-r--r--  1 lhp lhp  3127 2007-05-16 15:48 blib-lib-Algorithm-Knap01DP-pm--condition.html
-rw-r--r--  1 lhp lhp 34909 2007-05-16 15:48 blib-lib-Algorithm-Knap01DP-pm.html
-rw-r--r--  1 lhp lhp  2207 2007-05-16 15:48 blib-lib-Algorithm-Knap01DP-pm--subroutine.html
-rw-r--r--  1 lhp lhp  3345 2007-05-16 15:48 cover.12
-rw-r--r--  1 lhp lhp  2004 2007-05-16 15:48 coverage.html
-rw-r--r--  1 lhp lhp  1348 2007-05-16 15:48 cover.css
drwx------  2 lhp lhp  4096 2007-05-16 15:48 runs
drwx------  2 lhp lhp  4096 2007-05-16 15:48 structure

Para mejorar el cubrimiento de tu código comienza por el informe de cubrimiento de subrutinas. Cualquier subrutina marcada como no probada es un candidato a contener errores o incluso a ser código muerto.

Casiano Rodríguez León
Licencia de Creative Commons
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