[Python-es] sobre pruebas de caja blanca
Olemis Lang
olemis en gmail.com
Dom Mayo 23 06:31:17 CEST 2010
On 5/22/10, lasizoillo <lasizoillo en gmail.com> wrote:
> El día 22 de mayo de 2010 05:44, Ivette Maria Suarez Muñoz
> <immunoz en estudiantes.uci.cu> escribió:
>> Hola tengo que hacer pruebas al codigo y no se en python si existe algun
>> modulo o algo que me lo haga mas facil, si alguien sabe algo de esto le
>> estare muy agradecida si me responden
>>
Lo primero que debería explicar qué es lo que se prueba (system under
test aka SUT) y qué es lo que pretende con las pruebas . Mientras no
haga eso, sospecho que la respuesta será un poco difícil, porque de
hecho hay múltiples respuestas . Para darse cuenta solo hay que
echarle un vistazo a la taxonomía [1]_ ;o)
>
> Yo empezaría por hacer pruebas funcionales con nosetests o docutils.
Personalmente no me gusta nose . Yo uso dutest, que es una combinación
mejorada y simple de unittest + doctest ... pero para gustos se han
hecho los colores ;o)
> El primero alguna vez lo he integrado con tests de cobertura.
No es necesario nose para hacer análisis de cobertura . Se puede usar
coverage.py
{{{
#!sh
$ coverage.py cualquier_cosa_hecha_en_py
}}}
C. Titus Brown estaba confeccionando un paquete (SomePackage @ GitHub)
de ejemplo que ilustraba las buenas prácticas para organizar los
módulos y artefactos de pruebas , sobre todo con el fin de hacer algo
más o menos así
{{{
#!sh
$ coverage.py setup.py test
}}}
> Pero
> también te digo que con un 100% de cobertura se pueden tener caminos
> que no estan comprobados (y que sean erroneos).
> http://somethingaboutorange.com/mrl/projects/nose/0.11.3/plugins/cover.html
>
No es del todo así, y sí es del todo así . coverage.py tiene soporte
para branch coverage. De esta forma se puede confiar más en el reporte
de coverage ;o)
> Existen también algunas herramientas de QA para python que te puede
> ayudar a encontrar errores (uso de variables no declaradas, ...) sin
> necesitar de programar una batería de tests. También valen para
> quejarse de que el código "sea feucho".
> * pylint (http://www.logilab.org/857) lento como un dolor y tan
> quisquilloso como tengas la paciencia de configurarlo.
> * pyflakes (http://divmod.org/trac/wiki/DivmodPyflakes) rapido como un
> demonio, pero no tan exhaustivo.
>
Análisis estático de código . Ver sección en [1]_
> Repetir, repetir, repetir. Cuando tires para atrás un desarrollo y te
> lo den modificado sería interesante hacer la regresión de todos los
> tests y revisar el código midificado. Control de versiones para ver
> los cambios de los entregables y si has automatizado la batería de
> tests volverlos a pasar. Buildout, buildbot, hudson, ... scripts de
> python
Bitten ;o)
> pueden ayudarte mucho para volver a ejecutar los tests y evitar
> que un arreglo estropee una cosa que antes funcionaba.
>
+1 . Para más detalles acerca de la filosofía, buscar en Google :
Martin Fowler Continuous Integration
> Así en general no se me ocurren más herramientas. Igual entrando en
> detalles concretos aparecen más ideas.
>
testing-in-python en idyll.org
;o)
.. [1] PythonTestingToolsTaxonomy - Cheesecake - Trac
(http://pycheesecake.org/wiki/PythonTestingToolsTaxonomy)
--
Regards,
Olemis.
Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/
Featured article:
Más información sobre la lista de distribución Python-es