Principio #1 - Dar feedback continuo

Principio de Testing Agile #1 [1]

En el contexto de un equipo ágil, el tester está involucrado en el producto desde los inicios. Desde bien temprano, en la primer iteración. Muchos proyectos ágiles están "manejados" por tests y, en consecuencia, el feedback juega un rol importante en ellos. En principio, el feedback comienza trabajando con el product owner o cliente para articular las stories mediante ejemplos y tests. Luego, los testers trabajan junto con sus otros miembros del equipo para generar escenarios ejecutables a partir de los requerimientos relevados. La ejecución de estos tests es otra fuente continua de feedback. Por último, los testers pueden mostrar su progreso dando una vista global de tests creados/ejecutados/OK así como del cubrimiento funcional de sus pruebas.

En cualquiera de estas situaciones, el feedback es una manera de ayudar a remover obstáculos y promover la cultura del trabajo colaborativo.

Germán

[1] Agile Testing: A Practical Guide for Testers and Agile Teams

Never lose a BUG again

Sabios consejos [1]

  • Controlá tus tests.
  • Compartí tus bugs tal cómo los encontrás.
  • Capturá tu pantalla, adjuntá al incidente y seguí trabajando. Los developers verán la aplicación exactamente como estaba cuando encontraste el bug.
  • Eliminá las excusas: no digas más "Funciona en mi PC".

Germán

Principios esenciales para Automatización de Pruebas Funcionales

La última Testing Experience tiene un interesante artículo sobre principios para tener en cuenta al momento de automatizar tests funcionales. Los quería compartir aquí ya que me parece importante tenerlos bien presentes.

1. Primero, diseñar los tests. Evitar la creación de tests on the fly. Nuestra suite de tests debe crecer orgánicamente.
2. No automatizar todo. Ciertos tests pueden ser fácilmente ejecutados en forma manual, evitando así el alto costo de automatización.
3. Escribir tests cortos. En situaciones en las que uno o más tests fallen, cualquier miembro del equipo debe ser capaz de trackear la causa del error. Es recomendable usar BDD (Behaviour-Driven Development) 
4. Crear tests independientes. Evitar el acomplamiento y aumentar la cohesión de los tests.
5. Enfocarse sobre su readability. El código fuente de cada test debería estar self-documenting. Comentarios en el código deben ser evitados.
6. Tests deben ser rápidos. El testing funcional automatizado debe ser un indicador rápido de la calidad de la aplicación. Además, en un ambiente de continuous delivery, el tiempo de ejecución debe ser de unos pocos minutos.
7. Crear tests resistentes al cambio. Quizás esta es una de las principales desventajas de los tests funcionales automatizados. Los tests debería verificar sólo funcionalidad. Dependiendo del contexto también puede ser posible aplicar DDT (Data-Driven Testing)
8. Los tests automatizados no pueden reemplazar a los humanos. Este no debe ser el único testing que se ejecuta. Otras técnicas, con la intervención de los testers humanos, deben ser aplicadas sobre el software en pos de generar más conocimiento.


Germán

What’s a Tester without a QA Team? (hacia un entorno ágil)

Luego de escribir sobre "Así comienza el camino...", encontré un interesante artículo escrito por Lisa Crispin y Janet Gregory, titulado "What's a Tester without a QA Team?". Quería remarcar una serie de bullets que me parecen interesantes para llevar a la práctica cuando un equipo de testing transiciona de un esquema tradicional a uno ágil.

  • Preparándose para el éxito. Inducir y dar soporte para que la persona no se aísle. Ahora, en este nuevo enfoque, se debe reportar a otras personas, otros roles y los testers deben aprender a colaborar con otros miembros del equipo.
  • El enfoque "Whole Team". En los equipo ágiles exitosos, todos sus miembros tienen un claro enfoque en la calidad y son responsables de ella. La buena noticia para los testers es que ahora ellos van a estar involucrados en el proyecto desde el principio. Su tarea comienza con los clientes o product owner definiendo los tests de aceptación y continúa con la revisión de user stories junto con los developers.
  • Comunidad de Práctica de Testing. Construir comunidades de práctica que faciliten la integración del equipo. El fin principal es compartir conocimientos y experiencias. Esta comunidad puede tener un test manager (responsable del equipo de testing en el enfoque tradicional) quien sea el encargado de asegurar la inducción y el soporte a los testers. El equipo debe también estar orientado a hacer comunidad.
  • Compartir Conocimiento. Cuando el equipo tiene el sentido de comunidad, se genera un núcleo de conocimiento muy poderoso que favorece el intercambio. Proactivamente, los integrantes comienzan a intercambiar conocimiento de manera desinteresada y totalmente natural.
  • Ampliar tus horizontes. Todos los software makers deben estar enfocados en el aprendizaje continuo. Cada vez que una nueva funcionalidad es pensada y desarrollada, se produce una explosión de nuevo conocimiento que involucra y retroalimenta a todo el equipo.

Germán

Equivocarse

Ayer leí este interesante artículo de Gustavo Bonalde, titulado ¿Siempre debemos fallar para lograr algo?

Transcribo aquí una frase que me parece interesante:

"Es muy cierto que en cada falla tenemos una oportunidad de mejora, de aprendizaje, pero hay ocasiones donde no hay espacio para fallar."

Y es verdad. Además, en aquellas ocasiones en las cuales no podemos fallar, y lo hacemos, seguro el "golpe" será más grande. Pero, a pesar de ellos, seguimos aprendiendo.

Para concluir, en cualquier profesión, trabajo, carrera, el aprendizaje es continuo y eso es lo mágico. Sólo hay que estar predispuesto.


