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».