September 2009 - Artículos

 

 

Buenas,

a ver que sigo reciclando y esta vez no son latas de cervezas sino un proyecto simplemente impresionante que lleva adelante Martin Woodward para brindar capacidades de integración de entornos Mainframe con TFS. Por si no lo sabías, este personaje (compañero MVP) es uno de los padres de Teamprise, ese pequeño plugin para Eclipse que permite integrar proyectos proyectos Java utilizando TFS, en otras palabras lleva el concepto de ALM de Microsoft a un mundo no Microsoft.

Pues bien, Martin ha dicho que después de lo de Eclipse se ha quedado un poco mosqueado y la solución ha sido llevar el entorno de integración al mundo de Mainframes, vamos que da miedo cuando se aburre … :D

Lo bueno: si nos basamos en lo que ha hecho con Eclipse, el producto puede ser simplemente genial

Lo malo: hay que soltar unos €urakos para utilizarlo.

 

Fuente: http://www.woodwardweb.com/vsts/tfs_on_the_main.html

Saludos @ Home

El Bruno

Buenas,

estos últimos días no tenido delante un ordenador para poder probar algunas cosas que tenía pendientes, en cambio me he dedicado a navegar por la web dando vueltas como un tornillo en los pocos minutos libres que he tenido. Este ir y venir hizo que me entere que algunos productos muy interesantes que había conocido en sus fases Beta, han llegado ya a la versión 1.0 y pueden ser considerados como finales.

Uno de ellos es el IIS Database Manager, que como su nombre lo indica es un gestor de bases de datos integrado en IIS. En otras palabras, es un plugIn para la consola de administración del IIS que nos permite administrar nuestras bases de datos como si fuese el “SQL Server Management Studio”.

Entre algunas de las características interesantes que puedo nombrar de este producto, quiero mencionar

  • Permite agregar, editar y eliminar tablas y datos
  • Permite la administración de las vistas de base de datos
  • Permite crear, modificar y ejecutar procedimientos almacenados
  • Posee una integración completa en IIS 7.0/7.5 Remote Management
  • Es posible instalarlo utilizando Web Platform Installer
  • etc.

Si quieres más información puedes darle un vistazo a estos contenidos

 

Saludos @ New Home

El Bruno

Fuente: http://blogs.iis.net/rlucero/archive/2009/09/25/iis-database-manager-version-1-0-released.aspx

Publicado 30/9/2009 21:42 por El Bruno | con no comments
Archivado en: ,

Visual Studio Team System 2010

Buenas,

en el mes de Octubre nuestros amigos del equipo de producto de Visual Studio Team System lanzarán la Beta 2 de Visual Studio Team System 2010. En esta versión podremos ver muchas novedades de bajo nivel como por ejemplo como cambia la gestión de archivos en el Source Control con el actual modelo de TFS (ya lo sé, el tema es extremadamente friki, pero me gusta), y otras cosillas más.

Lamentablemente, como la versión no sale a la luz hasta finales del mes de Octubre no la podremos mostrar en el CodeCamp (donde volveremos con Luis y Rodrigo a reventar Team System en extremadamente excasos 60 minutos); pero si quieres darle un primer vistazo a la nueva arquitectura soportada por TFS 2010 y a algunos conceptos de administración, este webcast es para ti.

Datos del WebCast: http://blogs.msdn.com/charles_sterling/archive/2009/09/18/get-ready-for-team-foundation-server-2010-beta2-chat-with-the-tfs-setup-and-admin-team.aspx

 

Saludos @ ¿?

El Bruno

PD: perdón por el post tan light, pero después de unos días complicados me meto de nuevo al mundillo de a poco.

 

Buenas,

actualización con los posts, HowTos, posts sobre informes, builds, etc. sobre Team Foundation Server 2008 principalmente aunque algunos son comunes para Team Foundation Server 2005:

How To

Herramientas

Team System Web Access

TFS Errors

TFS Build

TFS WareHouse e Informes

Metodologías y Process Templates

Administración y mantenimiento

Varios

Saludos @ Here

El Bruno

 

 

Buenas,

Jeff Bramwell, un compañero MVP, ha creado una CheckIn Policy para Team Foundation Server 2008 bastante interesante: Check for Warnings/Errors Check-in Policy. Como el título del post y su nombre lo indican esta política verifica antes de cada acción de CheckIn si el proyecto actual sobre el que estamos trabajando ha compilado correctamente y si existen avisos de Error o Warning.

