Ultimamente se ha estado hablando mucho del tema de los QA en uno de los grupos de Underc0de, y como actualmente me desempeño como QA en una empresa de Software, voy a comentar mi experiencia personal en esta área
¿Qué es un QA?
Para resumir en un par de lineas, QA (Quality Assurance) o Aseguramiento de Calidad hace referencia a la forma de medir la calidad, no solo del producto, sino también del proceso de desarrollo.
Muchas empresas para abaratar costos, dejan de lado el área de QA, quizás lo ven innecesario o una pérdida de tiempo, pero a la larga se nota la diferencia. Es imposible que una aplicación o proyecto sea perfecto, siempre va a tener defectos, la misión de un QA no es simplemente encontrarlos, sino también ayudar a prevenirlos.
Tester vs QA
Mucha gente confunde los términos de Tester y QA, o simplemente los mete dentro de la misma bolsa, pero son 2 perfiles totalmente diferentes.
Tester: Es aquel que se encarga de detectar y reportar fallas en un sistema durante la fase de desarrollo.
QA: Se encarga de asegurar la calidad no solo del producto en si, sino también de todas los procesos del desarrollo.
Para resumir, un QA realiza las tareas de un Tester, pero un tester no realiza las tareas de un QA. En otras palabras, un QA es un tester evolucionado.
QA vs QC
Aseguramiento de la Calidad (QA) y Control de Calidad (QC) son dos términos que pueden dar lugar a varias interpretaciones, debido a los múltiples significados de «aseguramiento» y «control», y que pueden originar confusión a los profanos en sistemas de gestión de calidad.
Una definición para “aseguramiento de la calidad” es: el conjunto de actividades planificadas implementadas dentro de sistema de calidad que proporcionan la confianza de que un producto o servicio cumple los requisitos de calidad.
Una definición para “control de calidad” es: describe el conjunto de técnicas operativas y actividades utilizadas para comprobar los requisitos de calidad de un producto o servicio.
Según la norma ISO 900:2005 “Sistemas de gestión de la calidad. Fundamentos y vocabulario”:
- Control de calidad (QC): Parte de la gestión de calidad orientada al cumplimiento de los requisitos de calidad.
- Aseguramiento de la calidad (QA) : Parte de la gestión de calidad orientada a proporcionar confianza en que se cumplirán los requisitos de la calidad.
Tareas de un QA
Análisis
Ayuda al Product Owner a definir tareas y criterios de aceptación. el QA suele tener una visión más horizontal del producto y el desarrollo, por lo que puede ayudar a definir las User Stories y que queden claras para los desarrolladores.
Desarrollo de un plan de pruebas
En base a los criterios de aceptación, elabora un plan de prueba (test plan) que va a contener distintos casos de pruebas (test cases) teniendo en cuenta los diferentes flujos de la aplicación
Estrategias de testing
Dependiendo del estado del proyecto, los tiempos, el tamaño de la aplicación, entre otros factores, dependerá de la estrategia de testing que se empleará
Elaboración de reportes
No se si lo harán todos los QA, pero yo envío reportes semanales para que el PO tenga conocimiento del estado de la plataforma (bugs existentes y fixeados)
Scripts Automatizados
No quiero meterme mucho en este tema porque va a dar mucho de que hablar en otro post, pero los QA pueden ser manuales o automatizadores. En este segundo caso, elaboran scripts que ejecuten cierta tarea de forma automática. Para poder automatizar, obviamente es necesario saber programar.
Como para concluir el post, se puede decir que un QA le otorga calidad al producto, al desarrollo y al proceso. No es una pérdida de dinero, ya que al cliente final le llega un producto listo para usar.
Muchos desarrollos que no tienen área de QA, entregan productos sin probar y terminan fallando en producción, gastando dinero en arreglar las fallas y perdiendo tiempo para la puesta en marcha.