jueves, 31 de enero de 2013

Convertirse en un tester de Clase Mundial



Este post es una traducción de un gran post hecho por Ilari Henrik Aegerter en un blog de Ebay
Es tan bueno y útil que me pareció que debía intentar traducirlo para que los testers de habla hispana también puedan leer esta interesante linea de pensamiento, que está creciendo día a día en el mundo, espero que a Ilari no le importe.

Un Tester es alguien que sabe que las cosas pueden ser diferentes.

Esa es la descripción de Jerry Weinberg de un tester de clase mundial, que nos recuerda que el Testing se trata sobre el pensamiento crítico y la imaginación. Se trata de no creer en nada en su sentido literal, pero manteniendo una mentalidad investigativa.

Testing es cuestionar a un producto con el fin de evaluarlo.

Esta definición de la actividad de Testing de software, de James Bach, incluye uno de los aspectos más importantes del Testing: descubrir información y entregarla. Software Testing trata de revelar lo desconocido.

Si la calidad significa valor para alguna persona que le importa (como Weinberg ha definido), entonces el Testing está al servicio de descubrir cualquier cosa que amenace este valor. Para proporcionar este servicio, un tester tiene que ser capaz de hacer una variedad de cosas, tales como hacer buenas preguntas, comentando sobre los requisitos, e interactuar con un producto de tal manera que produzca información que sea útil.

Mi definición de un tester de clase mundial es una persona que es capaz de descubrir rápidamente información muy relevante sobre el producto, alguien que hace el máximo uso de cualquier recurso que está disponible para él o ella, y que cuenta con el respeto de las personas involucradas en un proyecto. Es una persona en quien se puede confiar.

Por lo tanto, teniendo en cuenta estas definiciones, ¿qué habilidades y mentalidad debería invertir en convertirse en un tester de clase mundial? ¿En qué áreas necesitas ser bueno para evitar ser desacreditado como un "monkey-tester"?

Competencias Técnicas

En los niveles superiores del gerenciamiento, las pruebas de software son a menudo vistas como sólo una disciplina técnica. Creen que su eficacia como tester depende de su capacidad de escribir código que haga las pruebas por voz. Sin embargo, hay muchos aspectos de las pruebas de software que simplemente no son automatizables. Los seres humanos son increíblemente hábiles en pensar y adaptarse a la nueva información que se presenta en función del contexto, y dado que el software es un sistema de cambio constante de funciones y estados, a veces es más eficiente hacer un proceso explorativo. La automatización es todo lo contrario a eso, ya que se trata de scripts.

Sin embargo, la automatización puede liberar tiempo a los testers para hacer más exploración, que permite el descubrimiento. Cualquier cosa que sea altamente repetitiva o aburrida o que tenga que ejecutarse una y otra vez, es un buen candidato para la automatización. La automatización es muy valiosa en estas áreas.

El desarrollo de un automatización poderosa y fácil de mantener es difícil. Estoy convencido de que un desarrollador de software mediocre no es capaz de cumplir con los requisitos para ese trabajo. Si usted quiere hacer la automatización de pruebas útiles, es mejor que sea un programador excelente, además de tener otras habilidades de Testing.

Aquí hay algunas otras habilidades y modos de pensar que creo que le ayudarán:

Curiosidad de Investigación

Si usted piensa que el Testing es un mal necesario - algo para salir del camino hasta que pueda hacer algo realmente bueno - usted está en peligro de perderse problemas importantes. Testers de clase mundial están constantemente explorando las capacidades y limitaciones de sus productos, manteniendo un sano escepticismo sobre la capacidad de esos productos.

Si quiere darse un título de fantasía, piense en si mismo como un "empirista compulsivo", guiado por impulsos irresistibles para encontrar la verdad sobre lo que está pasando. Tester de primera clase significa seguir el impulso de llegar al fondo de las cosas, no darse por vencido hasta que haya experimentado suficiente valor para usted. Cuando ves a un tester rehuir de supuestos no verificados, eso es una buena señal de que toman su trabajo en serio.

Habilidades de observación

Si desea observar algo, usted tiene que notarlo primero. La observación es la capacidad de darse cuenta de detalles importantes o significativos. Al probar un producto tiene que ser capaz de observar situaciones que no son habituales.

¿Quién sería un buen maestro en el dominio de la observación? Vaya a dar un paseo con un niño de cinco años de edad, y vea qué atrapa su atención: una pequeña grieta en el pavimento, una hermosa flor en un jardín, un caracol haciendo lentamente su camino en una pared. Los niños son observadores naturales; están interesados en todo lo que sucede a su alrededor. Sus canales están abiertos y observan con alegría.

Condicionese a sí mismo para mantener sus canales abiertos. Emule el comportamiento de un niño. Entrénese en la conciencia general. Mire más de cerca. Baje la velocidad. Observe.

Habilidades de comunicación

Usted se encontrará con circunstancias en las que uno tiene que defender sus hallazgos. Usted tendrá que convencer a la gente a tomar acción, así que es mejor que sepa cómo explicar por qué sus resultados son relevantes.

Los Testers de clase mundial realmente practican describiendo sus pruebas. Ellos saben que sus explicaciones deben ir mucho más allá de "Sí, lo he probado, confía en mí." Si usted puede describir su prueba, su credibilidad como alguien que sabe lo que está haciendo crece. Una forma de mejorar es utilizar el modelo de estrategias de pruebas heurísticas cuando usted explica lo que está haciendo. O, mejor aún, a usted se le ocurrirán sus propios modelos.

Al contar su historia, recuerde que la comunicación es una calle de dos vías. Los Testers de clase mundial hacen un seguimiento a las respuestas que reciben de sus preguntas y están alertas a la nueva información que aparece en una conversación.

Habilidades de escritura y defensa de bugs

Las comunicaciones más ricas ocurren cuando usted es capaz de hablar con alguien cara a cara. Usted observa las expresiones faciales, puede reaccionar a los indicadores de confusión y los malentendidos pueden aclararse de inmediato. Esto no sucede con la escritura. El canal es más estrecho y más propenso a malentendidos. Las aclaraciones necesitan más tiempo y esfuerzo.

La defensa del Bug a menudo va de la mano con la escritura. Su capacidad para describir el problema con precisión y de manera comprensible influye en la probabilidad de que los errores correctos sean corregidos. No todos los errores reportados deben ser arreglados, pero si aquellos que mejor no se hubieran escapado a causa de una mala redacción.

Un informe de bugs es un documento convincente que necesita influir en las personas adecuadas para actuar. Libere sus informes de errores de información irrelevante y no los atraiga como un titular sensacionalista que le grita en el lector.

Es posible que desee mantener un registro de sus informes de bugs pasados. ¿Cuáles produjeron confusión? Podría haberlos escrito de otra manera? ¿Un cambio de redacción podría traducirse en una mejor comprensión?

Conocimiento del Dominio

Como tester, usted no sólo compara las especificaciones con la implementación. Hay muchas otras referencias, como las expectativas del usuario, la coherencia con otros productos similares, o la historia de su producto, que puede utilizar para identificar problemas. Conocimiento del dominio es también una de las referencias que usted puede desarrollar. Hable con sus clientes. Tenga una charla con los chicos de marketing. Pase un día con Atención al Cliente. Cuanto más conoce lo que es importante para su negocio, mejor será su juicio.

La voluntad de aprender

Usted es un trabajador del conocimiento. El conocimiento no es estático, especialmente no en el dominio técnico. El aprendizaje constante es esencial para llegar a ser mejor en lo que hace. Una situación en la que los seres humanos interactúan con el software es una situación donde el software está interactuando con los seres humanos. Es útil tratar de entender cómo ambos trabajan. Recomiendo explorar las ciencias sociales (psicología cognitiva, las teorías de interacción social, etc), así como incrementar su educación técnica.

En mi opinión, cada tester que quiere llegar a ser realmente bueno se beneficiará de la participación en los cursos excelentes de BBST (Black Box Software Testing) . Cada curso dura cuatro semanas, y usted pasará 15-25 horas cada semana con intensivos ejercicios prácticos. Puede encontrar más información sobre estos cursos en la página web de la Association for Software Testing.

Otro curso que recomiendo es RST (Rapid Software Testing), que se centra en el contexto, la exploración y pensamiento para encontrar mejores bugs. En la actualidad está impartido por James Bach, Michael Bolton y Paul Holland. Una búsqueda hábil en el buscador le llevará al lugar correcto.

Habilidades sociales