La política viene empaquetada en un MSI (que se puede descargar desde aquí) y una vez instalada, podemos agregar la misma a un Team Project siguiendo los siguientes pasos.

Tutorial

1. Seleccionar el Team Project sobre el que queremos trabajar

2. Desplegar el menú contextual y seleccionar la opción Team Project Settings // Source Control.

image

3. En la configuración de Source Control, seleccionar la pestaña Check-in Policy y agregar la política Check for Compilation Warnings and Errors Policy (pedazo de nombre !!!)

image

 

4. Una vez agregada es posible configurar la política para que la misma valide frente a Warnings, Errores o ambos.

image

 

5. Siguiendo con el ejemplo, cuando queremos por ejemplo hacer un CheckIn de un proyecto que posee una serie de errores, como se muestra en la siguiente imagen.

image

 

6. La ventana de CheckIn nos notificará sobre los errores como políticas inválidas para el CheckIn.

image

 

Asi que ya saben, si alguien quiere, puede agradecerle a Jeff Bramwell por esta utilidad.

 

Saludos @ Sunny Place

El Bruno

Buenas,

imagesi eres de los que alguna vez tuvo que administrar o explicarle a una persona de sistemas como se administra un servidor de Team Foundation Server, seguramente te has encontrado con que bajo algo tan simple como un servidor de desarrollo se esconden entre 5 o 7 bases de datos: una para el control de versiones, otra para la gestión de WorkItems, otra para los adjuntos y un par más que dan soporte a todo el server. Uno de los grandes problemas en estos escenarios, es que los escenarios de BackUp/Restore eran un poco complicados y mejor ni hablar las migraciones entre servidores TFS.

En Team Foundation Server 2010 el modelo orientado a Team Project Collections (de las que ya hable un poco aquí y aquí) agrupa los conceptos propios de cada colección en una única base de datos. De esta forma en un servidor base de TFS 2010, existiran 2 bases de datos propias del server y luego una nueva para cada TPC.

En un servidor con las TPCs que se muestran en la imagen (ElBrunoCollection y TPC01) existirán 4 bases de datos:

  • TFS_Config
    La base de dator principal del TFS que contiene toda la información de configuración del mismo: información propia del server e información de las Team Project Collections.
  • TFS_Warehouse
    Contiene información de negocio (BI) de todos los TPCs para explocar y analizar los mismos. Básicamente permite tener una única base de datos para analizar uno o más Team Project Collections.
  • TFS_ElBrunoCollection
    Esta base de datos es propia del TPC [ElBrunoCollection] y posee la información para: version control, work item tracking, build, etc.
  • TFS_TPC01
    Esta base de datos es propia del TPC [TPC01] y posee la información para: version control, work item tracking, build, etc.

Lo bueno de este modelo es que si deseamos eliminar, mover, restaurar un TPC, simplemente moviendo la base de datos correspondiente, ya tenemos casi todo el trabajo realizado.

Finalmente no quiero dejar de comentar, que también existirán las bases de datos propias de Sharepoint y Reporting Services que dan soporte a TFS 

 

Saludos @ Bilbao

El Bruno

Buenas,

y llegó el 10mo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio Team System 2010 (aka “What’s new in Visual Studio Team System 2010”). En unas semanas llega la Beta 2 (con fuerza tal vez la veamos en el CodeCamp) pero mientras en las releases intermedias, lo que me ha llamado la atención es que se ha mejorado mucho el rendimiento, se han incoporado features prometidas pero no vistas (item mode vs slot mode) y que va tomando forma como producto final.

Asi que por ahora, a actualizar el listado de links.

WorkItems

Source Control

TFS Build

Herramientas de Modelado

Visual Studio

Visual Studio Test

Infraestructura y Mantenimiento

Process Guidante

Varios

Como todavía queda mucho material por comentar y muchos posts por crear, actualizaré este listado periódicamente.

Saludos @ Home

El Bruno

Buenas,

si estás por el SIMO en Madrid en estos días, mis compañeros de Avanade estarán dando un par de sesiones más que interesantes.

  • clip_image002Silverlight en Aplicaciones de Negocio” en la Sala Taiga.

Día 22 Septiembre (martes). 12:30 h

