Validación y Verificación de Software: Fundamentos y Metodologías

Enviado por Programa Chuletas y clasificado en Diseño e Ingeniería

Escrito el en español con un tamaño de 5,29 KB

Pruebas de Software: Fundamentos y Metodologías

Propósito de las Pruebas

  • Demostrar al desarrollador y al cliente que el sistema satisface los requisitos especificados. Se debe asegurar al menos una prueba por cada requisito.
  • Identificar fallos en el comportamiento del software o comportamientos no deseados. En este contexto, el éxito de una prueba se manifiesta al demostrar que el sistema falla.

Estructura del Plan de Pruebas

Un plan de pruebas integral debe incluir los siguientes elementos:

  • Proceso de prueba (Fases del proceso).
  • Trazabilidad de requisitos.
  • Elementos a ser probados.
  • Calendario de pruebas.
  • Procedimiento de registro de pruebas.
  • Requisitos de hardware y software.
  • Restricciones.

Proceso de Pruebas

La asignación de responsabilidades para la ejecución de las pruebas recae en el jefe de proyecto.

Fases del Proceso de Pruebas

  1. Pruebas Iniciales (Programador): El programador realiza pruebas intuitivas sobre lo que ha desarrollado, considerando el comportamiento esperado del código.
  2. Pruebas del Sistema (Equipo de Pruebas): El equipo de pruebas evalúa el sistema como un todo, verificando la integración de todos los componentes desarrollados.
  3. Pruebas en Entorno de Implantación: El sistema se somete a pruebas en el entorno donde será desplegado.
  4. Pruebas en Operación: Se ejecutan pruebas durante la fase de uso activo del sistema.

Tipos de Pruebas

Pruebas Unitarias (Pruebas de Componentes)

  • Objetivo: Detectar fallos en componentes individuales como funciones, métodos de una clase, clases completas o conjuntos de clases con interfaces definidas.
  • Ejemplo: En casos de herencia, es crucial probar la superclase, las subclases, así como todos sus atributos y operaciones asociadas.

Pruebas del Sistema

Estas pruebas implican la integración de dos o más componentes para su evaluación conjunta. Un ejemplo de esto es la metodología incremental.

Existen dos tipos principales:

  • Pruebas de Integración:
    • Se tiene acceso directo al código fuente.
    • Se conocen como pruebas de caja blanca.
    • Al identificar un fallo, el equipo rastrea su origen directamente en el código.
  • Pruebas de Entrega:
    • No se tiene acceso al código fuente (pruebas de caja negra).
    • Si el cliente participa activamente en estas pruebas, se denominan pruebas de aceptación.

Pruebas de Rendimiento

  • Se ejecutan una vez finalizadas las pruebas de integración.
  • Requieren la creación de un perfil operacional para su correcta ejecución.
  • Generalmente, se somete el sistema a cargas de trabajo elevadas para determinar su rendimiento bajo presión.

Pruebas de Estrés

  • Consisten en sobrecargar el sistema para evaluar su comportamiento y determinar hasta qué punto funciona correctamente bajo condiciones extremas.

Nota: Típicamente, las pruebas de integración se enfocan en la verificación del sistema, mientras que las pruebas de entrega se orientan a su validación.

Diseño de Casos de Prueba

  • Objetivo: Crear un conjunto de casos de prueba que maximicen la detección de defectos y fallos, y que demuestren la conformidad del sistema con los requisitos.
  • Proceso de Diseño:
    1. Seleccionar una característica específica del sistema para probar.
    2. Identificar y documentar las entradas de datos, tanto válidas como no válidas.
    3. Identificar el proceso o algoritmo que se aplicará a las entradas.
    4. Identificar y documentar las salidas esperadas para cada caso de prueba.

Pruebas Evolutivas

Su propósito es identificar un conjunto de casos de prueba que logren provocar fallos en el sistema, permitiendo así su corrección.

Pruebas de Cobertura

Estas pruebas miden la proporción del código fuente que es ejecutado durante el proceso de pruebas. Una cobertura del 85%-90% se considera generalmente aceptable.

Pruebas de Regresión

Las pruebas de regresión consisten en un conjunto de casos de prueba diseñados para confirmar que el Sistema Bajo Prueba (SUT) opera correctamente después de realizar modificaciones o correcciones.

Automatización de las Pruebas

Los componentes clave para la automatización de pruebas incluyen:

  • Gestor de Pruebas: Herramienta encargada de ejecutar las pruebas (ej. JUnit).
  • Generador de Datos de Prueba: Crea los datos necesarios para la ejecución de las pruebas.
  • Oráculo: Genera las predicciones de los resultados esperados.
  • Generador de Informes: Elabora informes detallados sobre los resultados de las pruebas.
  • Analizador Dinámico: Analiza el comportamiento del sistema durante la ejecución de las pruebas.
  • Simuladores: Replican el entorno operacional para facilitar las pruebas.

Entradas relacionadas: