Resumen Estrategia de Prueba del Software

 El proceso de desarrollo de software se asemeja a una espiral, donde se avanza desde la definición de requerimientos y diseño hasta la codificación, siguiendo una ruta que reduce el nivel de abstracción en cada vuelta. Las pruebas, vistas en el mismo contexto espiral, comienzan en la unidad de software, avanzando hacia la integración, validación y, finalmente, pruebas de sistema. Existen cuatro pasos secuenciales en las pruebas: unidad, integración, validación y sistema.

Las pruebas de unidad se centran en componentes individuales, verificando su funcionamiento interno y la manipulación de datos, empleando casos de prueba para garantizar cobertura completa y detección máxima de errores. Las pruebas de integración se enfocan en conflictos de verificación y construcción de programas al unir componentes, utilizando técnicas de diseño de casos de prueba y control de rutas. La validación garantiza que el software cumpla con todos los requerimientos establecidos. La prueba del sistema verifica el funcionamiento global del sistema.

Determinar cuándo finalizan las pruebas es un desafío; se plantean respuestas pragmáticas, como transferir la carga al usuario final. Estrategias estadísticas y modelos de confiabilidad del software ofrecen enfoques más rigurosos, aunque aún en desarrollo. Se destaca la importancia de pruebas incrementales, que van desde unidades individuales hasta el sistema completo, como estrategia preferida por muchos equipos de desarrollo.

Las pruebas de unidad se enfocan en componentes individuales, examinando la lógica interna, las estructuras de datos y el manejo de errores. Se prueban las interfaces, las estructuras de datos locales, las rutas de control y las condiciones de frontera, anticipando y manejando errores para asegurar el funcionamiento adecuado. Estas pruebas se pueden realizar antes o después de la codificación, diseñando casos de prueba y realizando pruebas con controladores y representantes.

Las pruebas incrementales, desde unidades individuales hasta el sistema completo, se consideran una estrategia efectiva, encontrando un equilibrio entre pruebas exhaustivas y eficiencia en el desarrollo.


En el desarrollo de software, las pruebas de integración son una técnica crucial para garantizar que los distintos módulos del software funcionen correctamente cuando se combinan. A menudo, se pueden plantear preguntas sobre por qué son necesarias las pruebas de integración si todos los módulos funcionan individualmente. La respuesta a esto radica en el proceso de conectar y combinar los módulos, donde pueden surgir problemas como la pérdida de datos a través de interfaces, efectos adversos no deseados entre componentes, incompatibilidad de subfunciones, amplificación de errores individuales a niveles inaceptables, y problemas con las estructuras de datos globales, entre otros.

Enfoques de Pruebas de Integración

Las pruebas de integración se llevan a cabo siguiendo enfoques específicos:

1. Integración Incremental

La integración incremental se basa en construir y probar el software en pequeños incrementos. Este enfoque facilita el aislamiento y corrección de errores, permite la prueba completa de interfaces y sigue un enfoque sistemático. Se describen dos estrategias clave:

Integración Descendente

La prueba de integración descendente implica combinar los módulos moviéndose hacia abajo a través de la jerarquía de control, comenzando con el módulo de control principal. Puedes optar por una integración primero en profundidad o primero en anchura. La primera combina los componentes en una ruta mayor de la estructura del programa, mientras que la segunda incorpora los componentes directamente subordinados en cada nivel.

El proceso de la integración descendente sigue cinco pasos:

  1. El módulo de control principal se utiliza como un controlador de prueba y los representantes (stubs) se sustituyen con los componentes directamente subordinados.
  2. Dependiendo del enfoque de integración seleccionado (profundidad o anchura primero), los representantes subordinados se sustituyen uno a uno con componentes reales.
  3. Se realizan pruebas mientras se integra cada componente.
  4. Tras completar cada conjunto de pruebas, otro representante se sustituye con el componente real.
  5. Las pruebas de regresión se realizan para garantizar que no se introdujeron nuevos errores.

Integración Ascendente

La prueba de integración ascendente comienza construyendo y probando módulos atómicos (componentes en niveles inferiores dentro de la estructura del programa) y se mueve de abajo hacia arriba. Al hacerlo, la funcionalidad de los componentes subordinados siempre está disponible, y no se necesitan representantes. Este enfoque se divide en pasos, donde los componentes en el nivel inferior se combinan en grupos que realizan subfunciones de software específicas. Luego, se prueban estos grupos y se avanza hacia arriba en la estructura del programa.

Prueba de Regresión

La prueba de regresión es esencial siempre que se realice una nueva integración de módulos, ya que cualquier cambio en el software puede introducir nuevos errores o efectos no deseados. La prueba de regresión implica la repetición de un subconjunto de pruebas existentes para asegurarse de que los cambios no hayan causado problemas adicionales. Se pueden realizar manualmente o con herramientas de captura/reproducción automatizadas.

Prueba de Humo

La prueba de humo es un enfoque utilizado en proyectos de software críticos en cuanto a tiempo. Involucra la integración constante del software, permitiendo detectar errores paralizantes tempranamente. En este enfoque, los componentes de software se integran en construcciones que se prueban de manera diaria. Esto proporciona una evaluación continua del progreso y minimiza el riesgo de integración.

Opciones Estratégicas

La elección de una estrategia de integración depende de las características del software y del calendario del proyecto. A menudo, una estrategia combinada, que utiliza pruebas de integración descendente para niveles superiores y pruebas ascendentes para niveles subordinados, es la más efectiva.

Productos de Trabajo de las Pruebas de Integración

La documentación de las pruebas de integración incluye una Especificación de Pruebas que describe el plan general de integración y pruebas específicas. Esto incorpora un plan de prueba, un procedimiento de prueba, y se convierte en parte de la configuración del software. La prueba se divide en fases y construcciones que abordan características funcionales y de comportamiento específicas del software.

El procedimiento de prueba detalla cómo se llevará a cabo la prueba, incluyendo el orden de integración y las pruebas en cada paso. Además, se registra una historia de resultados, problemas y peculiaridades en un Reporte de Prueba. Esto es fundamental para el mantenimiento del software y proporciona una visión realista del progreso de la prueba de integración.

Comentarios

Entradas populares de este blog

Solucionando problemas caminos y circuitos mediante grafos.