“Como aprovechar las capacidades de Silverlight para potenciar aplicaciones de productividad y usabilidad para usuarios finales , ejemplo práctico de Escritorio para directivos”

  • Racionalización de aplicaciones para Windows 7” en la Sala Sabana .

Día 22 Septiembre (martes). 16:30 h

“¿Queremos rentabilizar las inversiones en infraestructuras actuales? ¿Reducir los costes en el CPD? ¿Un entorno más “verde”? … ¿y no sabemos cómo empezar? Averigüe como vender y justificar su proyecto de virtualización con Hyper-V R2 internamente”

  • clip_image002[5]Acelerando el Business Case de la Virtualización” en la Sala Taiga.

Día 24 Septiembre (jueves) 13:30 h

“La clave del éxito de la migración a Windows 7 radica en tener el control de las aplicaciones y la certeza de que las mismas se comportarán debidamente en la nueva plataforma, pero ¿sabemos cuántas aplicaciones tenemos? ¿Cómo podemos controlar y simplificar el catálogo? Y ¿cómo acelerar el proceso de migración y reducir costes a la vez?”

Supongo que las sesiones de Windows 7 y virtualización consisirá en poner un DVD de W7 y mostrar el Next->Next->Next->Finish del instalador, y en la sesión de virtualización es lo mismo pero en una máquina virtual; pero en la sesión de Silverlight se mostrará una aplicación para directivos muy interesante desarrollada en SL que la verdad puede ser muy interesante desde el punto de vista de las experiencias del paso al desarrollo en una tecnología como Silverlight.

Pues bueno, ahí queda el dato, después me cuentan que tal la presentación.

 

Saludos @ La tierra de los chuletones y la lluvia torrencial

El Bruno

Banner2Buenas,

el próximo 17 y 18 de Octubre se celebrará otra edición del CodeCamp, esta vez en Tarragona. Este año tengo la suerte de ser invitado a esta altura aceptan a cualquiera y poder participar en 2 sesiones: Microsoft Robotics y Visual Studio 2010, pero en realidad lo mejor de estos eventos es el networking que se puede hacer, ponerle cara a personas que conocemos solo virtualmente, ver como profesionales de alto nivel opinan sobre temas delirantes, aguantar cargadas por lo dificil que tenemos para llegar al mundial con Argentina, etc.

Si quieres más información puedes darte una vuelta por http://www.codecamp.es/; y si estás por allí esos días, la primera cervecita corre a cuenta mía (aún sabiendo que una declaración de este tipo puede salir muy caro por internet)

Nos vemos en Tarragona.

Saludos @ Current Home (no por mucho)

El Bruno

 

PD: esta vez creo que voy con Valentino y mi chica, y espero poder armar algo chulo con el robotito + el enano que no implique tener a la gente de protección al menor sobre mis espaldas.

Buenas,

antes que se me haga muy tarde y me olvide; publico la presentación con la que presenté las noveades de VSTS 2010 con los chicos de la UOC hace unos minutos. Esta vez dejaré la presentación en SlideShare a ver que tal va y si alguien la quiere en formato original, me avisa y se la envío por correo. Además comentar como hecho histórico que en los 120 minutos de la sesión Visual Studio solo se colgó 2 veces, y en ambas ocasiones tratando de implementar el intellisense, con lo que ya lo doy por estable :D

 

 

 

Saludos @ Home

El Bruno

 

 

Buenas,

hace unos días la gente de Telerik publicó dos aplicaciones, completamente desarrolladas con su suite de componentes RAD para WPF para trabajar con WPF. Una de estas herramientas es un tablero de control, que dependiendo de la plantilla de un Team Project muestra información relativa al mismo como por ejemplo:

  • Histórico de Builds
  • Velocidad del Equipo
  • Evolución de la Cobertura de Código
  • Lista de CheckIns
  • Último usuario que “rompió una build
  • etc.

Es visualmente muy impactante ya que se ejecuta en modo full screen y presenta un look and feel como:

image

image 

Descarga: http://www.telerik.com/products/tfsmanager-and-tfsdashboard.aspx

 

Saludos @ Bilbao

El Bruno

Buenas,

una de las novedades que incorporan los Team Project Collections en TFS 2010 es la capacidad de poder detener los mismos en tiempo de ejecución sin la necesidad de detener todo un servidor TFS. De esta forma, en un único servidor donde residan varios Team Project Collections, si deseamos mover un TPC a un nuevo servidor, podremos detener el TPC y definir un mensaje personalizado para que los usuarios que intenten conectarse al mismo sepan el estado.

