Consultorio de SharePoint - Evento a distancia

por Alejandra Federico  1. febrero 2012

El jueves 2 de febrero Daniel Laco brindará una charla virtual sobre el Branding en SharePoint.

Se llevará a cabo a las 15:00 hs., la apertura de la sala virtual es a partir de las 14:45.

Los esperamos para compartir durante una hora las experiencias en el uso de SharePoint. 


Evento gratuito. 

Para más información e inscripción AQUÍ

Tags:

Sharepoint

Evento Sharing the Point – Buenos Aires – 21/Enero

por Daniel Laco  20. enero 2012

Después de su gran éxito en el 2011 en Asia y Europa, continua la gira mundial de Sharing The Point. En esta ocasión un grupo de evangelistas y expertos de SharePoint de múltiples nacionalidades estarán brindando un conjunto de charlas en Buenos Aires, para arrojar luz sobre el potencial ilimitado de SharePoint para las Organizaciones de todo tamaño y sector.

No te pierdas el nutrido grupo de expertos que participarán del evento: Joel Oleson (USA). Paul Swider (USA), Mark Miller (USA), Dan Holme (Hawaii), Ricardo Muñoz (Costa Rica), Fabián Imaz (Uruguay), Fernando Hunth (Argentina), Mauricio Grimberg (Argentina) y Ariel García Sobrino (Argentina). Ellos estarán compartiendo experiencias, mejores prácticas y lecciones aprendidas durante una gran cantidad de implementaciones de SharePoint de diversos tipos y tamaños realizadas en múltiples países.

Si queres aprender más sobre SharePoint, y al mismo tiempo aprovechar la experiencia de los expertos, te invitamos a reservar tu lugar en el evento que se realizará el sábado 21 en las oficinas de Microsoft Argentina (Bouchard 710 4° – CABA). Visita hoy mismo el Sitio Oficial de la Gira “Sharing The Point Sudamérica”.

El evento será totalmente gratuito. Lo único que necesitas hacer es registrarte haciendo clic aquí.

Los esperamos para compartir el desayuno por la mañana, un almuerzo al mediodía, y un cierre en el que se obsequiarán varios regalos.

Agenda

Horario

Track 1 (Sala Roble)

Track 2 (Sala Ombú)

8:45 – 9:30

Acreditación / Recepción de asistentes / Desayuno

9:30 – 9:45

Bienvenida al evento / Presentación de Sponsors

9:45 -10:45

Social Intranets: Transforming Traditional Portals

  • Audiencia: End User / IT Pro/ Developer/Business
  • Speaker.: Joel Oleson
  • Idioma: Ingles, con traducción

Building the Perfect SharePoint 2010 Farm: Real World Best Practices from the Field

  • Audiencia: IT Pro
  • Speaker.: Michael Noel
  • Idioma: Ingles, con traducción

 

10:45 – 10:55

Break (Café)

10:55 – 11.55

To Host or Not to Host: The Good, the Bad and the Ugly Decisions

  • Audiencia: Business / IT Pro
  • Speaker.: Mark Miller
  • Idioma: Ingles, con traducción

 

Architecting SharePoint for Scalability and Enforceable Governance

  • Audiencia: IT Pro, Information Architects, Governance Body
  • Speaker.: Dan Holme
  • Ingles, con traducción

 

11:55 – 12:35

Almuerzo

12:35 – 12:50

Presentación de Sponsors

12:50 – 13:50

Developing and Extending Enterprise Content Management Features

  • Audiencia: IT Pro, Developer
  • Speaker.: Paul Swider
  • Idioma: Ingles, con traducción

 

Branding SharePoint

  • Audiencia: Developer
  • Fernando Hunth
  • Idioma: Español

13:50 – 14:00

Break (Café)

14:00 – 15:00

SharePoint XXX (Sólo para adultos): El qué y el cómo de una mejora dramática de procesos

  • Audiencia: End User / IT Pro/ Developer/Business
  • Speakers: Mauricio Grimberg, Ariel García Sobrino
  • Idioma: Español

 

