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

El ascenso de Ícaro


El desarrollo guiado por pruebas o TDD nos permite codificar nuestras aplicaciones de una forma más segura, ya que ante cambios en el código existente o inclusión de nuevas funcionalidades, basta pasar nuevamente todas las pruebas (incluyendo, en su caso, las nuevas que sean pertinentes) para asegurarnos que las modificaciones no han alterado su funcionamiento anterior. Una de las herramientas que nos permiten llevar a cabo este desarrollo son los frameworks de prueba, de los que existen de todos los sabores y gustos conocidos para cada lenguaje de programación o plataforma de desarrollo. En el caso del .NET Framework podemos citar, entre otros, el extendidísimo NUnit en sus líneas de desarrollo 2.x y 3.x, MbUnit muy orientado a la extensibilidad del mismo, MSTest que viene “de serie” con Visual Studio (excepto las ediciones Express) y xUnit.net, que nació tras las lecciones aprendidas de otros frameworks de pruebas unitarias y que poco a poco va adquiriendo mayor peso entre la comunidad de desarrolladores.



Estos frameworks suelen consistir en un core de pruebas que nos permite, gracias al etiquetado mediante atributos de nuestras clases y métodos, la ejecución automatizada de los tests. También incorporan clases de extensión y demás funcionalidades, y suelen permitir la ejecución de las pruebas desde la propia consola del sistema, o a través de una interfaz gráfica que nos hace la vida más fácil a los usuarios de los mismos. Pues bien, días atrás estuve evaluando xUnit.Net como alternativa a NUnit de cara a nuevos desarrollos, y su inclusión dentro del proceso de integración continua que facilitan herramientas TeamCity, de la que me gustaría hablar algún día. El caso es que, probando xUnit.net, el GUI que ofrece “de serie” el framework es ciertamente triste, aunque sea una versión temprana del mismo. Así las cosas, me planteé probar su funcionamiento con alguna otra aplicación que permitiese llevar a cabo campañas de prueba de una forma más sencilla y con un mayor control sobre los resultados arrojados por los tests. Aunque la oferta a este respecto, por lo que pude ver, no es demasiado extensa (buscaba un GUI suficientemente flexible como para permitir la ejecución de pruebas con xUnit.net sin demasiado trabajo de configuración previa, o sin tener que desarrollar scripts en NAnt, MSBuild o similares), encontré mi opción ideal en Gallio, una plataforma de automatización, abierta y extensible, que puede integrarse con numerosos frameworks de pruebas en .NET. De hecho, es tan flexible que permite la ejecución de series de test desarrollados sobre diversos frameworks sin mayor problema. Incorpora un GUI, Icarus, cuya instalación y uso es tan simple como el propio GUI de NUnit, permitiendo además obtener informes muy vistosos como puede observarse en las diversas capturas que acompañan a la entrada de hoy.



El Explorador de Tests nos permite seleccionar aquellas pruebas que deseamos ejecutar.



Una ejecución de tests con un resultado ideal.



El Explorador de Tests correspondiente a la ejecución anterior.



El log de ejecución con algunos tests fallidos.


No voy a entrar demasiado en profundidad en la aplicación, ya que su uso es muy intuitivo y simple, y lo único de lo que quería dejar constancia es del interés que ha suscitado en mí precisamente por eso, porque permite incluso desarrollar nuevas pruebas sobre el código existente en un framework de pruebas distinto al ya existente, y pasar las pruebas en su totalidad desde una misma aplicación. En contra suya únicamente he notado una ligera lentitud en la carga y ejecución de los ensamblados que contienen las pruebas a pasar.



Un completo informe en HTML.


¿Y en vuestro equipo, desarrolláis basándoos en TDD? ¿Qué framework de pruebas usáis? ¿Cuál os gusta más y por qué?

4 comentarios:

  1. En mi equipo...(ahora es cuando empiezo a hablar en bajito mirando al suelo...), prometo que algún día realizaremos pruebas unitarias y seguiremos alguna metodología de desarrollo software. ¡Qué triste!

    SaludoX.

    ResponderEliminar
  2. Este es el momento en que te pongo la mano sobre el hombro y te digo... ¡hombre, que no es para tanto! :) Realmente, aunque prácticas como TDD o desarrollos basados en metodologías ágiles se están imponendo cada vez más, no es tan habitual encontrarlo por estos lares... pero poquito a poco se irán imponiendo, ya verás :)

    ¡Un saludo!

    ResponderEliminar
  3. Yo también tendría que hablar bajito mirando al suelo, me temo... . Mithdraug, como sugerencia para escribir, te podías currar una serie sobre metodologías de desarrollo ágil... (y ahora es cuando pongo cara de koala). Slds!

    ResponderEliminar
  4. ¡Buenas Des!

    La verdad es que es algo que se me pasó por la cabeza tiempo atrás escribir una serie de artículos sobre metodologías de desarrollo ágil (de ahí unos pocos artículos sobre TDD, Scrum y demás), aunque finalmente, y como me suele pasar, terminé siguiendo por otros derroteros. Me ponéis en un brete, pero a ver si saco tiempo y las escribo, que ganas no son precisamente lo que me faltan, pero sí otro tipo de elementos intangibles (simplemente, fíjate en la diferencia de fechas entre tu comentario y cuándo he podido contestarte :) )

    ¡Un saludote!

    ResponderEliminar