Para esto, desde la consola de administración de TFS 2010, seleccionamos un TPC y presionamos el boton [Stop Project Collection]

image

En este momento debemos incluir la razón por la que se quiere detener el funcionamiento del TPC

image

 

Y desde la misma consola veremos que está detenido y el mensaje que se mostrará a los usuarios que intenten conectarse al TPC.

image

 

Aquellos usuarios que ya estén trabajando desde Visual Studio con algún Team Project dentro de TPC, verán el siguiente error: TF205020: A connection could not be made to the following server: …

image 

 

Y aquellos usuarios que intenten agregar un TP desde el formulario estandar del Team Explorer verán el siguiente mensaje: TF31001: Cannot connect to Team Foundation Server at …

 

image

 

Saludos @ Here

El Bruno

image

Buenas,

hace unos días leía en el blog de Scott Hanselman (un blog altamente recomendale si eres humano y te gustan los unos y los ceros) sobre un nuevo proyecto de MS llamado CodePlex Foundation.

Lo primero que pensé fué que le habían dado alguna vuelta extraña a CodePlex pero en realidad es bastante diferente.

Lo primero que llama la atención es que CodePlex Foundation es una organización sin animo de lucro del tipo 501.c6 completamente separada de Microsoft. Se ha creado para ayudar a los desarrolladores de software comercial en el uso de Open Source.

… CodePlex Fundación es una extensión de la marca establecida por CodePlex Codplex.com. Codeplex.com ha construido una comunidad fuerte, con más de 10.000 proyectos y además se ha constituido en una marca reconocida. CodePlex.com fué lanzado en junio de 2006 bajo la necesidad de un sitio para alojar projectos. El siguiente capítulo en la solución de este reto es la Fundación de CodePlex (Codeplex.org). La Fundación es la solución de problemas similares, en última instancia, el objetivo de juntar a los desarrolladores de código abierto y de software comercial juntos en un lugar donde pueden colaborar. Esto es absolutamente independiente del tipo de proyecto. Es simplemente la resolución de una parte diferente del reto, una parte que Codeplex.com no está diseñado para resolver. … (traducción casi textual)

Me alegra contar con otra nueva iniciativa para complementar un tipo especial de proyectos que CodePlex no cubría de forma completa. Veremos como evolucionan los proyectos en este nuevo site y como se llevan los mismos.

 

Saludos @ T4

El Bruno

Publicado 14/9/2009 9:05 por El Bruno | con no comments
Archivado en: ,

 

 

Buenas,

hace un par de días en los foros de Team System Julio planteaba un escenario donde era necesario copiar el resultado de una compilación a una ubicación determinada. Una de las soluciones consiste en modificar la definición de la Build en TFS, para que después de compilar y ejecutar las pruebas se copien las mismas.

El siguiente paso a paso demuestra como copiar solo el resultado de las pruebas, la carpeta [TestResults] al directorio [C:\FTP].

Tutorial

1. Para copiar el directorio completo utilizaremos una bibilioteca de tareas para TFS Build: SDC Tasks, ya que la tarea Copy que posee MSBuild no es lo suficientemente potente para este escenario.

2. SDC Tasks se puede descargar desde http://sdctasks.codeplex.com/ y luego debemos copiar el contenido de la release al directorio de MSBuild [C:\Program Files\MSBuild].

image

3. Editamos una definición de build, en este caso llamado [Hola Mundo Build]. Nota: Podemos utilizar este post como ejemplo para editar un build.

4. En la cabecera importamos el archivo que nos permite utilizar las SDC desde la definición del Build, en este caso la línea 5.

   1: <Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
   2:   <!-- Do not edit this -->
   3:   <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
   4:   <Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
   5:   <Import Project="$(MSBuildExtensionsPath)\Microsoft.Sdc.Common.tasks" />
   6:   ...
   7: </Project>