Germán

Tengo un problema (2)

Luego del éxito sin precedentes del post sobre el patito de goma (¿?) y de algunos de los comentarios que me llegaron, quise hacer una remasterización del algoritmo de la técnica con el feedback que obtuve.


Si tenés un problema que no podés resolver y te está bloqueando, entonces:
          Si trabajás remoto:
                1. Buscá un compañero en el chat para contárselo;
          Sino:
                2. Contáselo a un compañero en persona;
Si no tenés más remedio y no tenés un compañero a mano:
                3. Buscá un Patito de Goma y/o cualquier otro;
En otro caso:
                4. Googlealo :)


Germán

No escribirás con errores ortográficos

Recuerdo que cuando estaba en la escuela primaria (6to grado), tenía una maestra que en una de las clases semanales de Lengua, nos tomaba un dictado. La dinámica era la siguiente: te dictaba 20 palabras elegidas al azar y, si tenías menos de 6 o 7 errores ortográficos, aprobabas. A medida que iba pasando el tiempo, la complejidad de las palabras se incrementaba y, para la calificación final de la materia, se ponderaba también cuántos dictados habías aprobado. Si bien era un examen y tenía un cierto nivel de stress, hoy en día, agradezco haber tenido la posibilidad de entrenar mi ortografía desde chico.

Esta anécdota es para introducir un tema que me parece muy importante, por no decir crítico. Digamos que podríamos seguir hablando sobre skills blandas, duras, etc. de un profesional (en este caso, informático, tester, developer, no viene al caso). Sin embargo, pienso que antes de entrenar cualquiera de estas habilidades (que obviamente son también importantes), tenemos que estar seguros de escribir sin errores de ortografía. En resumen, antes de entrenar cualquier otra habilidad, procura escribir sin errores de ortografía.

Les dejo algunos tips que me ayudan a mejorar mi redacción:

- Leer, leer, leer.

- Consultar la RAE o un diccionario físico.

- Tener a mano reglas de ortografía y gramática básicas.

- Usar sinónimos.

- Ejercitar la escritura.

- Seguir en Twitter a @DelCorrector (leer también su blog El Santo de la Pluma)

Por último, no sé si a ustedes les pasa, pero me molesta leer un texto que tiene errores. Además, tiene consecuencias varias. Por ejemplo:

- Si es un informe, pierde toda seriedad al momento de localizar el primer acento mal puesto.
- Si es un bug, tu reputación de buen tester está en duda.
- Si es un chat, sms o mail informal, puede zafar pero, de vez en cuando, una corrección no viene mal.
- Si es un CV, estás out.
- Si es una chica que tiene problemas con su ortografía, pierde inmediatamente todo su encanto.
- Si es este post, por favor, dejar un comentario. Gracias!

¿Es mucho?

Germán

Publicación en el blog de PetroVR

Colaboré como autor, junto a mis compañeros de equipo de Pragma, en una entrada sobre Testing en el blog de PetroVR. En el post, hablamos un poco sobre una propiedad que me parece interesante para desarrollar y que es la "self-testability" de un producto software. Los invito a leerlo How is the Testing of PetroVR done? The self-testability of PetroVR

Gracias Caesar Systems por la invitación a participar y a +Leandro Caniglia y +Carlos Ferro por el feedback.

Germán

Tengo un problema

La técnica del patito de goma [1] (reformulada)

Muchas veces nos pasa que nos bloqueamos cuando tenemos que resolver un problema (en este caso, laboral). No podemos avanzar, nos volvemos menos productivos, incómodos y no disfrutamos de nuestro trabajo. Para evitar esto, lo que la técnica propone es, simplemente, contarle a alguien lo que nos pasa. Luego, en medio del proceso, nos daremos cuenta de lo que está fallando (eventualmente) y nos ayudará a resolver el tema que nos aqueja. Pero tiene un problema, hay que molestar a otra persona para que nos atienda. Es aquí dónde aparece el Patito de Goma. Cuando estés bloqueado usá el patito, contale lo que te ocurre y verás cómo, en muchas ocasiones, te ayudará.

Contado de esta manera, tiene algo que me hace ruido y que contradice el "espíritu" de este blog: atenta contra los ambientes colaborativos. Por lo tanto, mi propuesta es:

- Si tenés un problema que no podés resolver y te está bloqueando:
          1. Buscá un compañero para contárselo.
- Si no tenés más remedio y no tenés un compañero a mano:
          2. Buscá una Patito de Goma.

Mis razones para escribir

Este blog está cumpliendo un año desde que comencé a escribirlo. Cuando me dí cuenta de la fecha, me puse a pensar ¿por qué estoy escribiendo?, ¿cuáles son las razones? Entonces identifiqué las siguientes (más representativas):

1. Investigar: me gusta hacerlo y el blog ayuda a plasmarlo. La gente que trabaja en Informática debe investigar todo el tiempo. El constante avance en materia de Ciencia y Tecnología requiere que todo profesional esté actualizado para intentar llegar a la "cresta de la ola".

2. Aprender: El blog nos permite aprender sobre los temas que nos interesan, gestionarlo, escribirlo y  compartirlo. 

3. Hacer Comunidad: contactar gente con la que tengamos temas en común, que quiera compartir su conocimiento y que haga comunidad.

Cualquier motivación es válida para escribir. Sin embargo, creo que lo más importante y, lo que me motiva a seguir haciéndolo, es el feedback que se obtiene de los lectores (cualquiera sea la cantidad)

¡Gracias por leer!

Germán