Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

martes, 2 de diciembre de 2008

Pruebas de caja blanca automatizadas en .NET


Una de las tareas más tediosas a la hora de desarrollar pruebas unitarias sobre código existente es tener en cuenta todas las posibles entradas y flujos de ejecución. Sin embargo, es necesario (imprescindible incluso) un correcto control de ambos aspectos durante el desarrollo de nuestras aplicaciones. Durante el proceso de desarrollo, las prácticas recomendadas por metodologías como la Programación eXtrema (XP) y el Desarrollo Guiado por Pruebas (TDD) nos dicen que debemos escribir los tests necesarios para validar el código que estamos creando. Sin embargo, no se nos dice qué pruebas debemos escribir, aunque sabemos que las pruebas, si están bien escritas son, además de una herramienta insustituible para la verificación del código, un modo de reflejar mediante código las especificaciones que deberá cumplir nuestro código.


Por todo esto, Microsoft ha preparado un nuevo framework (sí, uno más, a mí también me sorprendió cuando me hablo del mismo un compañero de trabajo) que permite facilitar la tarea del desarrollador mediante la creación de pruebas unitarias mediante la inspección automática del código. Estoy hablando de Pex (Program EXploration), que puede ser descargado desde la página de Microsoft Research, y que durante su instalación nos adelanta una futura integración con Visual Studio 2010, el próximo IDE de la compañía. Aunque el sistema operativo recomendado es Windows Vista, no he tenido problema alguno para probarlo con mi Windows XP SP2 y Visual Studio 2008. Tras instalarlo, a ser posible incluyendo los complementos para Visual Studio, tendremos un nuevo grupo de programas con el propio Pex, una carpeta de ejemplos para juguetear un poco y una documentación bastante completa y muy interesante.


Ahora podemos hacer uso del mismo simplemente incluyendo una referencia a Microsoft.Pex.Framework en nuestro proyecto, y etiquetando adecuadamente las clases y métodos con los atributos PexClass y PexMethod respectivamente.



Hecho esto, podemos acceder al menú contextual dentro del código y seleccionar la opción “Run Pex Explorations”. Aparecerá un panel con los resultados de la exploración, y el análisis que ha llevado a cabo Pex en nuestro código.



Como se puede observar, podemos analizar las diversas entradas que Pex habrá usado como parámetros de entrada en nuestros métodos, un pequeño resumen o control de excepciones y el mensaje de error obtenido, si es el caso.



Si seleccionamos una de las entradas, aparecerá una zona con los detalles del código que Pex generará por nosotros para ejecutar la prueba correspondiente. Si esa entrada provoca una excepción, es posible automatizar incluso el control de la excepción, etiquetando el método que ejecutará la prueba para que la misma sea una excepción esperada.






En el cuadro de diálogo Herramientas->Opciones, podemos establecer una serie de configuraciones sobre Pex como, por ejemplo, la generación de informes. Si habilitamos dicha opción, en la carpeta destino de la compilación se creará una carpeta con el informe en formato HTML. Podemos observar en el mismo los tests que han sido generados y la cobertura que suponen sobre el código.





La verdad es que Pex pinta realmente bien. Parece una herramienta interesantísima a la hora de gestionar y generar las pruebas unitarias de forma automatizada. La documentación es muy completa e incluye, además del manual de uso de Pex, una serie de documentos sobre patrones de pruebas para un uso eficiente de Pex, o el uso de stubs. Conforme vaya profundizando en él iré dejando por aquí mis impresiones.


Ah, y no es lo único que se nos viene encima. Los chicos de DevLabs en Microsoft tienen en mente proyectos tan interesantes como CHESS, una herramienta para la búsqueda automática de interbloqueos, condiciones de carrera y otros heisenbugs en nuestro código concurrente.

No hay comentarios:

Publicar un comentario