lunes, 3 de mayo de 2010

Curso introducción al testing en SADIO

Hace un par de semanas realicé una reedición del curso de Introdución al Testing de Software en SADIO (ver curso previo).

Dejo disponible el material
aquí.

Si usan el material, dos consideraciones:
  • Tiene más contenido que el que se puede incluir en dos días. Decidí dejar el material como referencia para los asistentes.
  • La idea de "Introducción" es relativa, asumo que no hay duda sobre la necesidad de probar, y asumo que se trata de hacer desarrollo iterativo e incremental. Espero postear más sobre esto en breve.
  • Han quedado algunas partes de la presentación en inglés. Espero terminar de pasar a español en el futuro.

lunes, 1 de marzo de 2010

Agile Open Buenos Aires 2010

Ágiles Argentina te invitan a la próxima experiencia comunitaria: el Agile Open Buenos Aires 2010.

Tema: Calidad en el desarrollo de Software
Cuándo: 13 de marzo
Dónde: UNTREF - Sede Centro Cultural Borges - Viamonte esq. San Martín 3p.

Sobre el tema
Estamos pensando en CI, B/TDD, ATDD, pair programming, calidad por procesos, ... pero lo importante, ¿qué es la calidad para vos?
Este evento está orientado a los que están aplicado metodologías ágiles y están interesadas en contar experiencias, escuchar y aprender de otros, en todo lo que para vos esté relacionado con la calidad.

Lo hacemos bien liviano en cuanto a organización: compramos pizzas o empanadas en el momento y llevamos mate o café para los breaks. Más información.
(pero si alguna empresa quiere pagar las pizzas o traer catering para los breaks... les agradecemos, me contactan)

Saludos, y nos vemos!

Pueden ver como fue el evento anterior en Buenos Aires (en este blog y en agiles.org).

viernes, 26 de febrero de 2010

jXmlCoverage

La cobertura ayuda a saber lo que no estamos probando. Nos ayuda poco a saber si estamos probando bien lo que estamos probando.

Hay discusión sobre la utilidad de la mediciones de cobertura. Por ejemplo ver el resumen de una discusión sobre el tema, de donde tomo la idea que lo único seguro sobre la cobertura es que nos indica que partes no hemos probado.

Por mi parte, hice un rant sobre el uso del % de cobertura como métrica, sobre todo por parte de personas que aprendieron el concepto sólo como un subproducto de TDD.

Pero si entendemos las características de la cobertura, puede ser una ayuda importante para la actividad de prueba (sea quien sea que haga esa actividad).

Hay muchos tipos de cobertura. Por ejemplo, podemos comprobar si estamos probando que se cumplan los objetivos de negocio, o los requerimientos, si hemos probado todos los riesgos identificados, todo el código o las entradas y salidas del programa.

La cobertura de código es la más común de las métricas de cobertura, quizás porque es la más fácil de medir. Incluso dentro de las cobertura de código, hay muchas posibles coberturas: de clase, de método, de linea, de instrucción, condicionales, de camino, etc.

En toda métrica de cobertura, se define el universo de los puntos posibles, y luego se mide cuantos de estos puntos están siendo cubiertos por algún caso de prueba.

Por ejemplo, en una cobertura de líneas de código, cada línea es un punto. Si esa linea es ejecutada al correr alguna prueba, se dice que ese punto está cubierto.

Se puede tomar el porcentaje de cobertura como la cantidad de puntos cubiertos sobre la cantidad total de puntos.

Pero como dijimos anteriormente, es más valioso conocer los puntos no cubiertos.

La herramienta

La herramienta que estoy por comentar, jXmlCoverage, mide cobertura basada en los XML utilizados por el Sistema bajo Prueba (en inglés, SUT).

En muchos SUT se utiliza XML, como entrada, salida o configuración. Por ejemplos, los Web Service. En estos SUT, se dispone, o se puede crear, un XSD que corresponda al contrato que daebe cumplir los XML correspondientes.

