El aseguramiento de la calidad del software (SQA) se define como un enfoque sistemático y bien planificado para evaluar la calidad del software. Comprueba el cumplimiento de los estándares, procesos y procedimientos de los productos de software. SQA incluye el proceso sistemático de asegurar que los estándares y procedimientos se establezcan y se sigan durante todo el ciclo de vida del desarrollo de software y el ciclo de prueba.
El objetivo principal de las pruebas es identificar los errores en el sistema lo antes posible, porque corregir los defectos temprano es menos costoso. Según los números de un estudio, si se encuentran errores después del lanzamiento, se vuelven más costosos de corregir y también afectan la confianza de los usuarios finales hacia la aplicación.
Un estudio de IBM muestra que es 100 veces más caro reparar los defectos que se encuentran después de que la aplicación ha sido lanzada.
- En resumen, la garantía de calidad del software es importante porque permite:
- Asegúrese de que el proyecto cumpla con los requisitos
- Prevenga, detecte y corrija defectos de manera temprana
- Minimizar los riesgos del proyecto
- Incrementar la confiabilidad del producto
- Mejorar la experiencia del usuario final
- Pruebas y cumplimiento de estándares
- Gestión de versiones y control de versiones
- Costo de desarrollo reducido
- Costo de mantenimiento reducido
Beneficios de las pruebas
- Reducción del tiempo de comercialización
- Alta calidad
- Recursos de prueba de vanguardia
- Dotación de recursos flexible
- Centrarse en las prioridades estratégicas
Las actividades de SQA tienen lugar en cada etapa del ciclo de vida del desarrollo. Las etapas se clasifican en áreas de recopilación de requisitos, diseño del sistema y codificación y prueba y finalmente lanzamiento.
- Verificación : proceso de evaluación de un sistema o componente para determinar si los productos de una determinada fase de desarrollo satisfacen las condiciones impuestas al inicio de esa fase.
- Validación : proceso de evaluación de un sistema o componente durante o al final del proceso de desarrollo para determinar si satisface requisitos específicos.
Durante las etapas de análisis de requisitos, diseño y codificación del desarrollo de la aplicación, las salidas de cada etapa deben medirse, monitorearse y gestionarse para que cada salida pueda verificarse con sus criterios de salida predefinidos. Cuando la aplicación final ha completado las etapas de codificación e integración, debe ser validada con los requisitos de la aplicación original y aprobada por la alta dirección como prueba de validación aprobada. En cada etapa del desarrollo de esta aplicación, los esfuerzos durante el desarrollo deben mejorarse en la medida de lo posible para mejorar la calidad y seguir siendo competitivos.
La diferencia entre verificación, validación y medición de la calidad del software
Un esfuerzo de verificación efectivo debe demostrar que todos los requisitos se han cumplido correctamente, esto se hace probando los requisitos con la entrega del producto. Estas pruebas se pueden volver a ejecutar para lograr los mismos resultados en caso de que se cambie el sistema en una fecha posterior.
La verificación muestra que un producto cumple con los requisitos especificados en hitos predefinidos durante el ciclo de vida del desarrollo. La validación comprueba que el sistema cumple con los requisitos del cliente al finalizar el ciclo de vida del desarrollo.
La validación es el proceso de evaluación del producto final para verificar si la aplicación cumple con las expectativas y los requisitos del cliente. Es un mecanismo dinámico de validación y prueba del producto real. Las pruebas de validación utilizan métodos como pruebas de caja negra (funcionales), pruebas de caja gris y pruebas de caja blanca (estructurales), etc.
La calidad del software que se produce en cada proceso o modelo se describe en términos de la cantidad de defectos que se crean. Normalmente, las métricas más comunes de defectos son:
- Número total de casos de prueba
- Número de casos de prueba aprobados
- Número de casos de prueba fallidos
- Número de casos de prueba bloqueados
- Número de defectos encontrados
- Número de defectos aceptados
- Número de defectos rechazados
- Número de defectos aplazados
- Número de defectos críticos
- Número de horas de prueba planificadas
- Número de horas de prueba reales
- Número de errores encontrados después de la entrega
Las diferentes actividades de Aseguramiento de la Calidad son las siguientes:
- Mantener la calidad del proyecto según las especificaciones y requisitos comerciales.
- Prevención de defectos y métodos formales para otras técnicas de prevención de defectos.
- Reducción de defectos.
- Inspección, revisiones formales e informales: Detección y remoción directa de fallas sin ejecutar el escenario del proyecto.
- Prueba del proyecto para la observación de fallas y eliminación de errores.
- Identificación de riesgo.
- Técnicas y métodos de seguimiento de defectos.
- Tolerancia a fallas de software.
- Comentarios finales y mantenimiento de informes.
Por qué la garantía de calidad del software es tan importante
- Perspectiva del usuario : La garantía de calidad de la aplicación de software es buena para ver la aplicación desde la perspectiva del usuario final y crear un escenario en función de la misma.
- Defecto en la fase de prueba : es bueno encontrar los problemas en una etapa temprana y solucionarlos antes de que el cliente los encuentre en producción, por ejemplo.
- Riesgo del proyecto : el control de calidad al comienzo de un proyecto juega un papel clave en la mitigación de los riesgos que se han identificado durante las fases de especificación.
- Fiabilidad : aumenta la confianza de los usuarios finales cuando encuentran que la aplicación funciona según sus expectativas. Incluso un escenario negativo admite un fallo total aumenta la confianza del usuario final y hace que la aplicación sea inteligente.
- Facilita al usuario final: ayuda al usuario final a realizar tareas comerciales sin tener ningún conocimiento técnico sobre la aplicación. Las aplicaciones fácilmente comprensibles tienen más usuarios que las aplicaciones tradicionales.
- Prevención de violaciones de seguridad : ayuda a los desarrolladores de software a proteger los datos del usuario en el entorno de producción y detectar cualquier fuga de datos en el entorno de prueba.
- Comprensión de la carga : ayuda a comprender la aplicación que funciona bajo simulación y solucionar los problemas después de comprender la carga real del sistema en el entorno de producción.
- Automatización : Probar el software con el objetivo de reducir los esfuerzos de prueba, entregando capacidad de manera más rápida y asequible. Ayuda a crear software de mejor calidad con menos esfuerzo.