procesos que permiten
verificar y revelar la calidad
de un producto software
antes de su puesta en
marcha
Nota:
Definicion
Una prueba es una actividad en la que un sistema o
un componente es ejecutado bajo condiciones
especificadas, los resultados son observados o
registrados, y una evaluación es realizada de un
aspecto del sistema o componente
Nota:
Segun IEEE Std.610.12-1990]
Una prueba es una actividad ejecutada para evaluar y mejorar la
calidad del producto a través de la identificación de defectos y
problemas
Nota:
Segun [SWEBOK]
se observa un modelo de cómo las etapas de pruebas se integran en el ciclo de
vida de desarrollo de software genérico
Para conseguir esta eficiencia
deseada durante el proceso de
pruebas
Evitar redundancias: traen consigo una pérdida o desaprovechamiento de tiempo
por lo que hay que intentar ejecutar las pruebas más adecuadas a cada situación y
lo más rápido posible.
Reducir costes:Habría que cerciorarse de que realmente fueran necesarias y de
que existe el tiempo y las habilidades suficientes para emplearlas de manera
ventajosa.
El objetivo principal de la validación y verificación es comprobar que el
sistema está hecho para un propósito, es decir, que el sistema debe ser lo
suficientemente bueno para su uso previsto
El nivel de confianza requerido
depende de tres factores:
El propósito o función del sistema. El nivel de
confianza necesario depende de lo crítico que sea
el software para una organización.
Las expectativas del usuario. es menos aceptable entregar
sistemas no fiables, por lo que las compañías deben invertir más
esfuerzo en llevar a cabo las actividades de verificación y
validación.
Entorno de mercado actual. Cuando un sistema se comercializa, los
vendedores del sistema deben tener en cuenta los sistemas
competidores,
la Validación en CMMI® es demostrar que un producto o componente
del mismo satisface el uso para el que se creó al situarlo sobre el
entorno previsto.siguiente pregunta: ¿Se está construyendo el producto
correcto?
El propósito de la Verificación en CMMI® es asegurar
que los productos seleccionados cumplen los
requisitos especificados.¿Se está construyendo el
producto de la manera correcta?
Tipos de pruebas
En función de qué conocemos.
a. Pruebas de caja negra
probar dando distintos
valores a las entradas
Este tipo de prueba se centra en los
requisitos funcionales del software y
permite obtener entradas que prueben
todos los flujos de una funcionalidad
Funcionalidades incorrectas o ausentes.
Errores de interfaz.
Errores en estructuras de datos o
en accesos a las bases de datos
externas.
Errores de rendimiento.
Errores de inicialización y
finalización.
b. Pruebas de caja blanca
Consiste en realizar pruebas para verificar que líneas específicas
de código funcionan tal como esta definido.
Se ejecutan al menos una vez todos los
caminos independientes de cada módulo
Se utilizan las decisiones en
su parte verdadera y en su
parte falsa
Se ejecuten todos los bucles en sus límites
Se utilizan todas las estructuras de datos internas.
Para esta prueba, se
consideran tres importantes
puntos.
Conocer el desarrollo interno del programa, determinante en el
análisis de coherencia y consistencia del código.
Considerar las reglas
predefinidas por cada
algoritmo.
Comparar el desarrollo del programa en
su código con la documentación
pertinente.
Según el grado de automatización
a. Pruebas manuales
Las pruebas manuales ayudarán a
descubrir cualquier problema
relacionado con la funcionalidad de
su producto, especialmente defectos
relacionados con facilidad de uso y
requisitos de interfaces.
Pruebas automáticas
tipo de pruebas, se usa un determinado
software para sistematizarlas y obtener los
resultados de las mismas.
En función de qué se prueba
Pruebas unitarias
Se aplican a un componente del software. Podemos
considerar como componente (elemento indivisible)
a una función, una clase, una librería, etc.
Para que una prueba unitaria,
tenga éxito se deben cumplir los
siguientes requisitos:
Automatizable: no debería existir intervención manual.
Esto es, especialmente, útil para la integración continua.
Completas: deben cubrir la mayor cantidad de código.
Repetibles o Reutilizables: no se deben crear
pruebas que sólo puedan ser ejecutadas una sola
vez. También, es útil para integración continua.
Independientes: la ejecución de una
prueba no debe afectar a la ejecución de
otra.
Profesionales: las pruebas deben ser consideradas igual que el
código, con la misma profesionalidad, documentación, etc.
Estas pruebas
aisladas
proporcionan cinco
ventajas básicas:
Fomentan el cambio: Las pruebas
unitarias facilitan que el
programador cambie el código para
mejorar su estructura (lo que se
llama refactorización),
Simplifica la integración: Puesto
que permiten llegar a la fase de
integración con un grado alto de
seguridad de que el código está
funcionando correctamente.
Documenta el código: Las propias pruebas son
documentación del código puesto que ahí se puede ver
cómo utilizarlo.
Los errores están más acotados
y son más fáciles de localizar:
dado que tenemos pruebas
unitarias que pueden
desenmascararlos.
Separación de la interfaz y la
implementación: Dado que la
única interacción entre los
casos de prueba y las unidades
bajo prueba son las interfaces
de estas últimas, se puede
cambiar cualquiera de los dos
sin afectar al otro.
Pruebas de integración
Consiste en construir el sistema a partir de los
distintos componentes y probarlo con todos
integrados.
c. Pruebas de aceptación
lleva a cabo el equipo de desarrollo.
Consiste en comprobar si el producto
está listo para ser implantado para el
uso operativo
Podemos distinguir entre dos tipos de pruebas
Pruebas alfa: las realiza el usuario en
presencia de personal de desarrollo del
proyecto haciendo uso de una máquina
preparada para las pruebas.
Pruebas beta: las realiza el usuario
después de que el equipo de
desarrollo les entregue una versión
casi definitiva del producto.
Pruebas funcionales
se realiza sobre el sistema funcionando, comprobando que
cumpla con la especificación (normalmente a través de los
casos de uso). Para estas pruebas, se utilizan las
especificaciones de casos de prueba.
e. Pruebas de rendimiento
se basan en comprobar que el sistema puede soportar
el volumen de carga definido en la especificación