Pex, herramienta automática para la realizacian de pruebas unitarias en .Net

De todos es sabida la importancia vital de las pruebas unitarias en el proceso de desarrollo de software. Estas pruebas son las primeras que deben realizarse sobre los artefactos software generados por el desarrollador: métodos, clases, etc.


Idealmente, las pruebas unitarias son las únicas realizadas por el desarrollador; del resto de pruebas se encarga el ingeniero de pruebas (tester). Además, difieren del resto (integración, pruebas de carga, pruebas del sistema, etc) en el tipo génerico de pruebas de que se tratan. Mientras que las pruebas realizadas por el tester son pruebas de Caja Negra, las pruebas unitarias realizadas por el desarrollador son pruebas de Caja Blanca. Como siempre, esto dependerá de cada organización o equipo. No obstante, a partir de un nivel TMM 3 (Testing Maturity Model), está claramente realizada esta distinción.


A grandes rasgos, las diferencias entre una y otra radican en que en las pruebas de Caja Blanca podemos “ver” el código mientras que en las de Caja Negra no (de ahí su nombre…). Esto determina los distintos metodos a seguir a la hora de realizar unas pruebas y otras. Las pruebas de Caja Negra se basan esencialmente en probar conjuntos de datos de entrada de todas las clases genéricas posible, y analizar el valor de salida, comprobando el valor real obtenido con el valor esperado. Uno de los métodos más habituales dentro de la categoría de Caja Negra son los métodos de clases/particiones de equivalencia.



Por el contrario, al realizar pruebas de Caja Blanca, debemos llevar a cabo un análisis del código y encargarnos de proporcionar las entradas de prueba necesarias para que todas las ramas del codigo sean probadas de manera adecuada. A este método concreto se le conoce con el nombre de “búsqueda de caminos”.



Dentro de este contexto de pruebas de Caja Blanca basadas en el metodo de búsqueda de caminos, es una labor bastante tediosa el cálculo del grafo de caminos cuando los algoritmos a probar adquieren cierta complejidad… Ante este problema, ahora contamos con una muy valiosa herramienta: Plex, de la cual ya nos habló hace un tiempo el amigo Rodrigo Corral por aquí. Se trata de una herramienta que actualmente está en fase de desarrollo por parte de Microsoft Research, y que tiene la capacidad de explorar nuestro código, encontrar dicho grafo de caminos, seleccionar el subconjunto mínimo suficiente de caminos para probar todas las sentencias de nuestro codigo y, finalmente, generar las entradas representativas necesarias al programa para recorrer todos estos caminos.


En el siguiente vídeo de Channel 9, podemos conocer más cosas acerca de esta valiosa herramienta, de la mano de Nikolai Tillman y Peli de Halleux, dos de los investigadores que trabajan en dicho proyecto.


 




En próximas entradas hablaré acerca de otras técnicas y herramientas valiosas para incrementar la calidad de nuestros desarrollos, así como de las metodologías aplicables a este proceso y la estructura organizativa ideal para los equipos que quieran evolucionar desde niveles básicos TMM a niveles más consolidados en la realización de pruebas de software.


Saludos @ Paris

Un comentario en “Pex, herramienta automática para la realizacian de pruebas unitarias en .Net”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *