Integración de otros frameworks de pruebas unitarias en VSTS2010

Si vale, de acuerdo,el entorno de pruebas unitarias de Visual Studio Team System, no fue el primero, ni el único, ni quizá sea el más rápido ejecutando, aparte de todo el código existente que ya tengáis con Nunit o MbUnit por ejemplo.

Y esto es un poco problema a la hora de integrarlo todo con Visual Studio Team System, tener que ejecutar las pruebas desde otro entorno (bueno, para esto también hay otras soluciones), integrarlo con las Team Builds y publicar los resultados al Team Foundation Server, en fin, cosas que con la ejecución de test unitarios desde VSTS queda resuelta.

Bueno, una de las novedades de VSTS2010 trata sobre esto, y es la apertura a la integración de frameworks de pruebas unitarias de terceros. Esto es, poder ejecutar pruebas unitarias de VSTS, NUnit, MbUnit, y cualquier otro framework que se quiera aprovechar de esto, dentro del propio entorno de VSTS, y  publicando resultados al TFS.

¿Suena bien verdad?. Vamos a ver un pequeño ejemplo, por ahora, el único framework, que yo conozca, que está preparado para esto es Gallio/MbUnit en su versión 3.1.313: http://www.gallio.org/Downloads.aspx

Simplemente nos descargamos el framework de Gallio y nos lo instalamos.

A la hora de crear, lo podemos crear o bien del tipo habitual de pruebas de VSTS, o bien un proyecto de pruebas del framework Gallio, da igual, y esta es una de las ventajas, podemos crear un proyecto de pruebas de VSTS, y agregarle tanto pruebas de VSTS, como de Gallio, y todas se ejecutarán mediante VSTS.

Para mezclar pruebas, vamos a crear un proyecto de pruebas de  VSTS, ya sabéis, nuevo proyecto, en lenguaje el que queráis, en las plantillas de tipo

En la propia plantilla nos crea un método de pruebas, bueno, tampoco quiero enseñar aquí a hacer pruebas unitarias 🙂 así que simplemente dejad la prueba de ejemplo, y le ponemos simplemente un Assert.IsTrue(true) … ¿qué buen modo de hacer funcionar una prueba eh?

La ejecutamos, y bueno, lo esperado, se ejecuta y funciona todo ok.

Vale, ahora vamos a crear, dentro de este mismo proyecto, una clase vacía, y agregamos al proyecto, una referencia de .NET al Framework de Gallio (en referencias de .NET la que pone simplemente “Gallio” y la que pone “MbUnit”) .

En la clase agregamos la sentencia using: “using MbUnit.Framework;”

La clase la marcamos con el atributo de MbUnit que indica que es una clase de test: “[TestFixture"]”, y creamos un método nuevo, que será nuestro método de test, y le marcamos con el atributo “[Test"]”, dentro del método, la sintáxis es la misma que en los test de VSTS: Assert.IsTrue(true);

Lo primero que podemos ver, es que si vemos la lista de pruebas unitarias (y la refrescamos), nos aparecen dos, la de VSTS, y la de MbUnit, las dos juntitas 🙂 … pero sin mezclarse, si nos fijamos un poco más, veremos que tienen iconos distintos para indicarnos que son de distinto framework:

image

Bueno si ejecutamos, vemos que se ejecutan todas y que tenemos sus resultados en el mismo conjunto de resultados de pruebas que podemos publicar, etc.:

image

