Las pruebas de software (en inglés, software testing) comprenden un conjunto de actividades técnicas y empíricas que verifican que un programa de software cumple los requisitos especificados y funciona según lo previsto. Su propósito es detectar fallos (bugs), errores o discrepancias, proporcionando retroalimentación que permita corregirlos o prevenirlos. Forman parte esencial del proceso de desarrollo de software y se relacionan estrechamente con las prácticas de control de calidad.[1]
Las pruebas se realizan en distintas etapas del ciclo de vida del desarrollo, de acuerdo con la metodología empleada, y adoptan diversos modelos y niveles de integración. Esta variedad ofrece flexibilidad para planificar y ejecutar actividades de prueba que se ajusten al contexto, la criticidad del producto y los objetivos de cada proyecto.
Un caso de prueba (del inglés, test case) es una especificación detallada que reúne los valores de entrada, las precondiciones, el procedimiento de ejecución, los resultados esperados y las poscondiciones necesarias para comprobar un objetivo concreto —por ejemplo, recorrer una ruta del programa o verificar un requisito funcional o no funcional—.[1]
Cada caso de prueba constituye el mecanismo, manual o automatizado, mediante el cual se decide si el comportamiento observado del sistema coincide con el esperado y, por tanto, si la prueba se aprueba o se rechaza. Los estándares de documentación de pruebas, como IEEE 829-2008 y su sucesor ISO/IEC/IEEE 29119-4, proporcionan plantillas y lineamientos formales para la redacción de casos de prueba.[2][3]
El objetivo fundamental de las pruebas es aportar información objetiva sobre la calidad del producto para que las personas responsables puedan tomar decisiones informadas. Entre los objetivos habituales se incluyen la detección de defectos, el aumento de la confianza en el nivel de calidad, la provisión de datos para la toma de decisiones y la prevención de errores futuros.[4]
La naturaleza y el alcance de la información requerida varían entre proyectos, por lo que el proceso de prueba depende en gran medida del contexto.[5] En consecuencia, las prácticas, la documentación y las técnicas de prueba deben seleccionarse y adaptarse al entorno específico: no existen «mejores prácticas» universales, sino buenas prácticas en contexto.
La independencia entre el equipo de pruebas y el de desarrollo contribuye a la objetividad de los resultados y minimiza sesgos potenciales.[cita requerida]
Los enfoques de desarrollo condicionan el momento y la forma en que se realizan las pruebas:
Son las pruebas que se realizan sin ejecutar el código fuente. Incluyen la revisión de documentos, inspecciones de diseño y análisis estático de código.
Requieren la ejecución de la aplicación. Permiten aplicar técnicas de caja negra y caja blanca, y medir con precisión el comportamiento del sistema durante su funcionamiento.
Las Especificaciones de Requerimientos de Software (ESRE) describen de forma completa lo que el sistema debe hacer, sin detallar el cómo. Sirven de base para que los probadores (incluidos los probadores beta) validen si el software se comporta conforme a los requisitos funcionales y no funcionales definidos. A partir de las ESRE se pueden derivar casos de prueba detallados.
Evalúan funciones específicas del software basadas en los requisitos funcionales. Entre los tipos más comunes se incluyen:
El flujo habitual va desde las pruebas unitarias, pasando por la integración y el sistema, hasta las pruebas de aceptación. Las pruebas de regresión consisten en volver a ejecutar casos existentes tras una modificación para comprobar que no se han introducido defectos.
Verifican requisitos de calidad tales como disponibilidad, usabilidad, seguridad o rendimiento.[cita requerida]
Las pruebas cuentan con numerosas herramientas —libres, de código abierto o propietarias— que abarcan gestión de pruebas, automatización funcional y pruebas de carga, entre otros ámbitos.[7]
|isbn=
incorrecto (ayuda). Parámetro desconocido |autor-link=
ignorado (ayuda)