Nos interesa el grado en que nuestras pruebas ejercitan las diferentes posibilidades de valores en los XML, y sobre todo, saber que valores no estamos probando.

Para esto, debemos definir el universo que queremos medir. Lo que hacemos es, para cada elemento definido en el XSD, decidir las particiones de equivalencia que son interesantes tomar. Por ejemplo, para un entero, podrían ser los enteros positivos, el cero, los negativos y un valor fuera de rango. A esto lo llamamos subdominio. Cada subdominio es un punto sobre el que se medirá cobertura.

Pasada la etapa de definición y configuración del universo de prueba, medimos la cobertura.

Para medir la cobertura se toma el conjunto de los XML usados y se evalúan contra los subdominios, contando cuantas veces un subdominio es utilizado (cubierto) por los casos de prueba.

Como resultado, podemos obtener los subdominios que no fueron cubiertos.

Como en todas las mediciones de cobertura, se debe evitar caer en la tentación de considerar un sub-dominio cubierto como un sub-dominio bien probado.

lunes, 1 de febrero de 2010

Libertad vs estándares

Como parte de la Scrum week @ Bs As, unas 15 personas nos encontramos en las oficinas de Southworks para pensar sobre los problemas y soluciones sobre el Escalamiento en Implementaciones de Scrum (Scaling Scrum). La consigna inicial era hacer una actividad guiada por Tobias, pero lamentablemente no pudo venir, y lo re-definimos como un open space.
Comento una de las sesiones (50 min) que hicimos.

Libertad vs Estándares

Pensamos que los estándar pueden un surgir como una imposición desde fuera del equipo, o como un aprendizaje compartido.
La primera elección debería ser que los estándar sean el resultado de compartir experiencias.
En los casos de imposición, la pregunta es quien impone. Eso nos llevó a hablar sobre quien es el dueño de los estándar (ownership).
En el caso del aprendizaje compartido, la pregunta nos llevó a como compartir el conocimiento.

¿Quién crea y mantienen los estándar? (ownership)

Los personas que están realizando las tareas son las mejor posicionadas para definir estándar sobre como hacer esas tareas. Pero solo lo harán si tienen motivación y liderazgo.
Grupos como las PMO y grupos de Arquitectura suelen ser los que hacen los estándar en muchas empresas. Pero tienen el problema que muchas veces fueron formados con personas que tienen experiencia, pero que luego quedan aislados del día a día de los proyectos. Aún así, sería bueno tener en cuenta toda la experiencia (libros, implementaciones) sobre PMO y grupos de Arquitectura.

Responsabilidad: algunos de los estándar requieren el uso de algún recurso compartido, o sincronización entre equipos. Por ejemplo, los repositorios de fuentes y los ambientes de integración continua. Sin un responsable, se produce una degradación que atenta contra la utilidad del estándar. Tiene que haber una clara responsabilidad. Una persona, un grupo de personas o un equipo.

Disciplina: los estándar deben cumplirse (mientras tenga sentido, ver más abajo). Si el estándar es una restricción auto-impuesta, entonces necesitamos auto-disciplina (auto en este caso es primero individual y luego grupal). Sin auto-disciplina, aparecen los mecanismos para imponer disciplina desde afuera (registros, auditorias) que nos llevan a algo inefectivo.

¿Cómo difundimos los estándar?

No profundizamos mucho en esto. Las formas de comunicación que surgieron son: Wiki y reuniones. Con respecto a las reuniones, el consenso es que debe ir uno o dos miembros de cada equipo. No necesariamente la misma persona, y debe ser la persona que sepa del tema a tratar. Por ejemplo, no tiene sentido que el SM vaya a una reunión sobre estándar de arquitectura. Esta reunión sirve tanto para definir como para comunicar. Luego cada asistente comunica los resultados en cada grupo. Los asistentes pueden ser rotativos, para evitar que surja el “rol de arquitecto”.

¿Qué significa tener un estándar?

Una sugerencia: nos pusimos de acuerdo con una forma de hacer las cosas que nos parece apropiada en muchos de los casos que analizamos. Pero la decisión final sobre aplicar o no es del equipo. Esto está muy ligado con la Disciplina que comentamos antes. Si no hay disciplina, va a haber muchas excepciones. No debería pasar que las excepciones sean comunes, ya que esto indicaría que el estándar no es bueno. Las excepciones son una oportunidad para revisar el estándar, pero no necesitamos un estándar que responda todas las preguntas. Sería demasiado complejo.

La representación del conocimiento actual de equipo extendido: es la forma en que comunicamos las decisiones de arquitectura/diseño, organización, etc. Deben evolucionar a medida que el equipo aprende.

Alineado con los objetivos de la empresa: lo que hacen los equipos debe contribuir a lograr los objetivos de la empresa (*). Mientras se desarrollan y revisan los estándar, es bueno tener esto presente, lo que nos ayuda a traducir los objetivos (alto nivel) con nuestras prácticas (bajo nivel).


En el cierre de esta sesión quedó inconclusa una discusión sobre Scrum y Auto-organización. Hasta donde entiendo: lo que hablamos en la sesión, aplica a Scrum o a cualquier Auto-organización. Implícita está la discusión: Scrum incluye toda forma de auto-organización, o auto-organización incluye toda forma de Scrum, o ninguna de estas.


(*) Mientras escribo este resumen, me encuentro tentado a agregar comentarios propios, no dichos durante la sesion (de la que fui moderador, por lo tanto traté de no participar opinando... mucho). En el caso de los objetivos de la empresa, por ejemplo, sería importante que los principios de Scrum (y/o auto-organización :D) se apliquen a todos los niveles. Por lo tanto, esos objetivos deberían ser un emergente de todos las personas de la organización.

miércoles, 13 de enero de 2010

Semana Scrum en Bs As!

Tobias Mayer ya ha venido varias veces a Argentina, y dio 6 cursos de CSM. Alan Cyment es el único CST hispanoparlante, y dio muchos cursos en Argentina. En enero Tobias nos visita en la semana del 25 al 26 y aprovechamos con varios actividades:

Enero 25: Scaling Scrum (gratuito) (x Tobias)
Enero 26: Consultas CSP (gratuito) (Alan y Tobias)
Enero 27: The Spirit of Scrum - (pago *) (x Tobias)
Enero 28: Improvisation for agile teams - (pago *) (facilitado por Alan Cyment, co-facilitado por Tobias)

(*) En ambos casos, cada día cuesta 220 usd + IVA. Tomando ambos curos el costo es 330 usd + IVA - La facturación la realizará Agilar, que organiza estos eventos.

NOTA: inicialmente planificamos un CSM los días 25 y 26. Por el interés en los talleres avanzados, finalmente suspendimos ese CSM. Para los interesados en CSM, en marzo sr hará uno (Alan)
NOTA: Las actividades con Alan son en español, las actividades con Tobias son en inglés.

sábado, 19 de diciembre de 2009

Charlas en Exactas - UTI

Estoy participando en UTI, un equipo de administradores de IT y desarrollo web en la Facultad de Ciencias Exactas y Naturales de la UBA (Exactas, para los amigos).
El equipo de desarrollo esta conformado principalmente por estudiantes de Exactas o FADU (Facultad de Arquitectura, Diseño y Urbanismo).
Es una experiencia desafiante. Por ejemplo, en el:
  • Part-time: El equipo está y estará conformado por personas part-time, con horarios cambiantes en cada cuatrimestre. Nos ha pasado tener que exforzarnos para poder estar todo el equipo junto dos veces a la semana.
  • Experiencia: los alumnos se incorporan al equipo con relativamente poca experiencia, y se van del equipo cuando se reciben o antes. Hay poca experiencia en el equipo y alta rotación.
  • Visibilidad: Somos un equipo chico (4 personas part-time), con muchos usuarios y sistemas en producción. ¿Cómo lograr que nuestro trabajo sea visible para la comunidad usuaria? ¿Cómo dar valor a un porcenteje alto de los usuarios durante el año?