Testers que constantemente se quejan de su trabajo y lo horrible que todos los demás son, hace que mi sangre hierva. La Auto-victimización es venenosa. A veces sólo tienes que dejarlo ir. Si usted no puede hacer eso, se le percibe como un amargado. Si la gente va a tomar una cerveza la noche del viernes,usted no será invitado. Imagínese lo que eso influye en la voluntad de las personas en colaborar con usted.

Humor

El humor ayuda. Entre muchas otras cosas, ayuda a mantener la cordura. Como tester, usted a menudo vive en un ambiente estresante. Sonreír y reír reduce los efectos dañinos de las hormonas del estrés. Le ayuda a mantenerse enfocado en lo que quieres hacer: Testing.

Práctica

Y sobre todo, hay que practicar sus habilidades. Si no practica, no se puede llegar a los niveles más altos de capacidad. Mientras que usted practica, observese a sí mismo, encuentre áreas de mejora, y que todas sus acciones sean deliberadas y auto-reflexivas.

Conclusión

Pretender convertirse en un tester de clase mundial no significa llegar a un destino, sino más bien estar en un constante viaje hacia nuevos territorios. La exploración nunca termina, lo cual es estimulante, y hace que Testing sea tan gratificante.

Feliz Testing!

viernes, 25 de enero de 2013

El Tester Pobre: Como mejorar en la profesión cuando no tienes dinero


Si bien James Bach y muchos otros abogan por el auto aprendizaje y que las certificaciones y universidades no sirven de mucho, cuando uno quiere mejorar en su profesión suelen decirte que debes capacitarte, asistir a congresos y contactarte con otra gente, y eso puede costar mucho dinero si uno lo quiere hacer bien.
Pero si uno vive muy lejos de los centros desarrollados en donde todo pasa (es decir USA y Europa) y además vive en un país pobre (Australia y Nueva Zelanda también están lejos, pero viven bien y hablan inglés), no le queda otra que arreglarse con lo que tiene a mano para mejorar y progresar en esta profesión.
Creo que debe pasar en muchas otras profesiones, pero ser Tester en Argentina y con pocos recursos monetarios es muy difícil si uno quiere asistir a Congresos, cursos, hacer certificaciones o networking con otros testers. Intentaré en estas lineas buscar formas de superar estos inconvenientes y lograr nuestros objetivos, sin gastar tanto.

Conferencias:

Ir a las conferencias de Let's Test o EuroStar en Europa, o StarCanada y CAST en Norteamérica hoy por hoy son imposibles, por los costos y porque la mayoría de las empresas en Argentina no pueden/no quieren afrontar los costos de mandar a una persona 4 días a una conferencia al otro lado del mundo que supuestamente no les reportará beneficios a corto plazo.
En Argentina casi no hay conferencias buenas sobre tecnología y no existen para QA/Testing.
Si no puedes ahorrar, o la coyuntura del país te complica realizar el viaje, hay que pensar en otras formas de "participar" en ellas a distancia.
Una forma es ir a sus páginas web y leer los artículos y ver videos de las conferencias anteriores, muchas de ellas brindan mucha información sobre lo expuesto en años previos y pueden ser muy útiles. Eurostar tiene una página con sus webinars, Let's Test tiene una página donde recapitula keynotes y sessions de la conferencia de 2012. CAST tiene su canal de youtube en donde podrán encontrar muchos videos sobre sesiones durante la conferencia.
La otra forma es seguir sus Hash Tags en Twitter como #CAST2013 o #esconf en donde los participantes, tanto los expositores como los asistentes, van contando lo mejor de las conferencias y publican enlaces interesantes en vivo mientras todo sucede.

 

Cursos/Seminarios: 

Uno quisiera ir las Islas Orcas y conocer en persona a James Bach y hacer su curso de Rapid Software Testing, pero para eso hay que tener mucha plata y tiempo para viajar hasta allí. Pero si no es tu caso, al menos puede hacerlo on-line a un costo menor o si ni siquiera puedes afrontarlo (400 dólares no es poco...) entonces al menos puedes leer mucha información en su página, en futuros post trataré de traducir alguna de sus publicaciones.
Si lo que quieres es hacer alguna certificación tipo ISTQB o un curso como el de la AST (ambas cosas son muy diferentes entre si, puedes averiguar mas leyendo este post de Leah Stockley) puedes hacerlo on-line a un costo menor (en euros/dólares of course) o si simplemente quieres estudiar la información que ellos proveen, hay muchos Blogs en donde suben esa información gratis (aunque algunos no muy actualizados o exactos).
Lo que se puede ofrecer en Argentina es muy vago y no es respaldado por ninguna comunidad de Tester, por lo que no puedo  recomendar algo.

