Power of Three

Algo que tienen que empezar a suceder para que los testers se involucren en el software desde el principio, es participar en las discusiones entre los desarrolladores y product owner. Para darle impulso a esto se puede aplicar la regla denominada Power of Three. Básicamente, significa que todas las discusiones sobre una nueva funcionalidad necesitan de un desarrollador, un tester y el product owner. Es responsabilidad del equipo que siempre haya un representante en este grupo.

Germán


Principio #3 - Enable face-to-face communication

Principio de Testing Agile #3 [1]

Ningún equipo puede trabajar bien sin una buena comunicación. Principalmente en estos tiempos en los cuales se tiende al trabajo distribuido. Aquí la comunicación es aún más importante y más desafiante.
Para un tester ágil, la comunicación es crítica. En todo momento, el tester se hace preguntas (es parte de su esencia) sobre cómo una funcionalidad debe trabajar o cómo una interface debe ser mostrada. Entonces, se deben habilitar canales con los desarrolladores y los expertos del negocio. Los testers deben hablar en estos dos idiomas y deben colaborar para que todos compartan un lenguaje común.

Finalmente, si bien la comunicación "cara a cara" nunca podrá sustituirse, hay que buscar formas "creativas" en caso que nuestro equipo esté distribuido.

Germán

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

Principios

Me gustó esta lista de principios del libro "The People's Scrum" de @tobiasmayer.

Framework: nos comprometemos a seguir los principios ágiles utilizando Scrum.

Calidad: nos comprometemos a construir calidad en nuestros productos en todos los estados de su desarrollo. Así como también, revisar continuamente y mejorar nuestras técnicas para alcanzarla.

Personas: somos profesionales y tenemos la responsabilidad de respetar a los otros, actuar honestamente, comunicar abiertamente, y buscar y dar ayuda cuando sea necesario.

Proceso: nos comprometemos a trabajar con la organización para definir a proceso mínimo para guiar nuestras actividades durante la duración de una iteración, apoyando al equipo para lograr completar su trabajo.

Crecimiento: como individuos, nos comprometemos a mejorar y compartir nuestro conocimiento (en la compañía), cuando sea apropiado.

Germán

Bugs should be about behaviour enhancements

Hace un tiempo que venimos hablando de que hacer testing es capturar conocimiento y que una de las formas operativas de obtener este conocimiento, es a través de los bugs. Esto me lleva a pensar que, en realidad, los bugs no son algo negativo, para nada. Es verdad que tienen "mala fama" pero tanto para el que los encuentra como para el que los arregla, debería ser algo positivo y atractivo, además de habilitar nuevas discusiones sobre lo que realmente se espera del producto (en muchas ocasiones esto puede no aplicar para los incidentes productivos, pero el usuario también debería comprometerse con el software).

Dicho esto y basándome en el artículo de @gojkoadzic "User stories should be about behaviour changes", es que los "Bugs should be about behaviour enhancements".

Germán

Primera persona del singular

Llevo un tiempo trabajando con equipos y, pensando retrospectivamente, me doy cuenta que muchas veces me encuentro/nos encontramos dialogando con compañeros o clientes, anteponiendo el pronombre 'yo' o usando verbos en primera persona singular. Este hecho marca el sentido de no pertenencia a nuestro equipo y atenta contra los ambientes colaborativosCreo que una de las maneras de mejorar la comunicación y la colaboración, y que debería ser trabajada en retrospectivas, es la erradicación de este tipo de pronombres y verbos cuando hablamos en nombre del grupo. Potenciará el sentido de equipo, la pertenencia y el compromiso hacia él.

Germán

Vacaciones

En la entrada anterior hablamos sobre la pausa. Aquella que nos predispone al pensamiento crítico. Esta pausa es sólo de unos segundos, para tomarnos un respiro, pensar en la información que tenemos y usarla racionalmente.

Hoy quiero hablar, brevemente, sobre otra pausa: las vacaciones. Es el tiempo en el cual deberíamos dejar de pensar en el trabajo. Tratar de no revisar mails (despreocuparse por el inbox zero) y dedicarse al ocio y al esparcimiento. Es el momento para viajar y retomar esos hobbies o actividades que tenemos relegados. Debería ser nuestra obligación.

Germán

Pausa

@michaelbolton, en su blog propone una nueva herramienta para los testers. Aunque también quiero hacerlo extensivo a desarrolladores y analistas. Dicha herramienta es la pausa.

El desarrollo de software es una actividad compleja y, cómo toda profesión que requiere de un despliegue intelectual diario, necesita de una pausa. Según Bolton, una pausa es el efecto de aplicar las siguientes cuatro palabras: Huh?, Really?, And? y So? Cada una de ellas da un respiro y predispone al pensamiento crítico.