Migrate to SharePoint 2010… and live to tell the story.

  • Audiencia: It Pro
  • Speakers: Ricardo Munoz, Fabián Imaz
  • Idioma: Español

15:00 – 15:15

Cierre del evento / Agradecimientos / Regalos

Sponsors del evento

image
Perception Aycron
baufest Vemn
Latinshare

 

La gira sigue por las siguientes ciudades de Sudámerica:

  • Enero 23, 2012 - Montevideo, Uruguay
  • Enero 24, 2012 - Santiago, Chile
  • Enero 26, 2012 - Ciudad de las Estrellas, Antártida

Los esperamos!

Tags:

Sharepoint

Extensible Connectivity Management Agents (ECMA) para Forefront Identity Manager (FIM) - I

por Mauricio Rodriguez  23. diciembre 2011

Forefront_IdentityManager_2010_rgb_180x51_nEGRO

Creo que es apropiado encarar este post desde una de las grandes problemáticas que se esta empezando a dar en la actualidad:

En la medida en que los sistemas de las organizaciones se van multiplicando con el paso del tiempo, la administración de identidades (información de usuarios) entre dichos sistemas se va complejizando volviéndose un trabajo arduo, tedioso y en muchos casos incontrolable. Es importante tener en cuenta los riesgos de seguridad que pueden tener lugar en escenarios de este tipo. Para ilustrar un poco esto, les daré un ejemplo real en unas de las empresas en la cual trabajé:

”La organización contaba con una gran variedad de sistemas y tecnologías como Microsoft Sharepoint, SAP, Oracle, Biztalk, etc. Nos informan que un directivo de alto rango había sido despedido, por lo que tenía que empezar un proceso de baja de usuario en todos los sistemas en los que estaba registrado, con todo lo que esto significa, ya que había varias instancias de este usuario en cada  una de las aplicaciones en las que había tenido actividad. Lo interesante de esta anécdota es que el informe lo recibimos a los últimos minutos de finalizar la jornada laboral un día Viernes, por lo que tuvimos que poner leña al fuego y tratar de ubicar a todos los responsables de cada departamento para pedir la baja de este usuario, si es que aún no se habían retirado. Recuerdo que fue un día largo y nos trajo muchos dolores de cabeza.”

Forefront Identity Manager (FIM) es una plataforma de administración de identidades, credenciales y políticas de acceso de Microsoft, destinada a cubrir este tipo de dificultades.

Voy a desarrollar brevemente y lo más claro posible, qué es Forefront Identity Manager para los que no lo conocen. Y como final y puntapié inicial del próximo post, introducirnos a los Management Agents de FIM.

Introducción

Para comenzar, vamos a ver dos imágenes interesantes. La primera es bastante intuitiva y nos va a servir para armar un mapa mental sobre el concepto de FIM:

 

image

Como pueden ver Forefront Identity Manager 2010, posee la capacidad de integrar identidades de diferentes aplicaciones y datasources, centralizando y sincronizando información. A partir de este sistema centralizado, los administradores pueden definir políticas, manejar credenciales, usuarios y grupos de modo que estos cambios puedan impactar en las aplicaciones o data sources conectados a FIM. Una de las cosas más importantes que nos provee FIM es la posibilidad de personalizar los conectores, pudiendo estos, ser desarrollados en Visual Studio, lo que implica que podamos hacer extensible el manejo y sincronización de los datos hacia cualquier sistema que disponga de una interfaz de comunicación.

En FIM 2010 Disponemos de un Portal basado en Sharepoint y la consola de Sincronización, desde donde es posible visualizar y administrar todas estas operaciones, como las Reglas de Sincronización, Workflows, Mapeos, etc.

Una vez conceptualizado esto, podemos pasar a la siguiente imagen para observar un poco mas en detalle los componentes de la arquitectura de FIM:

image

 