Esto lo tenéis funcionando ya en la Beta 1, con un pequeño “pero” … a mi me falla cuando ejecuto las pruebas desde línea de comandos con MSTest.exe, bueno y?, pues que en las Team Build se ejecutan mediante esa línea de comandos, y que no es que sólo me fallen las de MbUnit o cuando hay mezcladas, no se muy bien si es mi maquina, pero cuando instalo Gallio me falla siempre la línea de comandos 🙁 pero bueno, supongo que para siguientes Betas lo arreglarán, si no, efectivamente, esto no vale de nada :(.

Otra nueva experiencia en Kayak … esta en Svalbard

Bueno aunque ha pasado casi un mes desde mi vuelta de las vacaciones, lo cierto es que no he podido escribir antes … ya se sabe como es la vuelta al trabajo … Pero hoy que he arañado un rato, voy a haceros un pequeño resumen/relato de mi viaje, ha sido tan divertido e intenso, que no puedo más que aspirar a eso, a un resumen.

Este año el destino elegido, cambiaba un poco, aunque algunos colegas despistados seguían pensando que estaba en Groenlandia, no, el destino estaba bastante lejos de allí, y más al norte que el año pasado, en Svalbard (os recomiendo que vayáis quitando zoom en el mapa para que veáis donde está),más concretamente, subiendo todo Noruega hacia arriba y a unos 1000km del Polo Norte. Una isla de administración noruega, aunque con tratado que permite la explotación de sus recursos por varios países.


Ver mapa más grande

Lo primero que te sorprende (para los que no lo habíamos visto antes), es, al llegar a eso de las 0:00, el sol, en esas latitudes, y aunque era el 17 de agosto, el sol no se llega a esconder en ningún momento, lo que era un poco incómodo a la hora de ir a dormir los primeros días, aunque en seguida te acostumbras.

grupo En cuanto a mis compañeros de viaje, este año repetía con Tierras Polares, y además con Ángel Sánchez “Piza”, como guía, y amigo mío de hace mucho tiempo, que además de ser un excelente guía y compañero de viaje, es una persona con la que cada día aprendo más cosas. El resto del grupo lo formaba principalmente los manchegos amigos de Piza, de Ciudad Real, así como una pareja de Cataluña, y otra persona de Cataluña. La verdad, después de la experiencia del año pasado, el listón estaba alto, pero el grupo de este año era inmejorable, las risas y el buen rollo han sido continuos, y aunque este tipo de viajes pueden ser propensos a algún “roce”, por el cansancio, las condiciones, tanto tiempo juntos, en nuestro caso, han sido todo risas y buen rollo.

Y bueno que decir de Svalbard, un paisaje totalmente distinto al de Groenlandia. Si el año pasado teníamos un paisaje verde (bueno y blanco en el hielo), este año nos esperaba algo más “extremo”, siendo todo roca y hielo allá donde mirásemos, lo cierto es que te da la sensación real de que estás muy muy lejos de todo, y en un ambiente más hostil que en Groenlandia. Además, esta es la tierra del oso polar, considerado el mayor depredador terrestre (con el permiso del oso Kodiak), lo cual implica ciertas cosas, como la obligación de que el guía lleve un rifle en todo momento, no, no se pretende disparar al oso, pero si ahuyentarlo, aunque la verdad es que no tuvimos la suerte/mala suerte de encontrarnos a ninguno, por mucha ilusión que le hubiese hecho a alguna del grupo … lo cierto es que a algunos de nosotros no nos hacía gracia encontrarnos con un oso polar, en todo caso nos hubiese gustado ver a alguno desde el barco de vuelta.

paisajeLógicamente, la pregunta que todo el mundo me hace es “ufff que frío habréis pasado ¿no?”, y sí, se pasa frío, pero tampoco extremo, hemos tenido mucha suerte con el tiempo y no perdimos ningún día, si que nos llovió y hubo viento en algún momento, y también es cierto que hubo muchos días nublados, pero en general el clima nos ha respetado bastante, lo cual se agradece en este tipo de viajes por estas latitudes.

¿Y cómo era el día a día?, pues nada, levantarse prontito, pero sin exagerar, que estamos de vacaciones jeje, a eso de las 8:00 nos levantábamos, desayunábamos tranquilamente, recogíamos el campamento, y ale, a remar unas horitas, por supuesto íbamos haciendo paradas, para descansar, picar algo, que iba desde gominolas, frutos secos, chocolate a embutidos, hambre no hemos pasado no. Una vez que llegamos al punto de montar el campamento, pues nada ,a buscar agua, un tiempecillo de descanso, merendar, y un poco más tarde cocinar la cena, cenar y echarnos unas risas (muchas más bien), con las historias de la mancha, los chistes, y las bromas, y así hasta la hora de dormir, en la que nos esperaba una sorpresa en los campamentos, y es que es obligatorio hacer guardias durante la noche, por si aparece algún oso polar, despertar al guía para que lo ahuyente con el rifle.

Así que, con las parejas del kayak, nos dividimos las horas de la “noche” (os recuerdo que hasta casi finales de agosto allí no hay noche de verdad), para hacer las guardias en turnos de dos horas, aunque esto puede parecer un poco cansado y aburrido … lo es … pero la verdad es que con el tema de las guardias también salían momentos divertidos, especialmente en el momento de repartir los turnos jeje.

trekkingAdemás de remar, también hicimos algunos trekking, incluidos dos en los alrededores del cuarto mayor glaciar del mundo, la subida al pico Pyramiden, aunque sólo Fernando, uno de los del grupo de manchegos 🙂 consiguió coronar, por la dificultad de la última parte del pico, los demás preferimos quedarnos un poco más abajo comiendo unos frutos secos.

pyramidenTambién aprovechamos el último día, para visitar la ciudad abandonada de Pyramiden, un antiguo asentamiento ruso minero, y es espectacular ver como dejaron todo tal cual estaba cuando salieron de allí (como si hubiesen salido con prisa).

Y aquí ya en Pyramiden nos vino a buscar el barco, dónde pudimos tomar unas cervecitas, celebrar mi cumpleaños :), y comer una barbacoa de carne de ballena, y de aquí de vuelta a Longyearbyen, dónde pasamos el último día visitando esta ciudad, y aprovechando para darnos una buena cena en un restaurante de allí, bien regada con unas cuantas botellas de Marqués de Cáceres.

Bueno, se me dejo muchas cosas la verdad, pero lo mejor es que veáis las fotos (aunque aún no he heco una buena limpia) en: http://www.flickr.com/photos/lfraile/sets/72157622340817135/

 

 

Y si tengo que resumir aún más, no puedo decir más que ya estoy deseando volver de viaje con un grupo como este, y con todo el estupendo trabajo que hace la gente de Tierras Polares, y poder ver y descubrir nuevos paisajes como estos.

VSTS2010 En el CodeCamp en Tarragona

Pues si otro eventito, y es que el 16 de octubre se celebrará en Tarragona un nuevo CodeCamp, y allí estaré, con mis compañeros de MVP (aKa el trío calavera), Bruno Capuano y Rodrigo Corral.

Y como siempre que nos juntamos el trío, pues de que vamos a hablar, ya nos conoceis, somos unos pesaos 🙂 Efectivamente estaremos hablando de las novedades de Visual Studio Team System 2010, bueno de todas no, que no nos daría tiempo, sólo de algunas ….

Pero no os preocupéis, que si no os interesa VSTS2010 habrá un montón más de ponencias interesantes, podéis ver el listado completo aquí: http://www.codecamp.es/Sesiones.aspx

Así que ya sabéis, a ver si nos vemos por allí.

 

[MadNUG] 14 de octubre: ¿Quién ha virtualizado mi solución?

Hola a todos de nuevo, ufff han sido unas largas vacaciones blogueras (que no reales) desde la última vez.

Y bueno, que decir, las vacaciones (ahora si reales) de por medio, de nuevo en kayak, pero esta vez un poquito más lejos (Longyearbyen), pero esa es otra historia que ya os contaré …

Ahora ya de vuelta, aún con bastante lío de cosas, volvemos también de las vacaciones de MadNUG, con un nuevo evento, a cargo de Daniel Matey, en el que nos hablará de virtualización.

El evento será el 14 de octubre, en las oficinas de Microsoft en Madrid como siempre, y para más datos del evento e inscribiros podéis consultar el blog de MadNUG: [Evento] 14 Octubre- ¿Quién ha virtualizado mi solución-

En cuanto a mi … espero poder volver a escribir más habitualmente por aquí en cuanto que vaya dando salida a todos los frentes que tengo abiertos, y traer novedadesd e VSTS 2010, ALM, metodologías, y todas esas cosas que ya sabéis que me gustan.

Un saludo para todos.

Beta 1 de la plantilla de Scrum For Team System de Conchango

Pues sí, además de Team Foundation Server 2010, también se empiezan a vislumbrar futuras plantillas que utilizen las nuevas capacidades.

Y una de estas, y que a mi me gusta, es la plantilla Scrum for Team System, de Conchango, que ya nos anuncian la Beta 1 de su plantilla para TFS 2010. Y nos lo anuncia Simon Benett en su blog, títulando el post 3.0 from 30,000 feet

En este post nos cuenta algunas de las novedades de la versión 3.0 de su plantilla, que estará perparada para TFS 2010:

  • Nuevo modelo de QA, aquí no cuenta mcuho ya que dice que nos hablará de ello más adelante.
  • Soporte para múltiples equipos en múltiples sprints que permiten utilizar esta plantilla para poryectos más grandes con múltiples equipos
  • Mejoras en la plantilla para la planificación, aquí tengo ganas de ver que nos traen, ya que su herramienta Task Board me gusta bastante
  • Mejoras para reforzar el “Done”, ya sabéis que uno de los puntos críticos de Scrum es la definición de cuando sprint está completo, también aquí nos van a traer mejoras para saber cuando el sprint está completadop.
  • Soporte para Lab y Test Manager features (Camano) esto va a estar interesante ….
  • Mejoras en la gestión de los estados de los Work Items, los que ya usáis TFS y los estados de Work Items sabéis que esto a veces es complejo, aquí anuncian mejoras que nos permiten “calcular” las transiciones de estados, hmmm, esto tengo que verlo.
  • Descomposición de tareas, aunque en la versión 2 de la plantilla mejoraron, y sobre todo si usáis el Task Board, si que es cierto que a veces es dejar sprint Work Items huérfanos por error, o perder la composición del PBI, aquí también anuncian que han hecho mejoras para evitar estos errores.
  • Y bueno esto es lo que nos anuncian, habrá que estar al tanto 🙂

    Relaciones entre capas con VSTS 2010 y servicios WCF

    Bueno, leyendo los posts de Bruno acerca de los diagramas de análisis de capas con VSTS 2010, y con mi solución de pruebas de las opciones de análisis de interacción entre capas, he descubierto un pequeño ¿bug?.

    Y es que, una situación muy común en las aplicaciones n-capas, es, que la capa de usuario, como la capa WPF del ejemplo de Bruno, no llama directamente a la capa de negocio, si no a un servicio (en mi caso WCF).

    En el ejempli del análisis de interacción de capas, llamábamos a un servicio WCF, que estaba dentro de la propia solución, en un proyecto de tipo web, pero siendo un servicio WCF, que es fácilmente descubierto, automáticamente a la hora de agregar la referencia al servicio.

    Pues bien, si creamos un nuevo diagrama de capas (layer diagram), siguiendo las instrucciones del post de Bruno, agregamos todas nuestras capas y las relacionamos con los proyectos (incluyendo el servicio), y le damos a la opción Generate dependencies, oh, sorpresa, la dependencia de la capa de usuario con el servicio WCF no la muestra.

    Habrá que investigar si es un bug o es “by design”, para mi es un bug, ya que es una dependencia más, ¿a vosotros que os parece?.

    Integración entre Team Foundation Server 2008 y Blend 3

    ¡AL FIN!!!!!! una de las mejoras que llevabamos pidendo desde hace tiempo, era la integración de Expression Blend con TFS, ya que, para poder integrar bien el rol del diseñador, experto UX, o cualquier otro que use esta herramienta en su trabajo, era básico que pudiesen acceder, al menos, al repositorio de código fuente de TFS 2008.

    Pues bien, en su versión 3, Expression Blend ya se integra, no tengo ahora mismo instalado Blend, pero os dejo una captura sacada del blog de Ed Hintz de esta integración.

    expressionblend3-tfs_2[1]

    Bueno, lo primero que veo es que por ahora sólo parece que se integre con el Version Control, nada de Work Items, informes, builds, etc como el Team Explorer, pero es un buen comienzo 🙂

    Otra cosita de apuntar, es que para que esta integración funcione correctamente, es que hay que meter este patch KB967483, en el servidor de TFS 2008.

    Aquí os dejo esto para todos los equipos que uséis Blend 3 y TFS 2008.

    Análisis de interacción entre capas con VSTS 2010

    Actualmente, la gran mayoría de desarrollos (siempre hay excepciones) se desarrollan con arquitecturas de n-capas. Esto nos da muchas ventajas, que no creo que hagan falta ser enumeradas ahora, sin embargo, todas estas interacciones, especialmente capas de servicios y capas de acceso a datos, son un punto susceptible a los cuellos de botella.

    Una de las novedades del Code Profiler de Visual Studio Team System 2010, es el análisis de interacción entre capas.

    Vamos a hacer un pequeño resumen de como utlizarlo, y un par de conclusiones acerca de el, siempre sin olvidar que estamos ante una Beta 1 ….

    Empezemos con el ejemplo más sencillo.

    Supongamos una aplicación WPF, que llama a una capa de lógica de negocio (con una referencia directa), que a su vez llama a la capa de datos, que se vale de un nuevo ensamblado con las entidades y el acceso a datos mediante Entity Framework, ¿sencillo no?.

    A continuación, con nuestra solución abierta (recordemos que estamos en VSTS 2010), seguimos los siguientes pasos:

    1. En el menú Analyze, seleccionamos Launch Performance Wizard
    2. En la siguiente pantalla siguiente nos preguntará que tipo de profiling queremos hacer, seleccionaremos o bien Sampling  o bien Instrumentation.
    3. Lo siguiente es sobre que proyectos queremos hacer sampling o instrumentación, por ahora, sólo seleccionaremos nuestra aplicación WPF.
    4. Lo último que nos preguntará es si queremos lanzar el profiler cuando cerremos el wizard. Por ahora no queremos ejecutarlo, así que deseleccionamos esta opción.
    5. Ahora vamos a configurar el tier profiling, para esto, pulsaremos botón derecho en la sesión de profiling que hemos creado, y seleccionamos las propiedades:image
    6. Dentro de las propiedades tenemos una nueva opción Tier Interactions , simplemente nos movemos a esa opción y activamos el checkbox.
    7. Ya sólo nos queda pulsar el botón de ejecución de la sesión de profiling: image

    Una vez ejecutada la sesión de profiling, al cerrar la aplicación, se nos genera el informe del profiler, en el menú de sub-informes disponibles, nos debería aparecer un nuevo sub-informe Interactions:image

    Cuando pulsemos en el, se nos mostrará un informe de las interacciones, en mi caso, este es el resultado (recordad que estamos con 3 capas):

    image

    Como podéis ver en el informe, vemos que ha habido una única interacción entre capas, correspondiente a una consulta de SQL Server (la consulta se ve en la parte inferior del informe), y los tiempos de ejecución.

    Uno de los primeros puntos de feedback (que ya he dado), es que en este caso de varias capas, no me dice que capa ha sido la que ha ejecutado la consula, ni el método ni nada, con lo que, a pesar de ser muy buena información, me faltarían datos para saber donde tengo que atacar.

    Vamos a ver el siguiente escenario, este es básicamente igual que el anterior, pero en este caso, entre la capa de presentación WPF, y la capa de negocio, vamos incluir una capa de servicios WCF, simulando un entorno distribuido.

    Los pasos de creación de la sesión de profiling son los mismos, pero, en este caso, debemos seleccionar tanto la capa de usuario (WPF), como la de servicios (WCF), en el listado de proyectos que vamos a examinar, durante el wizard de creación de la sesión.

    El resto de los pasos son los mismos, sin olvidar de activar el check de interacción entre capas. Además aprovecho para comentaros, que cuando agreguéis a posteriori, a una sesión de profiling, nuevos proyectos, activarlo de nuevo, ya que es una propiedad de cada uno de los ensamblados a examinar.

    Ahora, cuando ejecutemos la sesión de profiling, se nos lanzará tanto el interfaz de usuario, como el servicio WCF.

    Una vez terminada la sesión de profiling, si nos movemos al sub-informe de interacciones, tendremos la siguiente información:

    image

    Bueno, lo primero es que me muestra la información de las llamadas a base de datos y al servicio duplicadas (en el código solo hay una a cada capa).

    Y básicamente la información es la misma que antes, en este caso además, tenemos información del servicio al que se ha llamado, pero no el método que se ha ejecutado, ni que capa ha hecho la llamada 🙁 cosas de la Beta supongo.

    Como podéis ver, esa información, en aplicaciones n-capas, es muy valiosa, esperemos que esos puntos de información que he comentado, cambien en la versión final.

    En cualquier caso, es una funcionalidad que me gusta :).