Testing + Pensamiento Lateral = "Testing Lateral"

El testing es un proceso intelectual desafiante y por ende requiere, entre otras cosas, de una dosis importante de creatividad. Esto se practica, se entrena.

Un tester que entrena sus habilidades e incorpora nuevas se diferencia claramente del resto. Todos en el equipo podríamos testear sin problemas, pero aquel con una mayor actitud y predisposición para responder ante las diferentes situación, incluso aquellas triviales, es quién llevará la delantera.

Pensamiento Lateral


En vacaciones, leí "El Pensamiento Lateral" de Edward De Bono. El libro es muy recomendable, y tiene una serie de técnicas que ayudan a "practicar" el pensamiento lateral además de incluir algunos ejercicios para tal fin.

De Bono afirma que usar pensamiento lateral no implica dejar de lado el pensamiento lógico/vertical, sino que es un complemento de este y que, además, nos ayuda a romper con ciertos modelos preestablecidos. Algo así como "barajar y dar de nuevo" nuestros modelos mentales. El pensamiento lateral de aplica en una fase anterior a la acción del pensamiento vertical. Se usa para reestructurar los enfoques de una situación determinada y las ideas que sirven de base. Luego estos enfoques e ideas pueden ser desarrolladas por el pensamiento vertical.

Me pregunto si será posible aplicar alguna de estas técnicas para entrenar y fortalecer las skills de los testers, por ejemplo, en algún Dojo de Testing. Lo voy a intentar exponiendo técnicas y profundizando sobre este enfoque en sucesivas entradas. Espero que resulte algo novedoso e interesante como para experimentarlo.

Testing Lateral


Llamemos a este enfoque: "Testing Lateral". Se trata, principalmente, de aplicar técnicas del pensamiento lateral para mejorar las habilidades de los testers. Este enfoque no intenta cubrir todo el rango de posibles habilidades que se consideren ya que para las habilidades que son técnicas o muy especializadas, se requiere de la aplicación de conocimientos adquiridos.

El testing lateral intenta trabajar sobre algunos aspectos soft de los tester, es decir, aquellas habilidades que hacen a su mindset, a su creatividad y su meticulosidad (algunas otras habilidades las detallamos aquí). Esto les permitirá considerar diferentes enfoques al momento de resolver cualquier situación que se presente. 

Como notarán, el enfoque es simple. De ahora en más, sólo resta conocer algunas técnicas y ejercicios para ver si funciona. Las siguientes son algunas de las técnicas (un subconjunto de las propuestas por De Bono es su libro) que vamos a probar bajo este enfoque, siempre tratando de poner en práctica las habilidades de los testers: 

1. Revisión de supuestos
2. Alternativas
3. Ejercicios de dibujo
4. Fraccionamiento o división
5. Inversión
6. Brainstorming
7. Analogías


Técnica 1: Revisar Supuestos


La primer técnica que vamos a ver es la revisión de supuestos. Es simple y está relacionado a la manera en la que axiomatizamos los conceptos y las ideas. Dar algo por supuesto (supuestos lógicos que se aceptan por válidos en sí mismos), nos ayuda a construir un modelo sobre esto sin preocuparnos, muchas veces, por las cuestiones triviales. Además, la aceptación de que una idea sea correcta, no garantiza su corrección. 

Práctica para el dojo:

Ejercicio: El siguiente problema ilustra muy bien el factor restrictivo de los supuestos. Consiste en unir los nueves puntos mediante sólo 4 líneas rectas pero sin levantar el lápiz del papel.




Ayuda: El factor que bloquea la solución es que las líneas rectas han de unir los puntos sin exceder los límites de los propios puntos. Los invito a que intenten resolver el ejercicio.

En testing, hacer muchas suposiciones puede ser peligroso. Estas pueden estar asociadas, por ejemplo, a la estandarización de ciertos sistemas. La interface de una aplicación es la misma para todas las ventanas, funciona de la misma manera que el resto y, por ende, lo hace bien. En conclusión, la revisión intenta demostrar que cualquier supuesto puede ser sometido a examen. Claramente, esta técnica no intenta revisar todos los supuestos posibles. No sería aplicable y rentable para ningún proyecto. Sin embargo, para un tester, tener este pensamiento crítico es fundamental. Como ya dijo Jerry Weinberg: "A tester is someone who knows that things could be different"

Habilidades de un tester: el quid de la cuestión...

Según la RAE, habilidad es la capacidad y disposición de una personal para hacer algo. Generalmente, esto es resultado de experiencia, entrenamiento y, en algunos casos, sólo es una capacidad natural.

Un tester debe tener ciertas habilidades para desarrollar su trabajo, algunas habilidades técnicas (también las vamos a llamar hard) para ejecutar cuestiones básicas de su trabajo y otras habilidades soft que tienen que ver con su enfoque hacia el trabajo. Estas últimas van más allá de los límites de la profesión y alcanzas otros aspectos de la vida. Son habilidades que hacen a su comunicación interpersonal, negociación y resolución de conflictos, efectividad y creatividad, por nombrar algunas.

A partir de esta diferenciación y teniendo en cuenta la importancia de cada una, podemos definir 3 grupos:

1. Aquellas profesiones que necesitan de las habilidades técnicas y pocas habilidades soft.
2. Aquellas profesiones que necesitan ambas habilidades
3. Aquellas profesiones que necesitan mayormente habilidades soft, pero no así de tantas hard.

Pienso que la profesión de tester está contenida en el segundo grupo y, a continuación, justifico mi elección.

Las habilidades técnicas son aquellas que implican "meterse en el barro", hacer una estrategia de pruebas, definir/programar y ejecutar casos y generar los respectivos reportes e informes. También, incluyo aquí la aplicación de metodologías para la gestión de los proyectos, entendimiento del dominio/negocio, procedimientos generales y adopción de estándares.