Programación:

Si necesitas aprender un lenguaje de programación, ya sea por que quieres ampliar tus conocimientos técnicos, ya sea por querer aprender a automatizar usando scripts, o por alguna cuestión puntual en tu trabajo, no vayas a hacer un curso a alguna de esas consultoras, no valen la pena por costo/tiempo vs. beneficio, lo mejor es el auto aprendizaje, y hay muchas páginas webs muy buenas en donde te enseñan de todo: Codecademy tiene cursos gratuitos e interactivos de HTML, Javascript, Ruby, Jquery, Python,etc. Algunos cursos ya están disponibles en Español. La interfaz es bastante sencilla de usar y los cursos te permiten hacerlos a tu ritmo.
W3Schools es otra muy buena página para aprender lenguajes de programación en forma on-line y gratuita, aunque sólo en inglés.

Auto-Aprendizaje:

Aun no me pude hacer con el libro de James Bach que trata sobre las virtudes del auto-aprendizaje, "Secrets of a Bucaneer Scholar", pero creo que, por sus palabras en diferentes sitios, la habilidad de aprender cosas por uno mismo es cada vez mas importante, tanto en el mundo laboral como en lo personal.
Una de las cuestiones del auto-aprendizaje es leer...leer, leer y leer...y leer mucho y variado. Para eso se necesitan libros...comprar libros, por que los libros sobre Testing no se consiguen en las librerías fácilmente  y mucho menos en las Bibliotecas. Ademas, como todo, están carísimos y el Gobierno no subsidia los libros educativos (como sí lo hacen en la India).
Si tienes la suerte de poder ahorrar y comprar un Kindle, puedes al menos amortizarlo con la compra más barata de libros...o buscarlos y bajarlos (mi opción favorita por razones económicas) pero los libros sobre Testing son difíciles de conseguir "gratis", pero normalmente sus versiones ebook son más baratas y con el kindle se consiguen al toque.
Busca de leer cosas que vayan más allá del Testing, mucho material de otras Ciencias (Antropología, Epistemología, incluso Historia o Psicología) pueden servirte a tu trabajo diario, busca en los Blogs de otros testers, qué libros están leyendo y búscalos.
Otro tema importante son los idiomas, especialmente inglés. Aunque no trabajes en un proyecto con otras personas que hablen inglés, puede que a futuro si lo hagas, ademas que te ayuda a desarrollar mejor tus habilidades de networking. Una opción muy buena es hacer un curso o-line ne Livemocha, en donde puedes aprender muchos idiomas en forma interactiva.

Networking:


Dicen que esa es la principal experiencia que viven los que asisten a los Congresos, conocer otra gente y relacionarse con ellos, hablar sobre temas comunes, entablar amistades o relaciones de negocios/laborales...Networking!
Pero aquí en Argentina no hay nada de eso, entonces...como hacer networking a la distancia?
Las redes sociales obvio! Para cuestiones laborales y de negocios, principalmente uso Linkedin, pero para cuestiones de conocer gente de la comunidad de Testing y relacionarme con ellos o hablar de temas comunes, uso Twitter.
En linkedin hay muchos grupos de Testing QA en donde uno puede participar o leer posts de otra gente de la misma profesión, también conocer en que empresas trabajan y que hacen.
En Twitter puedes seguir Testers, simplemente buscándolos o puedes agregarte esta lista de Testers y afines, que creé para tener un TL mas limpio.
A veces hay información muy interesante y uno puede hacerle preguntas a @jamesmarcusbach o @michaelbolton o a cualquier otro consultor de renombre y seguramente te responderán.


Como verán, hay formas de relacionarse con el Mundo exterior sin tomarse un avión, obviamente a todos nos gustaría viajar, relacionarse con la Comunidad o hacer grandes cursos sobre Testing  pero mientras uno no puede, debe intentar al menos mantenerse capacitado y listo para cuando la oportunidad se dé.
Hay muchas otras maneras de hacer todo lo anteriormente expuesto, esas son las que se me ocurren ahora como más efectivas. Iré agregando cosas nuevas en al medida de lo posible.