|
Recientemente me he pasado al Visual Studio 2008 Team System. Y el principal motivo es que esta version, a parte de incluir todo lo del professional, incluye un profiler y la gestión de unidades de prueba Qué es eso de las unidades de preuba? Pues básicamene, es una forma de programar haciendo pequeños ensayos de cómo deberían de funcionar nuestras clases, objetos, librerías, etc. El único projecto con el que desarrollo en mi tiempo libre es con el motor de render, y hace tiempo que tengo un problema serio a la hora de meter modificaciones. Cada vez que incluyo algun parámetro nuevo y tengo un comando para el fichero de escena, tengo que hacer algo para que modificar las escenas que tengo de prueba. Actualmente las escenas son en ascii puro, y las mantengo en subversion (me refiero a las de prueba), pero el proceso de verificar es todavía algo "manual". Las unidades de prueba permiten programar de otra forma cuando tienes un problema tan grande como un motor de render. Basicamente se van desarrollando pequeños test que las clases tienen que cumplir para considerarlas útiles. La idea es ir probando las clases en otro proyecto, y cuando la implementación pase todos los tests, podemos comenzar a usarla en nuestro desarrollo. Os hablo de este tema, porque recientemente, en el blog de ethernet, me he encontrado con este enlace en castellano que nos habla de cómo programar con unidades de testeo en general, y que me parece una muy bien explicado. Este artículo usa cppunit, que es una versión sencilla y eficaz para este problema. Como os comentaba, la versión Team System de Visual 2008 incluye el sistema de pruebas integrado, y aunque seguro que no es lo mejor, al menos es sencillo de meter en nuestro día a día. Lo único que tenemos que hacer es un nuevo proyecto de pruebas. Esto nos crea un UnitTest1.cpp donde meteremos nuestros test. Si le damos a ejecutar, veremos que nos aparece una ventana donde se listan todos los test que desarrollamos y se van checkeando paso a paso, generando un report de lo que ha pasado el test y lo que no. Este proceso lo podemos configurar, etc. Todavía no he desarrollado una clase completamente de esta forma, pero estoy pensando en un nuevo gestor de memoria para el motor que creo que es ideal para este tipo de desarrollos, asi que os podré contar un poco más. Es sistema usa modo "managed" de .net, para mi desgracia. Pero bueno, lo único es que tenemos un sitio donde meter nuestras pruebas. Para ejecutar las pruebas, usaremos las clases de Microsoft.VisualStudio.TestTools.UnitTesting, y en concreto, la funcion Assert (hay mcuhas más). Assert tiene 2 parametros, el valor esperado, y el valor que realmente devuelve nuestra funcion. Si alguna de ellas falla, se genera un error. Con esto, seguro que hay mucho más en las profundidades de este sistema, que quizas merezca un completo review, pero podremos usar los principios del artículo que menciono más arriba para desarrollar nuestra clase.
|