Por último, dejé para el final las habilidades soft ya que son las más difíciles de observar, cuantificar y medir y, por lo tanto, quiero hacer especial hincapié sobre ellas. Esto no hace más importantes a estas habilidades por encima de las técnicas (de hecho, un tester no sobreviviría sin habilidades técnicas). El tema pasa por como las habilidades pueden ser adquiridas. Las hard, pueden entrenarse con mayor facilidad ya que en cierta medida se aprenden el la escuela, Universidad, cursos, etc. Mientras que las habilidades soft están relacionadas a los patrones de conducta de las personas y, en general, se mejorar/modifican (y entrenan también) haciendo camino al andar.

A continuación detallo las habilidades soft que un tester debería tratar de atender, mejorar y entrenar para ser un tester "completo":

1. Disciplina y perseverancia
2. Meticulosidad
3. Comunicación (oral y escrita)
4. Curiosidad
5. Observación (fundamental!)
6. Priorización de esfuerzo y gestión del tiempo
7. Actitud positiva
8. Pensamiento negativo
9. Pensamiento crítico

Quizás, en estas últimas, esté el quid de la cuestión...

Fuentes:

[1] Stickyminds
[2] Así no se hacen las cosas
[3] Cartoon Tester

Mantenerse creativo (4)




                              #4. Visitá nuevos lugares





Este último fin de semana visité Villa PehueniaUn centro turístico con cultura milenaria, dotada de bosques de Araucarias Araucanas. Esta aldea de montaña está enclavada en la cordillera de los Andes a la vera de los lagos Aluminé y Moquehue, a 310 Km. de la capital neuquina y a 1200 m.s.n.m. UN LUGAR PERFECTO.

Aquí, mi foto del lugar:





Fuente: 33 tips para mantenerse creativo.

Testing: 6 preguntas a Ernesto Kiszkurno de Pragma Consultores


Siguiendo con mi serie de entrevistas, estuve charlando con Ernesto Kizskurno, de Pragma Consultores, sobre testing de software.

German Braun (GB): ¿Cuál es su definición de calidad?

Ernesto Kiszkurno (EK): Tengo 10 definiciones. Pero la que más me gusta es: “La calidad no es un arte, es un hábito” de Aristóteles. El resto las pueden encontrar en mi blog.

GB: ¿Cuál piensa que es, actualmente, el rol del testing en un proceso de desarrollo u organización?

EK: Hace unos días publiqué en twitter algo relacionado con esto. El testing no tiene valor en si mismo para una organización. No es ni bueno ni malo en sí mismo. Es una herramienta para medir el nivel de calidad del software que desarrollamos. Eso no quiere decir que no sea fundamental su uso en un montón de ámbitos. Lo que me parece clave es entender el contexto del proceso de desarrollo de software y en base a eso decidir cuanto invertimos en testing.

Dicho esto y, dado el nivel de penetración que tiene el software en nuestra vida cotidiana, creo que tendremos testing para rato. Sobre esto también comenté algo aquí.

GB: ¿Cuáles piensa que son las principales skills que un tester debería tener?

EK:
1. Meticulosidad.
2. Curiosidad para buscar los errores, para entender la funcionalidad.
3. Buenas habilidades de comunicación (escrita y oral). 
4. Solvencia técnica (para poder hablar con el desarrollador, entre otras cosas).
5. Entendimiento del negocio (para poder hablar con los usuarios).
6. Mindset diferente.


GB: ¿Es el testing una "profesión" con futuro?

EK: He escrito sobre esto aquí. Creo que el testing como actividad debe seguir re-inventándose a medida que la práctica de desarrollo de software vaya cambiando. Pero no me imagino un futuro inmediato donde hay desarrollo de software pero no hay testing.

Por otro lado, el paradigma de compartimentos estancos entre el grupo de desarrollo de software y el equipo de testing se va agotando.

GB: ¿Cuáles son los 2 o 3 hitos más importantes de su carrera como tester profesional?

EK: Es difícil esta pregunta porque en la época donde yo empecé con los temas de calidad eramos pocos. Creo que los hitos más importantes en mi carrera fueron los momentos donde dí saltos de magnitud en el tipo de responsabilidades que asumía. Por ejemplo el cambio de ser liderado a liderar o el cambio de liderar un pequeño equipo a muchos equipos.

GB: ¿Qué consejo le daría a un tester principiante que desea seguir el camino de la calidad de software?

EK: Que cuide su empleabilidad, aprenda continuamente y que no se concentre sólo en los aspectos técnicos. Lo más complicado es el manejo de las cuestiones soft.



Sobre Ernesto Kiszkurno

Ernesto es socio en Pragma Consultores. También es docente en la Facultad de Ciencias Exactas y Naturales de la UBA y autor del blog "Así no se hacen las cosas".


¡Gracias Ernesto!

Mi responsabilidad como tester


Investigando sobre context-driven-testing, encontré un interesante artículo de Michael Bolton [1] en el cuál se trataba de definir este concepto mediante un diálogo entre James Bach y Jerry Weinberg. Allí, Jerry dice dos cosas muy importantes:




- “The first responsibility of a tester is to explore and challenge the constraints of the situation” 

- “A tester is someone who knows that things could be different.”




Es genial, es lo que estaba buscando hace mucho tiempo. Ambas proposiciones resumen lo que para mi es ser un tester y lo que le da sentido a esta profesión.

Encontrar el sentido a tu profesión/carrera/trabajo, preguntarte ¿por qué?, ¿para qué?, replantearte si estás en el lugar que querés estar y haciendo lo que hacés, hacerte cargo de tu carrera y salir de la "zona de confort", también forma parte de tu vida, de "hacer el click". ¡Buscalo!


Germán