Professional Documents
Culture Documents
<<Atrs Objetivos: 1. 2.
Analizar los diferentes mtodos, tcnicas y estrategias empleadas en la verificacin y validacin de software. Adquirir habilidades en la planificacin, diseo y ejecucin de pruebas de programas
Contenidos:
Fallas y faltas de software Verificacin y validacin de software Tcnicas estticas Tcnicas dinmicas: pruebas de programas Planificacin de pruebas Pruebas de unidades: estrategias caja blanca y caja negra Pruebas de integracin: mtodos ascendentes, descendentes y combinados Pruebas del sistema Pruebas de aceptacin Depuracin de programas
"Una falta [fault] ocurre cuando un humano comete un error al ejecutar alguna actividad de software. Por ejemplo, un diseador puede interpretar equivocadamente un requerimiento y crear un diseo que no sastiface las necesidades reales del usuario... Una falla puede residir en cualquier producto del desarrollo o mantenimiento de software". Una falla [failure] ocurre cuando el sistema se separa de su comportamiento esperado, es decir, no ejecuta de acuerdo a lo requerido. Puede ser descubierto durante la entrega, las pruebas, la operacin o el mantenimiento del sistema. La falta es vista por los diseadores del sistema desde un punto de vista interno del sistema, mientras que las fallas son vistas desde el punto de vista del usuario. Tipos de faltas:
Faltas algortmicas: Ocurren cuando un componente de la lgica o algoritmo de un programa no produce la salida esperada para una entrada dada.
Faltas de computacin y precisin: Ocurren cuando la implementacin de una frmula o procedimeinto es errneo o no produce un resultado preciso.
Faltas de documentacin: La documentacin no se corresponde con el programa. Faltas de sobrecarga o estrs: Ocurre cuando las estructuras de datos exceden sus capacidades especificadas. Faltas de capacidad o lmites: Ocurren cuando el rendimiento del sistema se vuelve inaceptable o excede sus lmites establecidos. Faltas temporales o de coordinacin: Ocurren cuando el programa que controla la coordinacin de varios procesos o su secuenciacin no opera adecuadamente.
Faltas de rendimiento: El sistema no ejecuta a la velocidad especificada. Faltas de recuperacin: Ocurren cuando se detecta una falla y el sistema no se comporta del modo esperado.
Faltas de hardware/software: Cuando el sistema H/S no opera de acuerdo a las condiciones o procedimientos de operacin documentados.
Faltas de estndares y procedimientos: El programa no satisface los estndares y procedimientos de software establecidos en la organizacin.
se inicia con la revisin de los requerimientos producidos en la fase A&ER y culmina con las pruebas del producto.
Tiene dos objetivos principales [Sommerville, 1992]: Descubrir errores o defectos en el sistema. Evaluar si el sistema producido es utilizable en su ambiente operacional. La Verificacin es el proceso de determinar si el producto de una fase dada satisface los requerimientos o especificaciones de la(s) fase(s) anteriores. Implica establecer una relacin entre el producto y sus especificaciones. Estamos construyendo correctamente el producto ? La Validacin es el proceso de evaluar el producto al final de su desarrollo para determinar si cumple o no con los requerimientos establecidos. Implica establecer la calidad y adecuacin del producto con respecto a su uso. Hemos construido el producto correcto ? Taxonoma de las tcnicas de V&V:
TECNICAS ESTATICAS
Estn relacionadas con el anlisis de los modelos del sistema: requerimientos, diseos y listados de programas. Involucra la revisin o anlisis formal o informal de requerimientos, diseos o programas.
TECNICAS DINAMICAS
Estn relacionados con sistema o su prototipo. los programas del
Involucran las PRUEBAS DE PROGRAMAS, es decir la ejecucin de los programas con el propsito de encontrar errores.
Verifican la correspondencia entre los programas y sus especificaciones. No implican la ejecucin de un programa. Se basan en el examen del programa y la deteccin de fallas antes de su ejecucin. Tipos:
(o
Tipos: Pruebas de software: Recorridos estructurados Inspecciones de cdigo Anlisis esttico Verificacin formal
Pruebas de Componentes:
Pruebas Especficas:
Depuracin
Pasos de la Revisin Estructurada: Revisin preliminar: Convocatoria a la reunin y entrega del producto Identificacin individual de errores y elaboracin de las Listas de Errores y Sugerencias Reunin de recorrido: Introduccin: Seleccin del moderador y del secretario, definicin de objetivos y alcances. Explicacin del producto: Exposicin del producto, revisin y discusin de las Lstas de Errores y Sugerencias. Conclusin: Discusin final y redaccin de la Lista de Acciones a seguir. Seguimiento de los puntos de accin acordados: Elaboracin, revisin y ejecucin de un Plan de Accin basado en la Lista de Acciones.
2) Inspeccin de Diseo y Cdigo: o Proceso similar al recorrido, pero emplea una lista de inspeccin de elementos de diseo o de cdigo previamente elaborada.
Pasos de la Inspeccin de Diseo Cdigo: Etapa de Planificacin: Seleccin del grupo, organizacin de la sesin y distribucin del material del producto a inspeccionar. Etapa Preliminar: Descripcin general del producto a inspeccionar e inspeccin individual del producto. Etapa de Inspeccin: Identificacin y registro de errores siguiendo la Lista de Inspeccin. Etapa de Correcciones: Localizacin de errores, definicin de cambios y correcciones la producto inspeccionado (realizada por el Autor). Etapa de Re-inspeccin: el producto corregido se somete de nuevo a una segunda inspeccin para asegurar que los cambios no introducen nuevos errores. Elementos de Inspeccin del Diseo: Cumplimiento de requerimientos Especificaciones de: estructura, componentes e interfaces
Declaracin de datos Referencia a datos Expresiones aritmticas Expresiones de comparacin Flujo de control Interfaces entre mdulos Proposiciones de entrada y salida Estilo de programacin
Ejemplo de una lista parcial de errores frecuentes en la "Interface entre mdulos": Coinciden en nmero, orden, tipo y tamao los parmetros reales y formales de cada interconexin por llamada entre mdulos? Se corresponden los atributos (magnitud y dimensin) de cada parmetro formal con el correspondiente parmetro real? Se pasan constantes como parmetros modificables o variables? Se altera, en el mdulo, o se intenta devolver el valor de un parmetro declarado como parmetro por valor? Si existen variables globales, tienen estas la misma definicin y los mismos atributos de magnitud y dimensin en todos los mdulos en que son utilizadas? Los nombres de los parmetros reales y formales son semnticamente representativos?
Una prueba se considera exitosas si es capz de detectar errores (Las pruebas son procesos destructivos) No se puede probar exhaustivamente un programa
Un error de software ocurre cuando algn aspecto del programa es incompleto, inconsistente o incorrecto. Error Tipo 1 (error de omisin): el programa no hace lo que se supone debe hacer. o Error Tipo 2 (error de cometido): el programa hace lo que se supone no debe hacer. Algunos principios de pruebas [Meyer, 1983]: o La definicin del resultado esperado a la salida de un programa es una parte fundamental de todo caso de prueba (i.e. del conjunto de datos de prueba). o Un programador debe evitar probar sus propios programas. o Los resultados de cada prueba deben ser analizados cuidadosamente. o Los casos de prueba se deben escribir tanto para condiciones de entrada invlidas e inesperadas como para condiciones vlidas y esperadas. o La probabilidad de encontrar errores adicionales en una seccin del programa es proporcional al nmero de errores ya encontrados. o Evite los casos de prueba desechables (casos diseados "al vuelo"). El proceso de prueba de programas segn [Conger, 1994]:
Planificacin de Pruebas
El Plan de Pruebas especifica para cada tipo de pruebas (pruebas de unidades, mdulos, subsistemas, sistema y aceptacin) los siguientes aspectos [Ince & Sharp, 1993]: 1) Los objetivos de las pruebas
2) Los criterios que determinan cuando el tipo de prueba es completo, es decir, cuando se debe dar por terminada un tipo de prueba.
CRITERIO 1: La prueba se da por terminada cuando se han ejecutado todos los casos de pruebas y estos se han basado en un conjunto de mtodos de pruebas pre-establecido (P.ej. para la prueba de mdulos los casos incluyen el criterio de cobertura de multicondicin y el anlisis de los valores lmites).
CRITERIO 2: La prueba se termina cuando se han detectado un nmero determinado de errores. Esto implica estimar el nmero total de errores del programa y el porcentaje de errores que pueden ser encontrados con las pruebas. CRITERIO 3: La prueba finaliza cuando el nmero de errores encontrados por unidad de tiempo (p.ej. semanal) decrece. Se emplea una grfica Numero de Errores Encontrados vs. Unidad de tiempo para determinar cuando finalizar.
3) Programacin de actividades de pruebas (Calendario de Pruebas) 4) Recursos requeridos (personal, H/S requerido para realizar las pruebas) 5) Responsabilidades de los miembros de los grupos de prueba y desarrollo. 6) Determinacin de las estrategias de prueba (i.e., pruebas de funcin, desempeo, tensin, estructurales, etc.) y los procedimientos de identificacin, generacin y documentacin de los casos de prueba que sern utilizados. Procedimientos de prueba: Descripcin de cada prueba incluyendo casos de prueba, herramientas H/S de prueba que se emplearn, instrucciones para ejecutar la prueba y resultados esperados.
Pruebas de Unidades
Estn dirigidas a probar individualmente las unidades ms pequeas que componen un programa, i.e., funciones, procedimientos, subrutinas o mtodos. 1) ESTRATEGIA DE PRUEBA CAJA NEGRA: Se ignora la estructura y comportamiento de la unidad a probar. Los casos de prueba se disean en base a los requerimientos especificados para los datos de entrada y salida a la unidad. Mtodos conocidos para especificar casos de prueba: - Particiones de equivalencias - Anlisis de los valores lmites PARTICIONES DE EQUIVALENCIA: v El dominio de entrada de una unidad se divide en un nmero finito de clases de
equivalencia y los casos de prueba se disean seleccionando datos representativos de cada clase. v Para cada condicin de entrada (argumento o variable) se definen dos tipos de clases de equivalencia: - ClasesVlidas: conjuntos de valores de entrada vlidas ( Ej. 0 = NOTA = 20). - Clases Invlidas: conjuntos de valores de entrada invlidos (Ej. NOTA < 0 y NOTA > 20). v El diseo de los casos de prueba consiste en: - Asignar un nmero nico a cada clase de equivalencia. - Escribir casos de pruebas que cubran tantas clases vlidas como sea posible hasta cubrir todas las clases vlidas especificadas. - Cubrir todos las clases de equivalencias invlidas incorporando a cada caso una y sla una clase invlida. ANALISIS DE LOS VALORES LIMITES: v Es una forma de particionamiento de equivalencia que considera los valores limites de cada clase en lugar de cualquier valor de la clase. v Los casos de prueba se disean tomando los valores mnimos y mximos de cada clase de equivalencia vlida, as como los valores lmites de cada clase invlida. v Ejemplo: para la clase vlida (0 = NOTA = 20) se seleccionan como caso de pruebas los valores 0 y 20. para las clases invlidas (NOTA < 0) y (NOTA > 20), se selecionan los valores -1 y 21, respectivamente. 2) ESTRATEGIA DE PRUEBA CAJA BLANCA: Toma en consideracin la estructura o lgica interna de la unidad
Los casos de prueba ejercitan la estructura recorriendo rutas del flujo de control pre-determinadas en base a los siguientes criterios: CRITERIO DE COBERTURA DE INSTRUCCIONES Cada instruccin de la unidad debe ejecutarse al menos una vez. CRITERIO DE COBERTURA DE DECISIONES: Los casos de prueba deben asegurar que cada una de las ramas de cada estructura de decisin que tenga la unidad se ejercite al menos una vez. CRITERIO DE COBERTURA DE CONDICION: Cada condicin individual en una decisin debe ser ejecutada con todos los resultados posibles al menos una vez. Ejemplo: En la instruccin "IF (SUELDO > 300000 OR POSICION = "gerente") THEN .... ELSE ... " se deben probar ambas condiciones lgicas.
Un mtodo que incorpora los tres tipos de coberturas se describe en [Sommerville,92]: Se deriva primero el GRAFO DE FLUJO de la unidad a probar. v En un Grafo de Flujo los nodos representan decisiones y los ejes el flujo de control. v Las instrucciones secuenciales (asignaciones, llamadas y E/S) se ignoran, excepto la inicial y final de la unidad. v Los subgrafos de flujo correspondientes a las estructuras de seleccin y decisin son los siguientes:
Un cmino independiente en un Grafo de Flujo es un cmino que contiene al menos un eje que no est incluido en ningn otro cmino. El nmero de cminos independientes se determina mediante la COMPLEJIDAD CICLOMATICA del Grafo de Flujo.
CC(G) = Nmero de Ejes - Nmero de Nodos + 1 El nmero de casos de prueba requerido para ejercitar todas las condiciones de una unidad es igual a la complejidad ciclomtica de su grafo de flujo. Forma general de una tabla de Casos de Prueba: Nmero del Caso de Prueba Datos de Entrada Salida Esperada
Pruebas de Integracin
La prueba de integracin validan las conexiones entre unidades o mdulos empleando una o ms de las estrategias siguientes: 1) ESTRATEGIA DE INTEGRACION ASCENDENTE: o Se parte de las unidades de ms bajo nivel en la jerarqua modular del sistema y se procede a probar la integracin de unidades en subsistemas de abajo hacia arriba hasta llegar al programa principal.
Pasos: Probar las unidades de ms bajo nivel separadamente [Ej. Probar E, F y G]. Probar la integracin de unidades en subsistemas [Ej. Probar S1(B,E,F); S2(C) y S3(D,G)] Probar el programa completo (Ej. Probar A integrando sus subsistemas S1, S2 y S3) Las pruebas de unidades e integracin requieren el uso de CONDUCTORES DE PRUEBA: programas que llaman a la unidad o subsistema en prueba, le suministran los datos de prueba y presentan los resultados obtenidos.
o Parte de la raz de la jerarqua modular del programa y procede a probar la integracin de unidades en subsistemas hasta llegar a las unidades de ms bajo nivel.
Pasos: Se prueba primero la raz usando TRONCOS o ESQUELETOS de las unidades llamadas por la raz. (Ej. probar A con troncos de B,C y D). Se reemplazan los troncos dependientes de la raz por sus unidades respectivas Se prueba cada una de estas unidades utilizando troncos para sus unidades dependientes. (Ej. probar B con troncos E y F) Se repite el proceso para cada nivel de la jerarqua hasta llegar a las unidades de ms nivel. Los troncos o esqueletos son unidades vacias que sirven para resolver la transferencia del flujo de control durante la llamada y la devolucin de valores a la unidad que lo llama. Ventajas:
Las unidades se pueden integrar a medida que se van desarrollando. Los troncos son reutilizables. No requiere conductores de prueba.
En la ingeniera del software, las pruebas de rendimiento son las pruebas que se realizan, desde una perspectiva, para determinar lo rpido que realiza una tarea un sistema en condiciones particulares de trabajo. Tambin puede servir para validar y verificar otros atributos de la calidad del sistema, tales como la escalabilidad, fiabilidad y uso de los recursos. Las pruebas de rendimiento son un subconjunto de la ingeniera de pruebas, una prctica informtica que se esfuerza por mejorar el rendimiento,
englobndose en el diseo y la arquitectura de un sistema, antes incluso del esfuerzo inicial de la codificacin.
ndice
[ocultar]
1 Introduccin
o o o o o
1.1 Pruebas de carga 1.2 Prueba de estrs 1.3 Prueba de estabilidad (soak testing) 1.4 Pruebas de picos (spike testing) 1.5 Pre-requisitos para las pruebas de carga
2 Mitos de las pruebas de rendimiento 3 Tecnologa 4 Especificaciones del rendimiento 5 Tareas a realizar 6 Metodologa
imposible en la prctica. La razn es que los sistemas en produccin tienen un carcter aleatorio de la carga de trabajo y aunque en las pruebas se intente dar lo mejor de s para imitar el volumen de trabajo que pueda tener el entorno de produccin, es imposible reproducir exactamente la variabilidad de ese trabajo, salvo en el sistema ms simple. Los nuevos conceptos en la implementacin de la arquitectura (por ejemplo: SOA) han aadido complejidad adicional a las pruebas de rendimiento. Los servicios o recursos de la empresa (que comparten infraestructura o plataforma) requieren pruebas de rendimiento coordinadas (con la creacin del volumen y carga de todos los sistemas que comparten la infraestructura o plataformas) para reproducir realmente el estado del entorno de produccin. Debido a la complejidad, coste y tiempo necesario en torno a esta actividad, algunas organizaciones emplean herramientas que pueden mostrar y crear condiciones (tambin conocido como "ruido") en los entornos de pruebas de rendimiento para comprender la capacidad y las necesidades de recursos y verificar/validar los niveles de calidad.
prueba se recomienda que sea realizada con un software automatizado que permita realizar cambios en el nmero de usuarios mientras que los administradores llevan un registro de los valores a ser monitorizados.
Por otro lado, en relacin con este mito, tambin es falso que cualquier cambio en la interfaz de usuario, especialmente en el mbito Web, supone un completo desarrollo de los scripts desde cero. Este problema se vuelve mayor si los protocolos involucrados incluyen Web Services, Siebel, scripts de acciones, Citrix o SAP.
de diferentes opciones de diseo y dimensionamiento del sistema sobre la base actual o la prevista del uso de la aplicacin. Por lo tanto, es mucho ms rpido y ms barato que las pruebas de rendimiento, aunque requiere una alta comprensin de las plataformas de hardware.
(caso ideal) o simular la latencia de la red de conexiones de este tipo, siguiendo el mismo perfil de usuario. Siempre es til disponer de una estimacin del pico de nmero de usuarios que se espera que utilicen el sistema en las horas punta. Si puede ser tambin una estimacin del mximo tiempo de respuesta permitido en el percentil 95, para que la configuracin de la ejecucin de las pruebas se ajuste a estas especificaciones. La especificacin de rendimiento, como mnimo, debera responder a las siguientes preguntas:
Cul es el alcance, en detalle, de la prueba de rendimiento? Qu subsistemas, interfaces, componentes, etc estn dentro y fuera del mbito de ejecucin de esta prueba?
Para las interfaces de usuario involucradas, Cual es el nmero de usuarios concurrentes que se esperan para cada uno (especificando picos y medias?
Cul es la estructura objetivo del sistema (hardware, especificandor todos los servidores de red y configuraciones de dispositivo)?
Cul es la distribucin del volumen de trabajo de la aplicacin para cada componente? (por ejemplo: 20% login, 40% buscando, 30% seleccionando elemento, 10% comprando).
Cual es la distribucin del trabajo del sistema? [Las cargas de trabajo mltiples pueden ser simuladas en una sola prueba de eficacia] (por ejemplo: 30% del volumen de trabajo para A, 20% del volumen de trabajo para B, 50% del volumen de trabajo para C)
Cules son los requisitos de tiempo para cada uno y para todos los procesos por lotes (especificando picos y medias)?
Decidir usar recursos internos o externos para ejecutar las pruebas, en funcin de la experiencia de la casa (o falta de ella).
Reunir u obtener requisitos de rendimiento (especificaciones) de los usuarios y/o analistas. Desarrollar un plan de alto nivel, incluyendo los requisitos, recursos, plazos e hitos. Elaborar un plan de pruebas de rendimiento detallado (incluyendo los escenarios detallados y casos de prueba, cargas de trabajo, informacin del entorno, etc).
Elegir la/s herramienta/s de prueba. Especificar los datos de prueba necesarios y la distribucin de ellos (a menudo pasado por alto, y a menudo el fracaso de una prueba de rendimiento vlida).
Desarrollar scripts de prueba de concepto para cada aplicacin/componente sometido a la prueba, utilizando la herramienta de prueba elegida y estrategias.
Desarrollar un plan de prueba de rendimiento detallado, incluyendo todas las dependencias y los plazos.
Instalar y configurar los simuladores de peticiones y controladores. Configurar el entorno de prueba (lo ideal es que sea idntico hardware a la plataforma de produccin), configurar los router, aislar la red (no queremos alterar los resultados por parte de otros usuarios), desplegar la aplicacin en el servidor, desarrollar la base de datos de prueba, etc.
Ejecutar las pruebas, probablemente en repetidas ocasiones (iterativamente), a fin de ver si el desconocimiento de cualquier factor podra afectar a los resultados.
Analizar los resultados - ya sea de aceptando/rechazando, o investigando el camino crtico y recomendando medidas correctivas .
Actividad 1. Identificar el entorno de pruebas. Identificar el entorno fsico de pruebas y el entorno de produccin, as como las herramientas y recursos de que dispone el equipo de prueba. El entorno fsico incluye hardware, software y configuraciones de red. Tener un profundo conocimiento de todo el entorno de prueba desde el principio permite diseos ms eficientes de pruebas y la planificacin y ayuda a identificar problemas en las pruebas en fases tempranas del proyecto. En algunas situaciones, este proceso debe ser revisado peridicamente durante todo el ciclo de vida del proyecto.
Actividad 2. Identificar los criterios de aceptacin de rendimiento. Determinar el tiempo de respuesta, el rendimiento, la utilizacin de los recursos y los objetivos y limitaciones. En general, el tiempo de respuesta concierne al [[usuario+], el rendimiento al negocio, y la utilizacin de los recursos al sistema. Adems, identificar criterios de xito del proyecto que no hayan sido recogidos por los objetivos y limitaciones, por ejemplo, mediante pruebas de rendimiento para evaluar qu combinacin de la configuracin da lugar a un funcionamiento ptimo.
Actividad 3. Planificar y disear las pruebas. Identificar los principales escenarios, determinar la variabilidad de los usuarios y la forma de simular esa variabilidad, definir los datos de las pruebas, y
establecer las mtricas a recoger. Consolidar esta informacin en uno o ms modelos de uso del sistema a implantar, ejecutarlo y analizarlo.
Actividad 4. Configurar el entorno de prueba. Preparar el entorno de prueba, herramientas y recursos necesarios para ejecutar cada una de las estrategias, as como las caractersticas y componentes disponibles para la prueba. Asegrarse de que el entorno de prueba se ha preparado para la monitorizacin de los recursos segn sea necesario.
Actividad 5. Aplicar el diseo de la prueba. Desarrollar las pruebas de rendimiento de acuerdo con el diseo del plan.
Actividad 6. Ejecutar la prueba. Ejecutar y monitorizar las pruebas. Validar las pruebas, los datos de las pruebas, y recoger los resultados. Ejecutar pruebas validas para analizar, mientras se monitoriza la prueba y su entorno.
Actividad 7. Analizar los resultados, realizar un informe y repetirlo. Consolidar y compartir los resultados de la prueba. Analizar los datos, tanto individualmente, como con un equipo multidisciplinario. Volver a priorizar el resto de las pruebas y volver a ejecutarlas de ser necesario. Cuando todas las mtricas estn dentro de los lmites aceptados, ninguno de los umbrales establecidos han sido rebasados, y toda la informacin deseada se ha reunido, las pruebas han acabado para el escenario definido por la configuracin.