Para el tema en desarrollo nos vamos a concentrar en los siguientes componentes principales: el Portal (2), los Adapters (10), estos serán nuestros Management Agents (MA), el FIMSync (11), el cual es el corazón de esta plataforma que como pueden ver es el encargado de integrar a los Identity Stores y por último el FIM Service que involucra los componentes 5,6,7 y 8.

Para mas información sobre los demás componentes, les dejo el link de msdn http://msdn.microsoft.com/en-us/library/windows/desktop/ff182370.aspx

Como trabajan estos?

Como mencioné antes, FIM dispone de la capacidad de conectar múltiples Identity Stores o DataSources por medio de los MAs. Cada MA que se crea para alguna conexión, dispone de una base de datos propia llamada ConnectorSpace (esta base es creada por FIM cada vez que se crea un MA).

Supongamos que una de las aplicaciones conectadas a FIM realiza alguna modificación en los datos de un usuario, como podría ser la dirección de mail, el teléfono o el lugar de trabajo. El MA de este sistema importará los datos modificados al ConnectorSpace. Luego se ejecuta una sincronización que creará, o actualizara en caso de que existan, estos datos en una base única llamada Metaverse, luego, mediante, una Regla de Sincronización (Synchronization Rule), se detectan que DataSources utilizan estos datos de modo de importarlos a los ConnectorSpaces correspondientes, para finalmente ser exportados a dichos DataSources.  De este modo se mantiene la consistencia de datos referente a usuarios o grupos en todos los sistemas que estén conectados y vinculados mediante las Reglas de Sincronización.

 

 

MVAndCS

Les dejo la documentación en donde puede ver con mayor detalle todos los aspectos de la sincronización:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms698364.aspx

Para nuestro objetivo nos vamos a enfocar sobre los MAs (Management Agents). Los MA son componentes (dlls), desarrollados en Visual Studio .Net, que residen en el servidor de Sincronización, encargados de realizar las operaciones de importación y exportación de los datos.

image

 

Es claro en la imagen, la interfaz que brindan estos MA para la integración de aplicaciones.

En FIM disponemos de una basta lista de MA para crear y configurar, como por ejemplo para integrar SQL, AD, SAP, etc. Pero que pasa si ninguno de estos cumple con los requerimientos del cliente?,  o si nuestro MA tiene que realizar algún proceso en particular?, y aquí ya nos vamos perfilando al tema troncal de este post, tenemos la posibilidad de desarrollar nuestros propios Extensible Connectivity Management Agent (ECMA) a partir una API (Microsoft.MetadirectoryServices.dll) que nos provee FIMSynchronizationService.

En el próximo post estaremos viendo como desarrollar e implementar un Management Agent personalizado para integrar un sistema de  facturación a través de sus WebServices.

Test de Carga: Web Performance Test con Visual Studio 2010

por Diego Rosso  22. diciembre 2011

 

Pequeña introducción

Continuando con el post anterior vamos a mostrar cómo podemos realizar pruebas de carga sobre nuestras aplicaciones web utilizando Visual Studio 2010 en forma más detallada. La idea principal es ver cómo responde nuestra web ante varias peticiones concurrentes y obtener información sobre los Performance Counters de nuestros servidores que nos servirán de base para detectar problemas en la aplicación o en los servidores donde está alojada.

Que son los Performance Counters?

Los contadores de rendimiento son objetos del sistema operativo que nos muestran información sobre el rendimiento del hardware y software, como por ejemplo la memoria, el disco y los procesos.

Un contador es una medida de un parámetro determinado. Estos se organizan en grupos como por ejemplo los que vienen con el sistema operativo que están comprendidos dentro del objeto System y otros que se instalan como los de SQL Server.

Windows trae una herramienta para acceder a los objetos y sus contadores, la misma se llama Performance Monitor, la cual podemos accederla yendo a Incio --> Ejecutar --> y escribir Perform.

 

 

LoadTest1

 

WebTests