Decidimos hacer actividades orientadas a mejorar la visibilidad e incorporar buenas prácticas: una serie de charla mensuales.
Este año hemos tenido las siguientes charlas

Control de configuración y SVN

Sergio Romano, del Grupo Esfera, comentó los principios del control de configuracón del código, y luego lo ejemplificó con Subversion (SVN).
Gracias a esta charla mejoramos y extendimos el uso de SVN. Cambiamos la estructura de los repositorios de código de nuestros proyectos.

Panel de Frameworks web MVC

Se invitaron a 4 personas a presentar sendos frameworks:
  • Seam (Java) - Mariano Tugnarelli - Grupo Esfera
  • Seaside (Smalltalk) - Esteban Lorenzano - Smallworks
  • ASP.NET MVC (.NET) - Edgardo Rossetto - Lagash
  • Ruby on Rails (Ruby) - Gustavo Andrés Brey - IBM

El panel llegó un poco tarde para la elección. Ya habíamos tomamos la decisión de usar
CakePHP basados en popularidad dentro de PHP (consideramos también Symfony).
Pero fue muy útil escuchar las
discuciones que surguieron. Pueden escuchar los podscast y ver el material.

Gestión de Servicios de tecnología

Sergio Villagra y Jorge Mazzini prepararon (Sergio presentó) ideas de como manejar los servicios en general y los de IT en particular.
Le habíamos pedido una charla de ITIL, pero prefirió dar una charla general sobre el manejo de servicios y luedo comentar distintos modelos. Uno de ellos es ITIL.
Aún es muy reciente y vinieron las fiestas, como para sabe como influyó en nuestro trabajo. Lo que puedo decir que despertó interés.

Y.. ¿con qué seguimos?

Las próximas charlas serán (días a confirmar y oradores TBD):
  • Seguridad Web (19 de Marzo): la gran mayoría de nuestros desarrollos son web, la seguridad es un tema ineludible.
  • Usabilidad (Abril 23): considerando nuestro énfasis en dar valor a los distintos usuarios de nuestros servicios (profesores e investigadores, personal no docente, alumnos, escuelas, ...), creemos que mejorar la usabilidad de nuestras aplicaciones sería muy importante.
  • Single Sign On (Mayo): queremos que los usuarios puedan acceder a todos los servicios de IT brindados por la facultad autenticándose una sola vez. Un objetivo ambicioso.

martes, 15 de diciembre de 2009

CSM en Buenos Aires: Tobias Mayer

Tobias Mayer facilitará un curso de Certified ScrumMaster en Buenos Aires, Argentina.

El curso Certified ScrumMaster Training (CSM) consiste en dos días de presentación, charlas grupales y experiencias y ejercicios interactivos diseñados para enseñar efectivamente los principios y prácticaqs de Scrum.

No hay transparencias y los momentos en que Tobias “da clases” se mantienen al mínimo. El valor de Scrum surge de hacerlo, y el curso se focaliza en la acción. Al finalizar el curso, los participantes tendrán la confianza y comprensión para comenzar la incorporación de Scrum en sus organizaciones y ayudar a los equipos de desarrollo a mejorar sus procesos. Al aprobar, cada uno de los participantes recibirá la designación oficial de “Certified ScrumMaster”, un título otorgado por la Scrum Alliance.

Cuándo: 25-26 de enero de 2010
Dónde
: Perú 375, 1er piso (Southworks)
Costo
: usd 700 + IVA
Registración
: http://tinyurl.com/tobiasBsAsCSM

Este evento es organizado por Agilar Argentina