5. Agregamos un nuevo Target, en este caso el que se ejecuta después de copiar los archivos de la compilación; y dentro del mismo utilizamos la tarea Fodler.Copy (línea 13) para copiar el resultado de los tests de una build al directorio FTP, utilizando además el número de la build para identificar los resultados.

   1: <Target Name="AfterDropBuild">
   2:  
   3:   <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
   4:              BuildUri="$(BuildUri)" Name="CopyFilesToFtp" 
   5:              Message="Start copy files to FTP Location from $(DropLocation)\$(BuildNumber)\TestResults">
   6:     <Output TaskParameter="Id" PropertyName="CopyFilesToFtpId" />
   7:   </BuildStep>
   8:  
   9:   <CreateItem Include="$(DropLocation)\$(BuildNumber)\TestResults" >
  10:     <Output ItemName="FolderToCopy" TaskParameter="Include" />
  11:   </CreateItem>
  12:  
  13:   <Folder.CopyFolder Source="@(FolderToCopy)" Destination="C:\FTP\$(BuildNumber)" />
  14:  
  15:   <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
  16:              BuildUri="$(BuildUri)" Name="EndCopyFiles" Id="$(CopyFilesToFtpId)" 
  17:              Message="End copy files to FTP location from $(DropLocation)\$(BuildNumber)\TestResults" 
  18:              Status="Succeeded" />
  19:  
  20: </Target>

6. Para mostrar los pasos de ejecución del build, utilizamos BuildSteps (ver líneas 3 y 15; para referencia ver este post). De esta forma, cuando se ejecuta un build, podemos ver lo siguiente.

image

7. De esta forma, cada vez que se ejecute un build y se generen resultados de tests, los mismos se copiarán a la carpeta C:\FTP.

image

 

Saludos @ Madrid (Finally !!!)

El Bruno

 

 

Buenas,

hoy el amigo Julio preguntaba en los foros de Team System en español si es posible definir de alguna manera un orden específico para ejecutar pruebas unitarias. Como es un crack, no dió tiempo a que nadie le responda y él mismo respondió su pregunta: utilizando los Ordered Tests.

En MSDN existen un par de artículos que explican bien como utilizar los mismos, pero si alguien se queda con ganas de una explicación más hogareña, el siguiente tutorial puede ser de configuración.

Tutorial

1. Suponemos que tenemos una solución con varias pruebas unitarias:

image

y que deseamos ejecutar en orden las siguientes pruebas unitarias:

  • GetHolaMundoTest_001
  • GetHolaMundoTest_002
  • GetHolaMundoTest_003

2. Seleccionamos el proyecto de pruebas y agregamos un nuevo elemento del tipo Ordered Tests, al que llamaremos [TestOrdenado]

image

3. Una vez agregado podremos ver que el mismo nos presenta un formulario donde podremos definir a partir de nuestras listas de test un orden específico para las pruebas que deseemos.

4. A continuación seleccionamos los tests en el orden que definimos el punto 1 y los agregamos a la lista [Selected Tests]

image

5. Es posible configurar la ejecucion para que la misma se detenga si un test falla utilizando el check [Continue after failure].

6. Si vemos nuevamente la lista de tests, podremos ver que nuestro elemento TestOrdenado aparece como un nuevo test en la misma.

image

7. Si ejecutamos el test podremos ver que si bien en la lista de tests aparece como un único elemento, la cantidad de tests que realmente se ejecutan es 4: TestOrdenado mas los 3 tests internos.

image

8. Si deseamos más detalle, podemos hacer doble click sobre el test y veremos una ventana de detalle con la ejecución de los tests internos del Test Ordenado:

image

 

Una vez más, una solución bastante simple y poderosa a un problema bastante común dentro de Visual Studio Team System.

 

Saludos @ Bilbao

El Bruno

imageBuenas,

hoy es mi último día de vacaciones, en un rato me tocan más de 10 horas de vuelo para volver a Madrid, y hay que empezar a ponerse al día con el trabajo y con el día a día. Por suerte los chicos del UOC DotNetClub, me ayudan porque han organizado un WebCast para hablar de Team System 2010 y me han invitado a mi como ponente.

El mismo será el próximo viernes, 18 de septiembre de 2009 (18:00 Madrid, París) y el temario es el clásico

En el evento trataremos de dar un recorrido general a Visual Studio Team System 2010. La nueva versión de la suite de desarrollo de Microsoft que pronto se lanzará al mercado posee muchas novedades y como es casi imposible nombrarlas a todas en el webcast trataremos de mostrar rápidamente algunas novedades en Team Foundation Server 2010, los cambios que se han incluido dentro de las nuevas versiones de C# y Visual Basic .NET; y muchas características novedosas como el nuevo IDE basado en Windows Presentation Foundation, los diseñadores de la versión para arquitectos y el nuevo modelo de administración de servidores. Vamos, que material nos sobra !!!