Para realizar nuestras pruebas de stress lo primero que debemos hacer es crear nuestros Webtest, en el cual se definen cuáles son las urls sobre las que van a realizarse las pruebas. Algo muy importante es que deben tener instalada la versión Ultimate del Visual Studio 2010 para poder contar con estos tipos de test (la versión 2008 del Visual Studio ya contaba con esta funcionalidad).

Pasos para crearlo.

1. En el visual Studio vamos a crear un nuevo proyecto del tipo Test, para eso ir a New –> Proyect  --> Test --> Test project y generamos el proyecto base de test.

 

LoadTest2

 

2. Eliminamos la clase que nos agrega por default.

 

LoadTest3

 

3. Agregamos un nuevo test del tipo Web Performance Test, haciendo botón derecho sobre el proyecto –> Add --> Web Performance Test

 

LoadTest4

Al hacer esto se nos abrirá el Web Test Recorder, donde debemos ingresar la dirección web que deseamos testear, en nuestro ejemplo ingresaremos www.google.com.ar y vamos a buscar VEMN y veremos como el Recorder va guardando las urls junto con sus parámetros gets, los cuales están dentro de una carpeta llamada QueryStrings Parameters.

 

LoadTest5

Luego cerraremos esta ventana y vamos a quedarnos a nivel de ejemplo con solo la primer URL y sus parámetros.

 

LoadTest6

 

 

 

Ahora debemos agregar a nuestro proyecto un Load test (test de carga) que será el encargado de simular múltiples peticiones sobre la URL que cargamos en el Webtest. Para esto hacemos botón derecho sobre el proyecto y seleccionamos add-->Load Test y se nos abrirá un wizard con su clásica ventana de bienvenida le damos next para para a configurar el test de carga.

 

LoadTest7

 

Lo primero que nos pide es un nombre para el escenario de test que vamos a crear y nos pide seleccionar que tipo de pausas queremos entre la ejecución de las distintas iteraciones, en el ejemplo lo dejaremos como viene por default y le pasaremos al próximo paso.

 

LoadTest8

En este caso nos pide que seleccionemos el patrón de carga el cual puede ser constante donde le definimos la cantidad de usuarios que debe simular de forma constante durante el transcurso de toda la prueba, o incremental que es el que vamos a elegir nosotros para nuestro ejemplo, los parámetros que nos pide son los siguientes

  • · Start User Count: Cantidad de usuarios que se generaran cuando comience la prueba, en nuestro caso pondremos 20.
  • · Step Duration:  Donde definimos la cantidad de segundos que van a pasar hasta que se agreguen más peticiones sobre la URL que estamos testeando, en nuestro caso 15 segundos.
  • · Step User Count:  Cantidad de usuarios que se agregaran una vez transcurrido el tiempo configurado en Step Duration.
  • · Maximun User Count: Donde definimos la cantidad máxima de usuarios a simular.

 

LoadTest9

 

Luego nos pide el modelo a utilizar por el test de carga, en nuestro caso elegiremos el primer modelo basado a partir del número total de pruebas. Podemos ver aquí un detalle de cada uno de estos modelos.

 

 

LoadTest10

 

En el próximo paso del asistente debemos elegir los webtest que deseamos testear en el presente escenario, en nuestro caso vamos a elegir el único que tenemos pero podríamos seleccionar varios y asignar la distribución para cada uno de estos.

 

LoadTest11

Ahora ingresamos las distintas formas de conexión que deseamos testear y la distribución que queremos darle a cada uno.

 

LoadTest12

 

En el próximo paso seleccionaremos los distintos browsers que queremos que el test de carga simule y la forma en que se distribuirá la carga.

 

LoadTest13

 

Ahora debemos ingresar el nombre del equipo que deseamos supervisar que debería ser donde se encuentra alojado el sitio web que estamos probando, este debe ser un servidor el cual se encuentre en nuestra red o nuestra propia máquina. Si nuestro sitio tiene distintos servidores como por ejemplo uno para la BD y otro para donde se encuentra alojado el sitio, podemos agregar ambos haciendo click en add computer.

