Conceptos Esenciales de Pruebas de Software: Tipos, Verificación y Validación

Clasificado en Informática

Escrito el en español con un tamaño de 4,93 KB

Introducción a las Pruebas de Software

En el desarrollo de software, las pruebas son una fase crucial para asegurar la calidad y el correcto funcionamiento de los sistemas. A continuación, exploraremos los conceptos fundamentales de los casos de prueba, los diferentes tipos de pruebas y las distinciones entre verificación y validación.

Casos de Prueba

Un caso de prueba es un conjunto de valores de entrada, precondiciones de ejecución, resultados esperados y poscondiciones de ejecución, desarrollados con un objetivo particular, tal como ejecutar un camino específico de un programa o verificar el cumplimiento de un requerimiento.

Tipos de Pruebas de Software

Las pruebas de software se clasifican en diversas categorías, cada una con un enfoque y objetivo específico para evaluar diferentes aspectos del sistema.

Pruebas Funcionales

Estas pruebas verifican la capacidad del producto de software para proporcionar funciones que cumplan con las necesidades, establecidas e implícitas, cuando el software es utilizado en condiciones normales a cualquier nivel del sistema. Se realizan basándose en el análisis de la especificación de la funcionalidad del componente o sistema.

Evalúan las siguientes características del objeto de prueba:

  • Precisión: Las respuestas esperadas cumplen el grado de precisión necesario.
  • Interoperabilidad: El sistema puede interactuar con uno o más componentes o sistemas necesarios.
  • Seguridad: Impide el acceso no autorizado, accidental o deliberado, a la funcionalidad o datos del mismo.
  • Adecuación: Proporciona el conjunto apropiado de funcionalidad para la tarea especificada y los objetivos de su usuario.

Pruebas de Confiabilidad

Tienen por objetivo medir la madurez del software a lo largo del tiempo y compararla con la confiabilidad deseada. Estas pruebas toman un tiempo considerable para ser significativas y suelen continuar en producción. También se especifican en términos de perfiles operacionales.

  • Prueba de Robustez: Orientadas a evaluar la tolerancia de un componente o sistema a fallas que ocurren fuera del objeto de prueba.
  • Prueba de Recuperación: Orientadas a evaluar la habilidad del sistema de software para recuperarse de fallas en hardware o software del modo predeterminado que permite reanudar las operaciones normales.

Pruebas de Rendimiento (Performance)

Estas pruebas se enfocan en la habilidad del componente o sistema para responder al usuario o a otro sistema dentro del tiempo establecido y bajo las condiciones definidas.

  • Las medidas pueden variar desde ciclos de CPU hasta el tiempo de respuesta.

Pruebas de Carga

Se enfocan en la habilidad del sistema para manejar crecientes niveles de carga real y previsible, resultantes de solicitudes de transacciones generadas por usuarios simultáneos.

  • Las pruebas pueden realizarse con un número realista de usuarios (multiusuario) o con una gran cantidad de ellos (volumen).
  • Las medidas deben realizarse sobre el tiempo de respuesta promedio y la tasa de transferencia de información.
  • Ejemplos de escenarios de carga:
    • Fuertes cargas de trabajo como tráfico excesivo o cargas elevadas de transacciones simultáneas.
    • Tráfico de red artificial.
    • Múltiples usuarios simultáneos.
    • Generación de transacciones con herramientas de automatización.

Pruebas de Estrés o Saturación

Enfocadas en la habilidad del sistema para manejar picos de carga en el límite o superiores de su capacidad máxima. El rendimiento del sistema debe degradarse lentamente y de forma predecible sin fallas a medida que los niveles de estrés aumentan.

Estas pruebas deben verificar que el sistema no pierda su integridad funcional mientras se encuentra en condiciones de estrés.

Su objetivo es encontrar errores debidos a:

  • Escasez de recursos:
    • Falta de memoria.
    • Falta de espacio en disco.
  • Existencia de recursos compartidos:
    • Recursos del sistema.
    • Bloqueos de la base de datos.
    • Ancho de banda de la red.

Verificación de Software

La verificación responde a la pregunta: ¿Estamos construyendo el sistema correctamente?

  • Evalúa un componente al final de cada fase del desarrollo del software.
  • Se realiza durante cada fase del desarrollo de software.

Validación de Software

La validación responde a la pregunta: ¿Estamos construyendo el sistema correcto?

  • Típicamente incluye las pruebas y tiene lugar luego de que las verificaciones han sido completadas.
  • Ocurre al final con las pruebas de aceptación del cliente.

Entradas relacionadas: