Las actividades del proceso de pruebas tienen lugar a los largo del ciclo de vida del software
Rama de desarrollo
Definicion de requisitos
Diseño funcional del sistema
Diseño técnico del sistema
Especificación de los componentes
Programación
Rama de pruebas
Pruebas de componente
Pruebas de integración
Pruebas de sistema
Pruebas de aceptación
Verificación: (Desarrollo) Comprobación de la conformidad con los requisitos establecidos ISO 9000
Validación (Pruebas): Comprobación de la idoneidad para el uso esperado ISO 9000,
Comprobar si los requisitos y definiciones han sido implementados correctamente
Modelo W
Extensión del modelo en V
Ciertas actividades del aseguramiento de la calidad se desarrollan en paralelo con el proceso de desarrollo
Desarrollo: Planificar. Pruebas Depuración y corrección de errores
Modelos iterativos
Las actividades de requisitos diseño, desarrollo y pruebas se
segmentan en pasos reducidos y se ejecutan en forma continua
Se debe alcanzar el consentimiento con el cliente tras cada iteración
Modelo prototipado: Desarrollo rapido de una representación del sistema
Desarrollo rapido de aplicaciones: Se implementa utilizando una funcionalidad
previamente construida simulando la funcionalidad que sera desarrollada
RUP: De IBM, Modelo orientado a objetos, lenguaje de modelado UML
Programación extrema (XP): El desarrollo y las pruebas tiene lugar sin una especificación de requisitos formal
SCRUM: Se entrega un producto en corto tiempo que sea funcional
Caracteristicas
Cada iteración contribuye con una característica adicional
Cada iteración puede ser probada por separado
Las pruebas de regresión y automatización son de gran relevancia
La verificación y validación se pueden realizar por separadop
Principios
Cada actividad debe ser probada
Cada nivel de pruebas debería ser probado de forma especifica
El proceso de pruebas comienza mucho antes de la ejecución de las pruebas
Niveles de Pruebas
Pruebas de componente
Pruebas de modulo, de clase y de unidad
Son denominadas pruebas de desarrollador
Bases de pruebas: Requisitos de componente, diseño detallado, código
Objetos de prueba: Componentes, clases, unidades,
módulos, conversión de datos, migración de programas
Alcance: Solo se prueban componentes individuales,
cada componente es probado de forma independiente
Los casos de prueba podrán ser obtenidos a partir de especificaciones
de componentes, diseño de software y modelo de datos
Se realizan pruebas funcionales y no funcionales de un sistema
Arnés de pruebas:
DRIVER: Simulan datos de entrada, utilizan herramientas de programación
STUB: Reemplaza o simula un componente que aun no se encuentra disponible
Uso de depuradores, debuggers, marcos de prueba unitaria, se necesita conocimiento de código fuente
Pruebas de integración (Interfaz)
Comprueban funciones externas tras las pruebas de componente
Comprueban la interacción entre elemento de software, entre distintos sistemas
La integración de subsistemas también es parte del proceso de integración
Pueden ser ejecutados por desarrolladores y probadores
Alcance: Asume que los componentes ya han sido probados, comprueba la interacción mutua entre componentes, comprueba las interfaces
com el entorno del sistema, los controladores de pruebas pueden ser reutilizados en estas pruebas, se usan herramientas de control ára
apoyar las actividades de prueba
Los casos de pruebas pueden ser obtenidos por: Especificación de interfaces, diseño de la arquitectura, modelo de datos
Enfoque: Detectar defectos en las interfaces, comprueban la correcta interacción entre componentes, al reemplazar arneses por componentes
reales se pueden generar nuevos defectos
Estrategias:
Ascendente
Descendente
Big - Bang
Integración ad-hoc: Los componentes serán probados inmediatamente despues de haber sido
finalizada su construcción y se hayan finalizado las pruebas de componente, es una estrategia que
puede ser usada en cualquier etapa del proyecto y normalmente se aplica combinada con otras
Pruebas de sistema
Bases de pruebas: Especificación de requisitos de software (Casos de uso, especificación funcional,
informe de análisis de riesgo, manuales de sistema, configuración del sistema)
Lo que el usuario pidio es lo que se esta entregando
El alcance esta definido en el plan maestro
La calidad de software es observada desde el punto de vista del usuario
Requisitos funcionales y no funcionales (ISO 9126)
Los casos de pruebas pueden ser obtenidos a partir de: Especificaciones funcionales,
casos de uso, procesos de negocio y evaluación de riesgos
Alcance: Integrado desde el punto de vista del usuario, debe coincidir con el entorno real, NO SE REALIZAN PRUEBAS EN ENTORNO REAL
Requisitos funcionales: Comprobar que la funcionalidad implementada presenta las caracteristicas requeridas (Adecuación,
Exactitud, Interoperabilidad, Cumplimiento de funcionalidad, seguridad)
Requisitos funcionales: Pruebas basadas en procesos de negocio, en casos de uso y en requisitos (construcción de bloques)
Requisitos no funcionales: La conformidad con requisitos no funcionales es dificil de lograr
Requisitos no funcionales con respecto a usabilidad, eficiencia y portabilidad
Pruebas de aceptación
Bases de prueba: Requisitos de usuario, requisitos de sistema, casos de uso, procesos de negocio, análisis de riesgos
Objetos de pruebas: Procesos de negocio en sistemas completamente integrados,
procesos de operaciones y mantenimiento, formularios y informes
Aceptación contractual, aceptación de regulación
Normalmente el cliente selecciona algunos casos de prueba
Las pruebas se realizan usando el entorno del cliente
Aceptación operativa: Requiere que el software sea adecuado para su uso en produccion, son realizadas
por el administrador del sistema del cliente, la infraestructura soporta la aplicación que voy a instalar
Pruebas alpha y beta: es necesaria versión preliminar y estable del software,
pruebas realizadas en productos comerciales, reducen el costo de las pruebas de
aceptación, se utilizan distintos entornos, involucran alto número de usuarios
alpha: se realizan en las dependencias del desarrollador, beta: dependencias del cliente
Tipos de pruebas
Funcionales
Objetivo: Probar la función, haga lo que tenga que hacer, que los resultados obtenidos sean iguales a los esperados
Se pueden llevar a cabo en todos los niveles de prueba
Objetivo: De que forma se llevan a cabo las funciones del software
A menudo las caracteristicas no funcionales son vagas, incompletas o inexistentes
Se pueden llevar a cabo en todos los niveles
Algunos ejemplos: de carga, rendimiento, estres, volumen,robustez, usabilidad, caracteristicas de seguridad (safety)
Pruebas de estructura / arquitectura
Objetivo: Cobertura, análisis de la estructura de un objeto de prueba (enfoque de caja blanca), la finalidad
es medir el grado en el cual la estructura del objeto de prueba ha sido cubierto por los casos de prueba
Nivel de componente e integración
Pruebas asociadas al cambio
Objetivo: Probar el objeto despues de los cambios
Las pruebas deben ser repetidas (retest), y las pruebas de áreas adyacentes (regresión)
Pueden ser realizadas en todos los niveles de pruebas
Un alto grado de modularidad permite unas pruebas de regresión reducidas mas apropiadas
Selección de casos de prueba de regresión: Casos de prioridad alta, probar la funcionalidad
estandar, saltarse casos y variaciones especiales, probar la configuración utilizada con
mayor frecuencia, probar subsistemas o zonas seleccionadas del objeto de pruebva
Pruebas de Mantenimiento
El cliente ha probado el producto y es puesto en producción
Cualquier nueva versión del producto, cada nueva actualización y cada cambio del software requiere pruebas adicionales
El mismo software se encuentra al comienzo del ciclo de vida
Configuración: Nivel de detalle
Análisis de impacto: Valoración del cambio en las diferentes capas
Pruebas de los cambios en un sistema en operación, o el impacto de un entorno modificado
Cubre 2 campos diferenciados: Corrección de errores o implementación de hot-fixes y
Adaptaciones como resultado de una modificación o nuevos requisitos de un cliente
El alcance de las pruebas dependen del impacto del cambio
Retirada del software (Pueden incluir pruebas de migración de datos, verificación del
archivo de datos, y pruebas en paralelo sistemas nuevo y anterior)