Debemos seleccionar los performance counter que deseamos monitorear en cada uno de los equipos.

 

 

 

LoadTest14

En el último paso del Wizard, nos pide la duración del test que en nuestro caso lo vamos a dejar en 10 minutos y también podemos configurar si queremos que nos genere un log cada vez que un test falle, entre otras cosas.

Presionamos sobre Finish y podemos ver como quedo configurado nuestro test de carga.

 

LoadTest15

 

Listo! Estamos en condiciones de poner a correr nuestro test y ver el comportamiento de los performance counters de los diferentes equipos supervisados.

 

LoadTest16

 

En nuestro próximo post vamos a ver cómo generar el código de nuestros Webtest para hacerlos más dinámicos y como pasar parámetros a la URL a través de distintas fuentes como pueden ser base de datos, archivos csv o xmls.

Tags:

.NET | Desarrollo Web | Testing | Visual Studio

Manage IT 2011 Online

por Alejandra Federico  12. diciembre 2011

El martes 13 de diciembre se llevará a cabo, como todos los años, el evento sobre “Gestión de Proyectos y Arquitectura de Software”, que el mismo se realizará online.

Vemn conjuntamente con el MUG y Lagash presentarán diversos temas que en apariencia no son centrales en el negocio de IT, sin embargo muchas veces son clave para el éxito o el fracaso de los proyectos. Manage IT es el espacio para hablar de estas cuestiones.

Temario

16:00 – 16:10

 Presentación del Evento

16:10 – 16:30

 El desafío de diseñar aplicaciones para personas  (Ing. Andrés Stang)

16:30 – 17:00

 Caso de Éxito: Implementación de ISO 9001 con Scrum (Mg. Patricia   Scalzone)

17:00 – 17:30

 Tendencias actuales de desarrollo de Software basado en estándares: HTML 5 y  JavaScript (Rodolfo Finochietti)

17:30 – 18:00

 Manejo Documental en la Empresa. El impacto en los costos de una   solución de ECM (Enterprise Content Management)  (Daniel Laco)

 

Para más información e inscripción AQUÍ

Tags: ,

Eventos | Gestión de Proyectos | Metodologías y Procesos

Enlazar dos combos en Cascada en Microsoft InfoPath con listas de SharePoint

por Franco Beperet  29. noviembre 2011

Uno de los temas más comunes a la hora de configurar un formulario digital es el de establecer una dependencia entre dos (o más) combos, es decir, que en base a lo seleccionado en el primer combo se filtren los datos que le corresponde a la opción seleccionada del primer combo en el segundo combo.

Un ejemplo común, y seguramente ya utilizado en algún formulario de la Web, es el de tener dos combos, uno con ‘Provincias’ y otro de ‘Ciudades’ que se basa a lo seleccionado en ‘Provincias’, a su el combo ‘Provincias’ puede depender de un combo padre que sea ‘Países’ y el combo de ‘Ciudades’ tener un combo hijo llamado ‘Barrio’.

En nuestro ejemplo para Microsoft InfoPath trabajaremos con los combos ‘Provincias’ y ‘Ciudades’…

- Configuración Lado SharePoint

Empecemos, lo primero que tendríamos que configurar son las listas en nuestro sitio SharePoint. Primero creamos la lista de ‘Provincias’ (hay que respetar el orden de creación, después se vera porque motivo) configurándola para que al cargarle datos quede de la siguiente manera:

ListaProvincias

Luego crearemos la lista de ‘Ciudades’ a la cual le crearemos dos columnas una de ‘Ciudad’ y otra de ‘Provincia’ con la siguiente configuración:

ConfiguracionListaCiudad

Acá se ve que el motivo de crear primero la lista ‘Provincias’ es porque en la columna ‘Provincia’ de la lista ‘Ciudades’ hay que hacer una referencia a la respectiva columna de la primer lista.

Una vez finalizada la configuración, hay que cargarle los datos para que nos termine quedando la lista de la siguiente forma:

ListaCiudades

