Estrategias y Criterios de Pruebas de Software: Tipos y Metodologías
Conceptos Clave en Pruebas de Software
Estrategia de prueba: Proporciona una descripción de los pasos que se deben realizar como parte de la prueba.
Verificación: Se refiere a un conjunto de tareas que garantizan que el software implementa correctamente una función específica.
Validación: Conjunto diferente de tareas que aseguran que el software que se construye sigue los requerimientos del cliente.
Limitaciones en las Pruebas de Software
Limitaciones teóricas y prácticas de las pruebas: Se considera que existen infinitos casos de prueba y hay que buscar un equilibrio (recursos y tiempo limitados).
- Selección de valores de entrada: Selección de un conjunto finito de casos de prueba.
- Comparación de salida obtenida con la esperada: Decidir si los resultados observados son aceptables o no.
Niveles de Pruebas de Software
- Modelo único: Pruebas Unitarias.
- Grupo de módulos: Pruebas de Integración.
- Sistema completo: Pruebas de Sistema.
Pruebas Unitarias
Las pruebas unitarias verifican el funcionamiento aislado de piezas de software que pueden ser probadas de forma separada. Esto puede incluir:
- Subprogramas/Módulos individuales.
- Componente que incluye varios subprogramas/módulos.
Pueden llevarse a cabo con:
- Acceso al código fuente.
- Ayuda de herramientas de depuración.
- Participación de los programadores del código.
Pruebas de Integración
Verifican la interacción entre los componentes de un sistema de software.
Estrategias:
- Guiadas por la estructura: Los componentes se integran según hilos de funcionalidad.
- Incremental: Se combina el siguiente módulo que se debe probar con el conjunto de módulos que ya han sido probados.
- Incremental Ascendente (Bottom-Up, de unitarias a integración). Top-down (profundidad, altura).
Pruebas de Sistema
Verifican el comportamiento del sistema en conjunto. Los fallos en las funciones se suelen detectar en niveles anteriores (unitarias e integración). Se comprueban los requisitos no funcionales. Se prueba:
- Interfaces.
- Utilidades.
- Unidades físicas.
- Entorno operativo.
Clasificación de Pruebas Según su Finalidad
- Pruebas unitarias y de integración: Comprueban especificaciones funcionales.
- Pruebas de sistema: Comprueban requisitos no funcionales.
- Pruebas de aceptación: Comprueban el comportamiento frente a los requisitos del cliente.
- Pruebas de instalación: Comprueban el comportamiento del sistema frente a los requisitos de software.
- Pruebas Alfa (misma empresa) y Beta (fuera): Pruebas en grupos pequeños de usuarios potenciales.
Criterios de Cobertura y Metodologías de Pruebas
Criterios de Cobertura
- Sentencias: Cada sentencia se ejecuta al menos una vez.
- Decisiones: Cada decisión tiene, al menos una vez, un resultado verdadero y, al menos una vez, uno falso.
- Condiciones: Adopta el valor verdadero al menos una vez y falso al menos una vez.
- Decisión/condición: Criterio de condiciones y de decisiones.
- Condición múltiple: No se realiza en forma simultánea.
Metodologías de Pruebas Basadas en la Experiencia
- Ad-Hoc: Dependen totalmente de la habilidad, intuición y experiencia.
- Exploratorias: Las pruebas se diseñan, ejecutan y modifican de forma dinámica. La eficiencia depende fundamentalmente del conocimiento del ingeniero de pruebas.
Metodologías de Pruebas Basadas en la Especificación
- Tabla de decisión: Se usan tablas de decisión entre condiciones (entrada) y acciones (salidas).
- Máquinas de estados finitos: Los programas se modelan como máquinas de estado finito.
- Especificación formal: Disponer de especificaciones en un lenguaje formal permite la derivación automática de casos de prueba.
- Aleatorias: Generación aleatoria de datos de entrada con la secuencia y la frecuencia con las que podrían aparecer en la práctica.
Metodologías de Pruebas Basadas en el Código
- Flujo de Control: Se usan criterios para cubrir todas las sentencias o bloques de sentencia de un programa.
- Flujo de Datos: El diagrama es anotado con información sobre cómo se definen, usan y eliminan las variables del programa.
Metodologías de Pruebas Basadas en Defectos
- Conjetura de Errores: Se diseñan intentando descubrir los defectos más plausibles del programa.
- Mutación: Es una versión ligeramente modificada de un programa. La diferencia es un pequeño cambio sintáctico.
Metodologías de Pruebas Basadas en el Uso
- Perfil operacional: Se produce y se prueba el entorno operativo en que deberá funcionar el programa.
- SRET: Método en el cual las pruebas son «diseñadas y guiadas por objetivos de fiabilidad y criticidad de las diferentes funcionalidades».