Pruebas de Software: Fundamentos
Las pruebas de software son esenciales para asegurar la calidad del producto final. Su objetivo principal es identificar errores antes de que el software llegue al usuario.
Objetivos de las Pruebas
- Encontrar defectos: Una prueba es exitosa si descubre un defecto.
- Verificación: Comprobar que el software cumple con las especificaciones de diseño.
- Validación: Asegurar que el software satisface los requisitos del análisis.
Características de las Pruebas
- Operabilidad: Capacidad de operar de manera limpia.
- Observabilidad: Los resultados de cada prueba deben ser observables.
- Controlabilidad: Grado en que las pruebas pueden ser automatizadas y optimizadas.
- Descomposición: Facilidad para dirigir las pruebas de manera específica.
- Simplicidad: Reducir la complejidad lógica y arquitectónica para simplificar las pruebas.
- Estabilidad: Minimizar los cambios durante la fase de pruebas.
- Comprensibilidad: Claridad en el diseño para facilitar las pruebas.
Indicadores de las Pruebas
- Errores encontrados.
- Cumplimiento de requerimientos.
- Desempeño del software.
- Indicación general de la calidad.
Responsables de las Pruebas
- Desarrollador: Conoce el sistema, pero puede ser indulgente.
- Probador independiente: Busca fallos de manera objetiva, enfocado en la calidad.
Pruebas de Caja Blanca
Concepto
Se basan en el conocimiento del código interno. Se busca ejercitar cada elemento del código.
Objetivo
Asegurar que todas las sentencias y condiciones se ejecuten al menos una vez.
Técnicas
- Notación de grafo de flujo.
- Complejidad ciclomática.
- Matrices de grafos.
Cobertura de Código
- Ejecutar cada sentencia al menos una vez.
- Cobertura de traza y bucles.
Limitaciones
Aseguran que el programa hace lo que debe, pero no que hace lo que se necesita.
Pruebas de Caja Negra
Concepto
Se basan en la interfaz y funcionalidades del software, sin conocer el código interno.
Técnicas
- Clases de equivalencia de datos.
- Pruebas de valores límite.
Pruebas en Entornos Especializados
- Interfaces gráficas de usuario.
- Ventanas, menús y uso del ratón.
- Entrada de datos.
- Documentación y ayuda.
Estrategias de Pruebas
Pruebas Unitarias
Verificar el funcionamiento de un módulo de código.
Pruebas de Integración
Evaluar la interacción entre módulos.
Pruebas de Regresión
Asegurar que los cambios no introducen nuevos errores.
Pruebas de Validación
Confirmar que se cumplen los requisitos del usuario.
Pruebas de Sistema
Verificar el sistema completo: robustez, rendimiento, seguridad, usabilidad e instalación.
Evitar Pruebas sin Estrategia
Probar todo al final (Big-Bang) dificulta el diagnóstico de errores.