Teniendo esto finalizado, ya tenemos nuestra configuración del lado SharePoint finalizado, solo nos queda configurar el lado InfoPath…

- Configuración Lado InfoPath

En el formulario tenemos que crear las conexiones que reciben datos de las listas de nuestro sitio, para ello:

  1. Abrimos nuestro formulario InfoPath.
  2. Vamos a Datos –> Obtener datos externos –> Desde la Lista de SharePoint.
  3. Insertamos la URL de nuestro sitio y luego elegimos la lista ‘Provincias’.
  4. Tildamos las siguientes opciones:RecibirListaProvincia
  5. Tildamos ‘Recuperar datos automáticamente cuando se abre un formulario’ y finalizamos.
  6. Repetimos el punto 3 y punto 4 pero seleccionando la lista ‘Ciudades’.
  7. Tildamos las siguientes opciones:RecibirListaCiudad
  8. Tildamos ‘Recuperar datos automáticamente cuando se abre un formulario’ y finalizamos.

 

Ya tenemos nuestras dos conexiones configuradas. El paso siguiente a las conexiones es configurar los combos…

  1. En las propiedades del combo correspondiente a ‘Provincias’ tildamos sobre ‘Obtener datos de un origen de datos externo’.
  2. Configuramos de la siguiente manera:PropiedadesComboProvincias
  3. Repetimos el Paso 1 pero lo dejamos configurado de la siguiente manera:PropiedadesComboCiudades

 

Ahora hacemos click derecho en el combo de ‘Provincias’ y seleccionamos ‘Reglas’ –> ‘Administrar reglas’ y configuramos la siguiente regla…

  1. Creamos nueva regla del tipo Acción y le colocamos un nombre.
  2. La condición tiene que ser cuando el combo no está en blanco.
  3. Agregamos una acción que sea ‘Establecer el valor de un campo’.
  4. La configuración de esta acción tiene que ser:

- Campo es igual a: ValorCampoRegla- Valor es igual a:ValorRegla

Después agregamos otra acción a la misma regla que sea ‘Realizar consulta usando una conexión de datos’ que tenga como conexión de datos la de ‘Ciudades’ (depende el nombre que se la halla puesto cuando se creo la conexión).

La regla debe quedar de la siguiente forma:

Regla

Hacer una vista previa y comprobar que se va filtrando el combo de ‘Ciudades’ en base a lo seleccionado en el combo de ‘Provincias’.

Tags: ,

Sharepoint

Jornada SCRUM - El espíritu de las metodologías Ágiles

por Alejandra Federico  3. octubre 2011

El Jueves 13 de Octubre realizaremos una jornada en eL MUG sobre:

Scrum-El espíritu de las metodologías ágiles.

Orador: Patricia Scalzone - Viviana Chelini

Resumen: El objetivo principal de esta jornada es introducir a los asistentes en la filosofía de las metodologías ágiles. Los participantes recibirán lo necesario para aprender y entusiasmarse para emprender el desafío de adoptar SCRUM.

El uso de SCRUM no se limita sólo a la gestión de proyectos de software, ya que se puede implementar en proyectos de Marketing, RRHH o de Dirección de una empresa.

En esta jornada, si bien se enseñarán las reglas de la metodología, el verdadero aprendizaje se hará mediante su utilización. Por medio de una dinámica muy interactiva y a través de juegos, se podrá vivenciar una forma diferente de administrar proyectos.

La actividad se compone de varias iteraciones con sus correspondientes intervalos. A fin de profundizar la experiencia los asistentes también compartirán el almuerzo.

Datos del Evento:

Jueves, 13 de Octubre del 2011

de 09:00 a 18: 00 hs.

en el Auditorio del MUG,

Rivadavia 1479, Piso 1°A, Capital Federal.

Para inscripción Aquí


 

Tags: ,

Eventos | Metodologías y Procesos

Jornada de Acceso a Datos en el MUG

por Daniel Laco  22. agosto 2011

El 31 de Agosto estaré participando de una jornada completa sobre temas de Acceso a Datos.