Wait…huh? Did I hear that properly? 
Um…Really? Does that match with my experience and understanding of the world as it is, or how it might be? 
And? What additional information might be missing?
Okay…So? What are some consequences or ramifications of those interpretations?

Germán

Principio #2 - Entregar valor

Principio de Testing Agile #2 [1]

Como sabemos, una de las prioridades del desarrollo ágil es entregar valor al cliente en pequeñas iteraciones. Este valor es software funcionando y compuesto por las funcionalidades que se han priorizado recientemente. En este contexto, es fácil ceder ante los deseos del cliente para ciertas features y, si bien cualquiera en el equipo puede cuestionar estos puntos, es el tester ágil quién debe reconocer los impactos dentro de las stories, debido que debe pensar sobre las repercusiones del testing.

Los testers ágiles deben ver el todo al momento de analizar las stories para identificar los caminos críticos. Las funcionalidades entregadas pueden crecer entre iteraciones y, si se pierde de vista la funcionalidad core sobre el "camino feliz", se corre el riesgo de no entregar nada. Si bien una de las habilidades de un tester es identificar casos más allá de este "camino feliz", es NECESARIO asegurarse que el camino funcione correctamente. SIEMPRE considerando lo que agrega más valor al cliente y entendiendo su contexto.

Por último, y no menos importante, es el tiempo de testing. Tiene que ser considerado durante el proceso de estimación para asegurarse que haya suficiente espacio en la iteración para entregar una funcionalidad correcta.

Germán

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


Testing y Scrum en el libro "The People's Scrum"

Leyendo el libro de Tobias Mayer, me topé con un par de párrafos que relacionan al testing con la cultura de Scrum. Me pareció interesante para compartir. 

"The discipline of testing requires a lot more humility than the discipline of development. Testers tend to be more humble than developers; it is the nature of the role. There are different energies at play: development is characterized by the energy of creation, testing by the energy of service".

"The mission of scrum is to change the way we work. This is not process change, this is cultural change. People inside a scrum/agile process (we hope) behave differently. We now have test-infected developers. That's great. We have developers who see the value in testing, and do it. They don't push it off to QA people at the end of process"

"I want to see testers passionate about create new software, no just validating someone else's software. I want to see testers weave themselves into the creative process from requirements all the way through to release"

Yo quiero lo mismo!

Germán


Hasta dónde hemos llegado...

Hace unas semanas, una persona me contacto por LinkedIn para que le comente sobre testing (en general). Aquí dejo algunas reflexiones de mi respuesta.

Recuerdo que +Ernesto Kiszkurno  (socio de la consultora en la cual trabajo), siempre me decía que cuando empezaron a trabajar en testing, a ofrecer y vender servicios, los miraban como "personas extrañas". Nadie entendía lo que querían hacer y, obviamente, había una resistencia importante. Esto hace ya unos 15 años. Esta resistencia, era normal. Alguien te venía a decir que tu software "estaba mal". ¿Cómo es esto?

Hoy en día, el testing ya está totalmente aceptado y es indispensable para el desarrollo de un producto. Como consecuencia, la responsabilidad de los testers también se ha potenciado. Deben dar soporte a la captura del conocimiento y gestionarlo. No sólo deben detectar ciertos desvíos funcionales o errores triviales que pueden tener cualquier software, sino hay que involucrarse mucho más en el dominio. Las prácticas ágiles (TDD, ATDD, BDD, DDD) que involucran desarrollo basado en pruebas, son también un punto de encuentro entre developers y testers que potencia su relación y realza la necesidad de trabajar con foco en la calidad.

Finalmente, creo que el próximo paso es aceptar y dejar de lado (definitivamente) el famoso "developers vs testers" para pasar a ser un grupo homogéneo de profesionales trabajando en pos de entregar valor. Un equipo multidisciplinario que tiene como único objetivo, construir software de calidad. La gente depende cada vez más del software y se debe dar soporte a esto. Superar este obstáculo dará impulso para concretar e imponer un meta-enfoque que podríamos llamarlo algo así como Quality-Driven Development (QDD)

En resumen, enumero algunos hitos que se fueron sucediendo y otros, que espero, puedan concretarse y aceptarse definitivamente. 

1. Resistencia al testing.
2. Aceptación como la última etapa de un proceso de desarrollo cascada (waterfall)
3. Necesidad de incluir prácticas de calidad más temprano en el ciclo.
4. Surgimiento de testing agile (TDD, BDD, ATDD) para trabajar sobre el desarrollo gestionado con pruebas.
5. Testing como actividad que retroalimenta la captura del conocimiento del software.
6. Fin de la rivalidad "developers vs testers"
7. Imposición de un nuevo concepto QDD (Quality-Driven Development)

Germán