Pero con la novedad de que la última versión ya nos permite ver en funcionamiento cosillas como las mejoras en la gestión del código fuente: Item Mode vs Slot Mode, las configuraciones del nuevo Build, etc.

La URL para la inscripción del evento es la siguiente http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032425658&Culture=es-ES

Saludos @ Mom’s House

El Bruno

Buenas,

hace un par de días me junté con unos amigotes a tomar unas cervecitas y hablar sobre el pasado como los viejos cuando coincidíamos en una empresa de desarrollo de software. Ahora que en abril cumplí mi 10mo aniversario frente a un ordenaror y en octubre cumpliré mis 10 años con tecnologías Microsoft, todavía estoy asombrado en este mundillo de la informática por el dinamismo que posee. La evolución es constante, requiere una actualización constante y además una capacidad de aprender bastante potente, para poder “estar al día”.

Vamos, que no es fácil, pero tampoco es complicado. Me explico, cada persona tiene su propia idiosincrasia, pero siempre hay diferentes modelos con los que podemos encasillar a las mismas. Hoy quiero hablar de 2:

  • Los gurús que son superexpertos sobre un tema en especial .
  • Los no gurús que pueden aprender algo sobre la marcha de una manera natural.

Personalmente sé que soy del 2do grupo, y la forma que tengo de afrontar mis desafíos es conocer un poco de lo necesario para sobrevivir y luego cuando llego a un problema en particular que me requiere conocimientos específicos, pues ponerme a estudiar y también preguntar a expertos en cada tema. Asi es que, si bien conozco las bases, nunca he tenido que pegarme muy fuertemente con WF; pero si algún día me toca se por donde empezar y por donde atacarlo.

Ahora bien, hace unos años mi forma de ser era diferente y trataba de estudiar como un caballo de carga para ser un super experto. Pero con el tiempo, tuve que comenzar a comprender que la tecnología no solo avanza a pasos agintadados, sino que también se diversifica y que ser un experto en todas las tecnologías es una tarea virtualmente imposible para aquellos como yo con un IQ de 77.

Creo que lo mejor es:

  • conocer el funcionamiento generar de mismas
  • saber como se interrelacionan entre sí
  • conocer un poco el roadmap y el futuro de las tecnologías en general
  • entender los principios de arquitectura y ejecucion que implica su uso
  • conocer las limitaciones que poseen
  • tener a mano algún correo para preguntar en casos extremos

y con estas bases, tomar decisiones y actuar en consecuencia.

Pero bueno, hoy es viernes, y no voy a negar que mi tecnología preferida es esa suite de herramientas con un IDE de color azul en su versión 2010 y que cuando tengo que probar algo lo hago por este lado. Por eso escribí estas pocas líneas, para recordarme a mi mismo dentro de 10 años como funcionaba El Bruno del año 2009.

 

Saludos @ la tierra del mate

El Bruno

 

 

Buenas,

si eres del tipo de persona que por cada línea de código que escribe, siempre está pensando en la o las pruebas unitarias asociadas a la misma; seguramente te habrás preguntado porqué es tan dificil crear pruebas automáticas para aplicaciones Windows?. Yo ya he escrito algo sobre las capacidades para las Coded UI Tests que podremos disfrutar dentro de poco en Visual Studio 2010, pero una de las tecnologías detrás de todo este tinglado es la Microsoft UI Automations Library y la verdad es que si bien es muy potente, es un tanto complicada de implementar.

En CodePlex he encontrado un proyecto llamado White, que encapsula las complejidades de estas bibliotecas y permiten tener un unico entorno de pruebas para aplicaciones Win32, Windows Forms, Windows Presentation Foundation y SWJ (Java).

He creado mi prueba de escritorio con la calculadora, y después de ejecutar la herramienta para crear un “wrapper” de la calculadora

image image