Se desarrollará desde las 9 hasta las 18 en la UADE (Univ. Argentina de la Empresa). 

Salón Auditorio - Lima 717, puerta M, Ciudad de Buenos Aires

En evento está referido a tecnologías, herramientas y técnicas sobre el manejo de datos en programación. Se verán temas como ORM, NoSql, La Nube, etc.

Se pueden registrar aquí

 

HorarioTemaOrador
09:00Keynote – Apertura del eventoMartín Salías
09:10Preview de SQL Server 2011 (Denali)Maxi Acotto
10:10SQL AzureGuadalupe Casuso
11:00Coffee break
11:20¿Por Qué Entity Framework?Daniel Laco
12:10Mobile Data AccessCarlos Perez
13:00Almuerzo Libre
15:20oData / Web APIPablo Cibraro
15:20Web Storage en HTML5Rodolfo Finochietti
16:10Coffee break
16:20Bases de datos NoSQLJohnny Halife
17:10Persistencia con NHibernate 3.2.0Fabio Maulo
18:00Cierre

Nos vemos en el evento !

 

Tags: , ,

ADO.NET | Entity Framework

Testing unitario y TDD con Visual Studio 2010

por Victor Passador  4. agosto 2011

“Creating a unit test helps a developer to really consider what needs to be done. Requirements are nailed down firmly by tests. There can be no misunderstanding a specification written in the form of executable code.” ExtremeProgramming.org

 

Un poco de contexto

Como generalmente sucede en todos los ámbitos, una de las cosas más difíciles de conseguir es el equilibrio, y la creación de Tests Unitarios no queda fuera de esta premisa.

Por un lado es imposible negar los beneficios que aporta contar con pruebas automatizadas, pero por otro lado también se hace difícil contradecir a aquellos que argumentan que es muy costoso su mantenimiento ante cambios en los requerimientos.

No es la idea de este post entrar en un debate interminable defendiendo una postura u otra, sólo me limitaré a decir que no somos fanáticos de los extremos y que si bien consideramos que es indispensable contar con un buen set de pruebas unitarias, tampoco perdemos de vista el costo de su mantenimiento y vamos adaptando el modelo según las necesidades y posibilidades.

Antes de ir directamente a la herramienta, repasemos algunas definiciones.

 

El ABC de las pruebas unitarias

Toda prueba unitaria que se precie de tal, deberá contar sí o sí con las siguientes características:

  • Ejecución rápida
  • Ambito limitado
  • Automatizable y repetible
  • Cualquiera puede ejecutarlo
  • Independiente
  • Alta cobertura de código

 

El ABC del TDD

En el Desarrollo Guiado por Pruebas (Test-Driven Development – TDD) se dice que no existe ningún motivo para escribir código salvo alguna prueba que esté fallando. Esto obliga (a modo de resumen) a trabajar con un ciclo de vida que incluye los siguientes pasos:

  • Ante cada nuevo requerimiento, escribir un test. El test inevitablemente fallará porque no hay código que implemente ese requerimiento todavía.
  • Escribir el código que pase el test. Se deben enfocar los recursos a que el test pase, sin preocuparse por cuestiones “superfluas” (.. del tipo “ya que estamos, agrego una sobrecarga que reciba tal parámetro porque probablemente lo necesite más adelante”). Tampoco por la elegancia del código. El único objetivo es que el test pase.
  • Refactorizar: Es aquí donde se modifca el código para mejorar cuestiones como mantenibilidad, limpieza de código duplicado, etc., sin afectar obviamente la funcionalidad. Esto se comprueba corriendo sucesivamente las pruebas (aquí se ve el beneficio de pruebas que se puedan ejecutar en poco tiempo).

 

Entrando ahora sí de lleno en la herramienta, veamos qué nos aporta en este sentido.

 

Ayudas en la edición de código

Como soporte a la práctica de TDD, Visual Studio 2010 cuenta con algunas funcionalidades orientadas a la mejora en la productividad en este ámbito:

