¡Me motivaron a escribir este artículo! Un amigo desarrollador muy estimado y demasiado bueno en su trabajo, en una tertulia me dijo “Tú ponte a hacer tus documentitos”, refiriéndose a mis planes e informes de pruebas (que tu mente interprete cuál fue el mensaje que quiso transmitir). Obviamente no me iba a poner a discutir con él y tratarlo de hacer entender que mis actividades como SQA(Software Quality Assurance) son tan importantes como las de él, preferí escribir este artículo.
Yo no pedí ser SQA, la vida me puso aquí. Me faltaban mis prácticas profesionales para terminar mi ingeniería, quería una oportunidad para comenzar a trabajar, mi meta era ser programador así que me aventuré a tocar puertas; toqué tantas que hasta a fábricas de pruebas acudí (sin darme cuenta) y una de ellas, de forma casi inmediata me dijo “¡Preséntate el lunes!”. Ahí empezó la aventura, desde entonces ¡vivo enamorado de la calidad del software! Hoy en día, con orgullo reconozco que mi deseo por la calidad de software se ha convertido en una obsesión, ¿a alguno le ha pasado? O ¿debo de ir al psicólogo?
Te mencionaré a continuación un listado de habilidades que como aseguradores de la calidad debemos poseer… para que vean que testear, no es comer enchiladas. Se me ocurrió manejarlas como “poderes”, para darle un poco más de interés a la lectura, espero la disfruten tanto como yo al redactarla.
1. Predecir el futuro y retroceder al pasado
“Si ingreso en el campo A el valor X y en el campo C el valor M, seguro la aplicación fallará”.
Un buen tester tiene la habilidad de predecir el futuro, según su experiencia puede determinar una serie de valores con los cuales la aplicación puede presentar un fallo, puede pronosticar cómo puede la aplicación ser más fácil de utilizar por el usuario, inclusive puede anunciar flujos operativos que ni al usuario solicitante se le habían ocurrido.
“Introduje 34522 (entero) en el campo A, seleccioné la opción Guardado automático, ingresé 32.1(flotante) en el campo M y al intentar guardar el registro la aplicación presentó un fallo”.
Realizas testing y logras que la aplicación presente un fallo, pero para comprobarlo tendrás que replicarlo, ¿recuerdas que flujo realizaste? ¿qué hiciste primero, después y al último para que “tronara”? Los testers regresamos al pasado y tenemos la habilidad de reproducir el flujo que ocasionó la ruptura del sistema. Suena una tarea muy sencilla, pero imagina que estás dando de alta un contrato bancario que consta de 5 secciones con 40 preguntas cada una, y la aplicación crasheó (crash, dejó de funcionar) al finalizar las 5 secciones y guardar las respuesta, ¡Sopas! Complicado, ¿Verdad? ¿Qué tipo de contrato elegiste? ¿La nacionalidad? ¿Actividad económica? ¿Qué otro valor se te ocurre?
2. Planear y generar estrategias para combatir errores
“Voy a dar de alta usuarios, luego los eliminaré, después crearé otros usuarios para editar sus datos”
Seguramente ese es el pensamiento de un tester Jr. que falta pulir, seguramente será un excelente recurso por la forma en que genera sus casos de prueba con su poca experiencia, pero que le falta un poco sentido de planeación y estrategia. ¿Por qué no das de alta usuarios, luego los editas y al final los eliminas? No es necesario crear dos veces un usuario para validar dos funcionalidades que pueden realizarse solapadamente. Ahí puedes matar tres pájaros de un tiro: alta, edición, eliminación. Planear no sólo es decir “Voy a iniciar pruebas el 23 del presente”, planear implica preparar la realización de algo (¿qué ocuparás para tus pruebas? ¿bajo qué condiciones? ¿qué le duele más al sistema? ¿por dónde iniciaré?).
3. Entendimiento de programación
¡Vaya poder! Si bien no nos dedicamos a programar, pero debemos tener conocimientos de programación, sobre todo conocer la lógica. Conocer sobre programación nos permite predecir y ocasionar defectos, entender la lógica de la aplicación, sugerir soluciones, etc. Cuando a un desarrollador le explicas de manera más técnica el defecto, le facilitas la búsqueda del incidente y la solución del mismo.
No me atrevo a mencionar que un tester que no ha programado no será buen elemento porque sé que hay excepciones, y ahí el carácter cuenta más que los conocimientos necesarios para “tirar código”. Se necesita “testing a conciencia”, en lo particular, no me atrevo a liberar una aplicación con incidentes, siempre trabajo en lo posible para liberar con el 100% de efectividad (OJO: No digo que las aplicaciones vayan libres de defectos, también como humanos, se nos pueden llegar a “colar” algunos), pero si me ha tocado trabajar con gente que no le apasiona la calidad y por ende, no la procuran, ¿me moví de tema? ¡Ups! …
4. Adivinar pensamientos y “teletransmitir” ideas
“Necesito que me hagan un sistema que lleve a cabo el inventario de mi equipo médico”
Y en base a esa afirmación, ¡A trabajar! Generalmente el cliente te hace peticiones a muy alto nivel, no te da el detalle de todas las posibles opciones que su sistema necesita, quiere algo que le funcione, se adapte y que además sea fácil de usar. Es aquí cuando los testers usamos nuestro don de la predicción e intuimos cuestiones como “Cuando el stock del artículo sea menor a 5, el sistema debe enviar una notificación al encargado del almacén para que solicite más material”. La idea es que cuando se le presente al cliente la aplicación, responda con un “¡Justo lo que solicité!”.
“No entiendo por qué solicitas que el campo A esté junto al campo M, si el cliente no dijo que quería un orden, sólo dijo que se mostraran y funcionaran”
Son cuestiones muy comunes cuando tratas de explicar por qué es apropiado que el campo M continúe después del campo A. Estamos hablando de cuestiones de usabilidad probablemente, si vas a registrar un usuario lo ideal es que escribas su nombre, apellidos y luego la edad, sería confuso para el usuario solicitar el nombre, edad y luego apellidos. En ocasiones no es tan fácil dar a entender una idea, y menos cuando tiene que ver con interfaces o formatos impresos, es ahí cuando los testers enviamos ideas/imágenes directamente a la mente de la audiencia, los cuales responden con un “¡Ah! ¡Ya caché tu punto!”
“La aplicación no guarda la información”
Seguramente te responderán con un “¿Ah sí? En mi equipo si funciona”, apreciado tester, ¿y el súper poder de comunicación? De poco sirve que hayas encontrado una incidencia si no sabes cómo transmitir o comunicar el hecho. El tester debe de poseer buena comunicación escrita (muy útil para detallar incidencias en herramientas como ALM de HP, Mantis, o cualquier otro bug tracker.) y hasta verbal (para el caso de aquellos que trabajamos de la mano con desarrollo). Cuando levantas una incidencia, debes de ser capaz de transmitir ideas concretas y de valor, recuerda que menos es más, no debes documentar incidencias con engorrosos textos que al final el responsable de la corrección ignorará (“¿Voy a leer todo eso?”). Hablando de comunicación… ¿Me estoy dando a entender? Entonces ya se imaginarán lo malo que soy reportando incidencias (jejeje).
5. Encantos sociales, ¡Caerle bien a las personas!
“La aplicación no sirve, corrígela y me avisas para validar que ya funcione”
Si trabajas en una fábrica de pruebas, este talento no tiene importancia para ti, pues seguramente enviarás al Project Manager (o al intermediario) el defecto y éste tendrá que arreglársela para ver cómo se soluciona, así que no os preocupéis. Pero si trabajas en una empresa que desarrolla y realiza testing a sus sistemas, ¡Vaya que es indispensable! En primera, tienes que dejar muy en claro que QA está en el mismo barco que desarrollo, es un trabajo en equipo y el fin común es la aprobación del cliente. Seguramente si llegas a informar un defecto con una mala actitud o no usando las palabras adecuadas, los desarrolladores (¡aguas! También son personas con sentimientos) te van a mandar derechito a tu lugar y los entiendo, no es fácil admitir errores. Siempre al reportar, usar la empatía: cuidar el tono de voz, las palabras, trato, etc., las incidencias no sólo serán leídas por el equipo de desarrollo, recordar siempre que un objetivo de las pruebas es facilitar la toma de decisiones para gerentes/directivos (¿se puede instalar en producción? ¿qué se debe mejorar? ¿alguna capacitación para los desarrolladores?…).
6. Absorción inmediata de nuevos conocimientos y aplicación de lo aprendido para la mejora
Cada día están surgiendo más y mejores tecnologías, las exigencias de los clientes cada vez son más altas, la tecnología cada día nos proporciona mejores herramientas para facilitar nuestro día a día. Un buen tester debe tener la curiosidad para indagar en nuevas herramientas, leer artículos, investigar, analizar las nuevas técnicas con la finalidad de aplicarlo en sus labores diarias. La tecnología se apresura a crecer y los tester nos apresuramos a entenderla.
¿Y a mí quién me estudia? (El cliente)
No basta con saber y conocer nuevas tecnologías, ¿le sirve a tu cliente? ¿y qué hay de sus usuarios? ¿utilizarán apropiadamente la aplicación? Es una mega aplicación con muchísimas funcionalidades novedosas, pero ¿están preparados para su uso? Cada día está tomando más importancia el diseño centrado en el usuario, es algo que me emociona en gran medida porque al final, con la constante involucración del cliente y la facilidad con que este puede hacer sus peticiones, al final, él es el que “moldea” desde el inicio lo que requiere, yo puedo probar que la aplicación funcione correctamente, pero no puedo garantizar que funcione como lo necesitas. Esta semana le presenté una propuesta a mi jefe para aplicar las pruebas UAT (User Acceptance Testing, pruebas de aceptación del usuario) y para le pedí su apoyo para también formalizar las pruebas de usabilidad (realizadas con el apoyo de usuarios considerando las personas que usarán la aplicación) y ¡me dio luz verde! Con esto garantizaremos más la aceptación del usuario y reduciremos el nivel de rechazo hacia la misma (si es que llegara a existir. En tu organización, ¿aplican pruebas de usabilidad y de aceptación?
¡Fin! Estos son las habilidades que considero deben de ser las más importantes para tener el perfil de SQA. Faltan más, ¿me quieres ayudar en la sección de comentarios? ¿Qué otro poder se me escapó?
¡Gracias por leer! Disfruta tu fin de semana.