Serie ECDB: ¿Qué cualidades debe tener un buen tester?
A primera vista, podría dar la sensación de que es más sencillo romper que crear. Reventar códigos fuente debe ser, sin duda, mucho más sencillo que crearlos. Sin embargo, no es así.
¿Por qué?
Si consideramos el Software Testing como un proceso metódico y disciplinado (como deberíamos hacer), dicho proceso requerirá el mismo esfuerzo y dedicación que el desarrollo de dicho software. En realidad, el Software Testing implica una serie de habilidades similares a las del developer, pero con algunos matices diferenciadores.
Como habréis deducido a estas alturas de la serie, la mayoría de compañías actuales con un cierto grado de madurez consideran el Software Testing como un rol imprescindible y necesario como complemento del rol de developer. Por desgracia, aún existen muchas compañías en las que esto no es así. Compañías en las que la filosofía coincide con la expuesta en una de las anteriores entregas:
Soy mejor cuanto menos tardo en generar artefactos, y una vez los haya generado realizaré una serie de pruebas con las que quedaré satisfecho si no encuentro fallos: ¡Qué gran developer estoy hecho!
En el sistema competitivo del mercado actual, este segundo tipo de compañías no permanecen en escena durante mucho tiempo: Los clientes deciden no comprar esos productos plagados de bugs!!
Una buena o mala planificación de tests puede llevar una compañía al éxito o reducirla a cenizas!
Con esta perspectiva, deberíamos considerar una decisión crítica la buena elección de profesionales dedicados al proceso de pruebas. Pero...
¿Qué características debemos considerar vitales en un tester?
- Capacidad para "imaginar" soluciones a problemas existentes. Un tester debe ser capaz de poder realizar hipótesis con un grado de fiabilidad aceptable acerca de la causa de un error cuando éste se produce. En esta fiabilidad influye el hecho de que el software debe, por un lado, conocer los principios de arquitectura y diseño que se han seguido en la creación del software, así como tener un dominio bastante amplio de la tecnología con la que ha sido elaborado, del lenguaje, para poder "destripar" el código que tiene entre manos y también de los escenarios de uso posibles para dicho software, de modo que sepamos si el error observado corresponde a un caso de uso más o menos frecuente y, a su vez, crítico del sistema.
- Un tester es un explorador nato: No tienen ningún miedo por adentrarse en terrenos y situaciones desconocidas. Un buen tester está deseando obtener la última versión beta de un cierto producto para explorar sus entrañas y, a ser posible, ser el primero en encontrarle fallos.
- Un tester es incansable: Un tester SIGUE BUSCANDO. Estas palabras resumen la filosofía de explorador de un tester. Debo confesar que frente a mi mesa de trabajo tenía un folio clavado en un panel de corcho con dos palabras en inglés a tamaño 48, negrita y subrayadas: KEEP TRYING!
- Perfeccionistas con criterio: La perfección de un producto radica en el equilibrio perfecto entre fiabilidad y coste. De nada nos sirve un software desarrollado en tiempo récord si tiene muchos fallos; a su vez, tampoco nos resulta útil un software fiable al 99'9999% si el coste de su desarrollo es estratosférico y por sí solo supone un balance negativo superior a las pérdidas que un producto "parcialmente" imperfecto puede conllevar.
- Creatividad: Probar lo extraño no es suficiente para un tester. Probar únicamente lo obvio es pecado capital.
- Buen criterio economista: Un tester debe ser capaz de decidir qué tipo de bugs buscar, estimar cuánto tiempo debe dedicar a seguir el rastro de un determinado bug o saber distinguir un bug real de algo que tan sólo es un "comportamiento disperso" de la aplicación.
Hasta aquí, definiríamos las características necesarias para la caza de bugs. Ahora bien, una vez que han sido detectados por el tester: ¿Qué características son deseables en un tester para continuar con el proceso de testing (localización de bugs + reporte de bugs + establecer prioridad de la solución + asegurarse de que han sido resueltos) adecuadamente?
- Diplomacia y capacidad de expresarse con tacto, aún cuando lo que se está haciendo es criticar el trabajo de otros... A pesar de tratarse de una crítica constructiva y enfocada a mejorar el producto final, no es algo sencillo. Uno de mis compañeros de equipo con más experiencia en el rol, me resumió esta cualidad con la siguiente frase:
"Hay que saber cómo dirigirse a un developer para resaltar defectos de lo que él ha hecho. A nadie le gusta que le digan que un hijo suyo es feo..."
- Persuasividad: Hay que ser capaz de acotar bien el bug expuesto y, realmente, convencer al resto de miembros del equipo de que dicho fallo DEBE ser resuelto a la mayor brevedad posible.
Como véis, existen unas cuantas características que diferencian a un tester de un developer, discusión que previamente ya habíamos tenido por Geeks.
¿Qué características os parecen fundamentales en un tester a vosotros?