La imagen que ilustra el artículo, la he sacado una parte del documento sobre Vuelta a los orígenes: Testing. Recomiendo leer la sección por qué le he dado un enfoque diferente al artículo y ambos se complementan.
Lo primero de todo es que estos términos, a veces son ambiguos por qué en tu organización o no los tienen claros o los han definido de otra forma y tú no tienes esa información. Por ejemplo, en matemáticas solemos usar cóncavo hacia arriba y cóncavo hacia abajo para evitar ambigüedades (o para que no nos suspendan la asignatura de cálculo). En realidad, la RAE tiene 2 acepciones sin ninguna ambigüedad y no tenemos por qué inventarnos algo nuevo, cóncavo y convexo, pero si es lo que decide la clase entera, ninguna pega, se usa y punto; lo importante es manejar los mismos conceptos. Ahora bien, usarlos mal por desconocimiento es otra historia.
Por tanto:
- Aseguramiento de la calidad o garantía de la calidad. Quality Assurance (QA).
- Control de calidad. Quality Control (QC).
Cuántas veces has visto al alguien decir, los errores o los saca el cliente o los saca QA cuando en realidad debería decir QC.
Tal y como ilustra la imagen, son conceptos estrechamente relacionados y ambos son aspectos fundamentales de la gestión de la calidad, su enfoque es diferente:
- QC se usa para verificar la calidad del producto.
- QA son procesos de gestión de calidad.
La clave del éxito en un proyecto es aplicar ambos.
Si solo tenemos QA, solo tendremos un conjunto de procesos que pueden aplicarse para garantizar un grado de calidad en nuestra solución.
Si solo tenemos QC, nos limitamos a realizar pruebas sin una visión clara que nos permita comprender y eliminar los problemas, además no nos permitirá impulsar una mejora continua en nuestra solución.
En cualquier caso, si no se usan conjuntamente, es poco probable que la solución entregada cumpla las expectativas del cliente, dicho de otro modo, que no cumpla los requisitos que nos proporcionó el cliente y la razón de ser de la solución.
¿Exactamente que es QA y QC?
El punto de partida no lo marco yo, lo marca la ISO 9000, conjunto de normas que se refieren a la gestión de calidad y están orientadas a satisfacer a todas las partes de un proyecto, no solo al cliente.
En la ISO 9000, clausula 3.2.10, define control de calidad como: una parte de la gestión de la calidad centrada en el cumplimiento de los requisitos de calidad.
En la ISO 9000, clausula 3.2.11, define seguramiento de calidad como: Una parte de la gestión de la calidad centrada en proporcionar confianza en el cumplimiento de los requisitos de calidad.
Tambien existen definiciones formales de otras grandes corporaciones, quizá para mi la mayor en este aspecto: NASA’s Approach to Software Assurance – (NTRS)
Donde define control de calidad (QC) como: la función de la calidad del software que comprueba que el proyecto sigue sus normas, procesos y procedimientos, y que el proyecto produce los productos internos y externos (entregables) requeridos
Y aseguramiento de calidad (QA) de software como: la función de la calidad del software que asegura que los estándares, procesos y procedimientos son apropiados para el proyecto y se implementan correctamente
En resumen: la garantía de calidad se centra en el proceso, mientras que el control de calidad se centra en el resultado
La misión crítica de QA es la prevención. Veamos por qué:
Se centra en planificar, documentar y acordar un conjunto de normas que garanticen la calidad. Se debe introducir desde el principio del proyecto y se basan tanto en especificaciones del software como en los requerimientos empresariales.
Habitualmente verás que QA son planes de calidad, de inspección y test (efectivamente las pruebas que hablaba en mi anterior articulo).
El objetivo de QA es evitar que los problemas lleguen a producción. Es decir, siendo proactivos logramos garantizar un nivel de calidad establecido previamente.
Cualquier estrategia de QA para que tenga éxito implica un alto nivel de comunicación entre los equipos que participan en el proyecto.
La misión crítica de QC es establecer la estrategia de detección. Veamos por qué:
Al tratarse de actividades destinadas a determinar el nivel de calidad e la solución, nos esta diciendo que es posteriori, es decir, tras terminar la solución.
Se trata de un método reactivo que nos permite medir y supervisar la calidad, e incluye técnicas y operaciones que nos permita medir si se cumplen los requisitos del negocio. Habitualmente se acuerdan con el cliente y todas las partes interesadas.
De otra forma, el QC implica la verificación de la conformidad de los resultados con los niveles de calidad deseados. Que contengan los requisitos de cliente y se comprueba via pruebas estructuradas, inspeccionando codigo, etc. Pero ya desde un punto de vista manual.
La gestión de la calidad aporta mucho beneficio y no se puede ignorar. Es un eslabón de la mejora continua.
La intención es que vierais de forma clara los conceptos. No voy a entrar en los beneficios que nos da en una capa superior, negocio, de forma exhaustiva o desarrollar más esta parte, solo quiero que os quedéis con que nos aportará: mayores niveles de satisfacción de clientes, motivación extra en el equipo y confianza. Cuanto más arraigado este más eficaces y eficiente será.