he generado el siguiente código que me permitirá trabajar con la Calculadora con un modelo de objetos bastante comprensible.

   1:  using Core.UIItems;
   2:  using Core.UIItems.WindowItems;
   3:  using Repository;
   4:  public partial class Calculator : Repository.AppScreen {
   5:      private Core.UIItems.WindowStripControls.MenuBar Application;
   6:      private Core.UIItems.Panel ;
   7:      private Core.UIItems.Image ;
   8:      [Repository.ScreenAttributes.AutomationIdAttribute("Running History")]
   9:      private Core.UIItems.Label RunningHistory;
  10:      [Repository.ScreenAttributes.IndexAttribute("20", 0)]
  11:      private Core.UIItems.Label 20;
  12:      [Repository.ScreenAttributes.IndexAttribute("21", 1)]
  13:      private Core.UIItems.Label 21;
  14:      private Core.UIItems.Label Memory;
  15:      [Repository.ScreenAttributes.AutomationIdAttribute("Memory clear")]
  16:      private Core.UIItems.Button Memoryclear;
  17:      [Repository.ScreenAttributes.AutomationIdAttribute("Memory recall")]
  18:      private Core.UIItems.Button Memoryrecall;
  19:      [Repository.ScreenAttributes.AutomationIdAttribute("Memory store")]
  20:      private Core.UIItems.Button Memorystore;
  21:      [Repository.ScreenAttributes.AutomationIdAttribute("Memory add")]
  22:      private Core.UIItems.Button Memoryadd;
  23:      [Repository.ScreenAttributes.AutomationIdAttribute("Memory subtract")]
  24:      private Core.UIItems.Button Memorysubtract;
  25:      private Core.UIItems.Button Backspace;
  26:      [Repository.ScreenAttributes.AutomationIdAttribute("Clear entry")]
  27:      private Core.UIItems.Button Clearentry;
  28:      private Core.UIItems.Button Clear;
  29:      private Core.UIItems.Button Negate;
  30:      [Repository.ScreenAttributes.AutomationIdAttribute("Square root")]
  31:      private Core.UIItems.Button Squareroot;
  32:      private Core.UIItems.Button 7;
  33:      private Core.UIItems.Button 8;
  34:      private Core.UIItems.Button 9;
  35:      private Core.UIItems.Button Divide;
  36:      private Core.UIItems.Button Percentage;
  37:      private Core.UIItems.Button 4;
  38:      private Core.UIItems.Button 5;
  39:      private Core.UIItems.Button 6;
  40:      private Core.UIItems.Button Multiply;
  41:      private Core.UIItems.Button Reciprocal;
  42:      private Core.UIItems.Button 1;
  43:      private Core.UIItems.Button 2;
  44:      private Core.UIItems.Button 3;
  45:      private Core.UIItems.Button Subtract;
  46:      private Core.UIItems.Button Equals;
  47:      private Core.UIItems.Button 0;
  48:      [Repository.ScreenAttributes.AutomationIdAttribute("Decimal separator")]
  49:      private Core.UIItems.Button Decimalseparator;
  50:      private Core.UIItems.Button Add;
  51:      protected Calculator() {
  52:      }
  53:      public Calculator(Core.UIItems.WindowItems.Window window, Repository.ScreenRepository screenRepository) : 
  54:              base(window, screenRepository) {
  55:      }
  56:  }

Obviamente, el proyecto está un poco verde, pero pinta muy bien y a partir de este punto es cuando puede ser interesante, especialmente teniendo en cuenta que soporta además de Winforms, WPF y Silverlight.

 

Saludos @ Cold Winter

El Bruno

Recursos

Publicado 3/9/2009 18:29 por El Bruno | con no comments
Archivado en:

Buenas,

una de las ventajas que posee el modelo de WorkItems implementado en Team Foundation Server, es que el histórico que se almacena para cada implementación de un Workitem puede ser consultado para nuestro provecho. De esta manera, es posible saber si un campo de una tarea o un bug, por ejemplo, en algún momento tuvieron un valor determinado. Para esto podemos utilizar el operador “Was Ever” dentro de una WorkItem Query.

Supongamos que tenemos un WorkItem (54) donde el campo Assigned To ha cambiado varias veces, como muestra la siguiente imagen.

image 

Si creamos una consulta y en la misma definimos una de los filtros para el campo Assigned To con el operador Was Ever y un valor determinado.

image

Podremos ver como ejecutando la consulta obtenemos resultados donde, por ejemplo el WorkItem 54, no posee el valor deseado en el campo Assigned To, pero si lo tiene en su histórico.

image

 

Saludos @ Valentino’s Place

El Bruno

PD: si bien los ejemplos del post están con Visual Studio 2010 y Team Foundation Server 2010, esta feature está disponible desde la version actual 2008:

image