El milagro de los panes y los 'teses'
Parece que hay una tendencia cada vez más marcada hacia asegurar la calidad del código fuente y del software mediante herramientas de automatización. Hace poco conocíamos la aparición de Microsoft Source Analysis for C# y de la mano de mi compañero Jose Luis Soria he tenido contacto recientemente con BDD (Behavior Driven Development), una nueva manera de escribir test unitarios realmente prometedora... hoy toca hablar de otra herramienta relacionada con las anteriores.
¿Os imagináis que existiese un software que fuese capaz de analizar un conjunto de pruebas parametrizadas escritas manualmente y a partir de este conjunto generar automáticamente un nuevo conjunto de pruebas con alta cobertura y que además prueban condiciones de frontera? ¿Os imagináis que además este software fuese capaz de indicarnos como corregir potenciales bugs?. Suena casi milagroso ¿no?. Pues bien, gracias a un grupo de investigadores de Microsoft Research, el milagro es posible y se llama Pex (Program EXploration): Automated Exploratory Testing for .Net. El primero que me hablo de esta herramienta fue Juanjo Olabarria uno de los habituales de Artalde y desde entonces he estado esperando con verdadero interés su primera release pública que finalmente se ha producido.
Su integración en el proceso de desarrollo es muy natural. El desarrollador escribe un conjunto de pruebas similares a pruebas unitarias pero que toman parámetros. Luego utilizaremos Pex (que está integrado con Visual Studio) para generar las pruebas unitarias y ejecutarlas. La siguente imagen resume el proceso:
La principal duda que me plantea esta herramienta es que al crecer muchísimo el número de pruebas unitarias, el tiempo de ejecución de las mismas se alarga. Y como todo desarrollador acostumbrado a usar pruebas unitarias sabe, la frecuencia con que se ejecutan los test unitarios depende de su velocidad y las pruebas que no se ejecutan frecuentemente son menos útiles que las que sí.
Estad atentos, en próximas entregas os comentaré mis primeras sensaciones con esta herramienta. Los más impacientes podéis ir viendo el screencast que ha publicado el equipo de Pex. Creo que se trata de una herramienta muy prometedora, que permite que con el mismo esfuerzo, lograr test unitarios más efectivos. Supongo que a futuro es algo que veremos integrado en Visual Studio Team System.