El rol de QA

Cuando quise escribir sobre el rol de QA en un equipo vinieron a mi mente muchas preguntas que usualmente tienen algunos Stakeholders que no están familiarizados con el desarrollo de software y/o metodologías ágiles como por ejemplo: ¿Qué significa QA?, ¿Cuál es el objetivo de contar con un QA?, ¿Qué hace exactamente?. Así que desarrollare el tema a partir de esas interrogantes.

Que significa

Dependiendo del contexto de la empresa, estructura organizacional, giro de negocio, funciones inherentes del rol y algunos otros parámetros mas específicos como las tareas que se le asignan, se ha bautizado al rol con diferentes nombres como: Software Tester, Tester Engineer, Quality Control Engineer, Quality Assurance Engineer, Quality Analyst, por mencionar algunos.

Para nuestro contexto, un equipo de desarrollo de software que trabaja con metodologías ágiles, personalmente prefiero llamarlo Quality Analyst y en adelante me referiré al rol como Analista de Calidad ó QA por sus siglas en inglés.

Su objetivo

Uno de los doce principios del Manifiesto Ágil dice: “Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor”. Partiendo de este principio y tratando de describirlo genéricamente yo diría que el objetivo de un Analista de Calidad como parte del equipo es:

“Procurar la entrega oportuna y continua de Software de Calidad involucrándose desde la concepción de la idea hasta que la implementación de esta idea llega al consumidor”.

Como cumple su objetivo

Quien desempeñe este rol se especializara en todo lo relacionado a calidad dentro del equipo

  • Será el responsable de fomentarla durante todo el proceso de desarrollo
  • Enfocarse en prevenir defectos y no solo en tratar de detectarlos
  • Involucrar y trabajar con cada integrante del equipo para que se entienda y se ponga en practica nuestro objetivo.

Cuando todos conozcan y participen activamente en mantener el nivel de calidad y busquen mejorar continuamente podremos afirmar que

“La calidad es responsabilidad de todos”.

Que hace exactamente

Este rol se convierte en una especie de carta comodín, cuyas tareas y responsabilidades se cumplen involucrando y trabajando con todos los integrantes del equipo, para describir algunas de estas interacciones y actividades tomare parte de un articulo (AgileTesting es igual a colaboración) acertadamente escrito por Johnny Ordoñez.

Trabaja junto con el Product Owner y/o Business Analyst y apoya en:

  • Mejor comprensión de las necesidades del cliente
  • La preparación y revisión de historias
  • La definición de Criterios de Aceptación (a partir de los cuales se pueden generar Escenarios de Prueba)
  • Mejor entendimiento del Dominio de Negocio
  • Identificar dependencias entre Historias
  • Identificar requerimientos No funcionales

Trabaja junto con los Developers y apoya en:

  • La definición de estrategias de prueba para las historias
  • Apoya en la automatización de pruebas funcionales (ATDD, E2E)
  • Detecta y notifica bugs
  • Entrega feedback temprano de las historias
  • Sugiere mejoras funcionales y de usabilidad

Por su lado, el Analista de Calidad trabaja en:

  • Preparación de la estrategia de pruebas del sprint
  • Preparación y mantenimiento del Ambiente de Pruebas
  • Preparación de Casos de Pruebas de las historias del Sprint
  • Creación y mantenimiento de datos de prueba
  • Validación de “Done” de las Historias
  • Registro y notificación de Bugs
  • Aceptación de la Historia junto con el PO
  • Llevar las métricas de Calidad de Software

Trabaja junto con otros QAs y equipo de operaciones en:

  • Diseñar y preparar la estrategia general de pruebas
  • Colaborar junto con los Stakeholders en las pruebas UAT
  • Identificar los escenarios y flujos de negocio más vitales
  • Difundir el Plan de Pruebas, Casos de Pruebas para Integración
  • Ayuda a conocer la salud del entregable
  • Identificar dependencias
  • Apoyar en las pruebas de requerimientos No funcionales
  • Mantenimiento y refactorización de las pruebas de sistema (end-to-end)

Calidad mas allá del Software

Cuando hablo de Calidad no me refiero solo al software, también necesitamos calidad en los procesos, calidad en la tecnología y herramientas utilizadas y calidad en la relación entre los miembros del equipo, porque todos estos elementos influyen en la calidad del producto desarrollado.

Debemos desarrollar habilidades de comunicación y negociación que permitan tener conversaciones fluidas y alcanzar acuerdos entre los miembros del equipo y con el cliente si debemos interactuar con el. Un equipo que comunica oportunamente sus dudas y puntos de vista entregará un mejor producto que un equipo que no se comunica bien.

Las herramientas y tecnologías que el equipo utilizara para implementar la solución deberán ser cuidadosamente seleccionadas y correctamente utilizadas. No importa cuan bueno sea un carpintero si utiliza herramientas inadecuadas o de mala calidad no podrá garantizar un producto de calidad.

Debemos velar por la calidad en el proceso que seguimos para el desarrollo del software pero también en los procesos del cliente que queremos automatizar, por ejemplo si un cliente pide automatizar un proceso de negocio ineficiente no importara cuan bien este implementada nuestra solución, tan solo tendremos un proceso automatizado pero con los mismos problemas y nuestro software no sera de calidad porque no agrego ningún valor.

Finalizo con el pensamiento de Kenny Cruden, un colega que dice que el rol de QA en un equipo es cuestionarse y cuestionar constantemente

“¿Estamos construyendo el producto correcto?, si es así, ¿Estamos construyéndolo correctamente?”.