Code Snippets: permiten rápidamente generar clases de test (“testc”) o métodos de test (“testm”)

imageimage

Al escribirse primero las pruebas, obviamente fallaran las referencias a las clases a testear, pero con la generación automática de código, se facilita la tarea de crear el esqueleto de esas clases:

image

image

Intellisense en modo Suggestion: En el modo al que estábamos acostumbrados a usar Intellisense (modo Completion), era fácil agregar una referencia a un tipo o variable existente, pero esto no es muy “TDD Friendly”. En VS2010 existe también el modo Suggestion (se activa con Ctrl+Alt+Space) que muestra, mientras estamos tipiando, un cuadro de texto sobre la lista de tipos sugeridos sin obligarnos a seleccionar ninguno.

image

Ejecución de pruebas unitarias

En cuanto a la ejecución de las pruebas unitarias, más allá de nuestro objetivo de ver muchos iconitos verdes, una de las metas buscadas es conseguir una alta cobertura de código. De nada sirve tener toda una batería de pruebas unitarias si estamos cubriendo (probando) menos de la mitad del código escrito.

La cobertura de código (Code Coverage) es una métrica importantísima que deberíamos obtener para poder certificar que nuestros casos de prueba están cubriendo la totalidad (o la mayor parte posible) del código de la aplicación.

Para habilitar los reportes de Code Coverage en VS2010 tenemos que modificar el archivo “Local.testsettings” y dentro de la opción “Data and Diagnostics” marcar el check correspondiente a “Code Coverage”

CodeCoverageSettings

Una vez ejecutadas las pruebas, en la ventana Code Coverage Results, podremos ver los porcentajes de ese indicador y a su vez, en el editor de código, ver resaltadas las líneas afectadas por la prueba.

CodeCoverageResults

Posts anteriores de esta serie:

Para ir calentando motores …

Contribuyendo a la mejora de calidad de software

Algunas referencias más:

http://geeks.ms/blogs/adiazmartin/archive/2010/01/12/m-225-s-r-225-pido-con-visual-studio-2010-intellisense-para-tdd.aspx

http://blogs.msdn.com/b/ukvsts/archive/2010/03/17/test-driven-development-with-visual-studio-2010.aspx

 

Hasta la próxima!

Tags: , ,

Testing | Visual Studio | ALM

Jornada de Scrum - El espíritu de las metodologías ágiles

por Alejandra Federico  3. agosto 2011

El Viernes 9 de Septiembre realizaremos una jornada en eL MUG sobre:

Scrum-El espíritu de las metodologías ágiles.

Orador: Patricia Scalzone 

Resumen: El objetivo principal de esta jornada es introducir a los asistentes en la filosofía de las metodologías ágiles. Los participantes recibirán lo necesario para aprender y entusiasmarse para emprender el desafío de adoptar SCRUM.

El uso de SCRUM no se limita sólo a la gestión de proyectos de software, ya que se puede implementar en proyectos de Marketing, RRHH o de Dirección de una empresa.

En esta jornada, si bien se enseñarán las reglas de la metodología, el verdadero aprendizaje se hará mediante su utilización. Por medio de una dinámica muy interactiva y a través de juegos, se podrá vivenciar una forma diferente de administrar proyectos.

La actividad se compone de varias iteraciones con sus correspondientes intervalos. A fin de profundizar la experiencia los asistentes también compartirán el almuerzo.

Datos del Evento:

Viernes, 9 de Septiembre del 2011

de 09:00 a 18: 00 hs.

en el Auditorio del MUG,

Rivadavia 1479, Piso 1°A, Capital Federal.

Para inscripción Aquí


 

Tags:

Eventos | Metodologías y Procesos

Acerca de los Autores

Este es el blog del equipo de VEMN SA 
Presentaremos temas que nos parezcan de interés sobre tecnología .NET, Procesos y Metodologías y todo aquello relacionado con el proceso de desarrollo de Software

Month List

BlogRoll

Download OPML file OPML