“Tecnicas de Diseño de Casos de Prueba.” Logo@Copyright www.bstriker.com 1 Objetivos 1. Compartir conocimiento adquirido en distintos proyectos con la comunidad de Testing. 2. Generar un espacio donde se generen nuevas relaciones entre los participantes. (Francisco) 3. Proveer herramientas de desarrollo profesional para los referentes de la comunidad. 4. Facilitar teoría y fuentes de información académica. www.bstriker.com Historia del Testing • Antes de 1956. Periodo orientado a debugging. En el ‘49 A.M. Touring es el precursor (Checking a large routine). • Entre 1957 y 1978. Periodo orientado a demostración. • Entre 1979 y 1982. Periodo orientado a destrucción. Myers -‐ The Art of Software Testing. • Entre 1983 y 1984. Periodo orientado a evaluación. (V,V&T). • Entre 1985 y la actualidad. Periodo orientado a prevención. STEP (Systematic Test and Evaluation Process) www.bstriker.com ¿Por qué? • • • • • • • • • • • Modelo de trabajo incorrecto. (Ágiles o Estructurados) Los objetivos del Testing no son claros. Se realiza más Testing basado en la experiencia de los testers. Testers sin formación o habilidad. No se cuenta con información relevante a las pruebas. No hay criterios claros de comienzo o fin de Prueba. Testing como cuello de botella. La infraestructura de Testing no se condice con la del ambiente productivo. Herramientas obsoletas o demasiadas herramientas. Equipo de Testing muy lejos. (¿Testers en Desarrollo o un área de Testing?) Proceso de trabajo incorrecto. Muchas otras razones www.bstriker.com Mejora Continua Modelos Básicos Otros modelos Criterios Comunes. • • • • • • • Iniciar Medir Priorizar/Planificar Redefinir Operar Validar Evolucionar Comparativo Resumen Antes '56 57-‐78 79-‐82 (Myers) 83-‐84 Debbuging Demo Evaluacion Destruccion (V,V &T) TESTING MODELOS DE DESARROLLO MODELOS DE MEJORA CONTINUA MODELOS GENERALES Cascada (Benignton -‐ Royce) Prevención 92 Modelo 94 RUP V / W Primer Agil TMM -‐ 90 STEP -‐ 86 (3) (5) CTP (12) Deming PDCA Kaizen 85 …. TQM EFQM -‐ 88 Six Sigma -‐ 86 99 TDD TPI -‐ 97 (4) (SOGETI) CMMi -‐ SPICE -‐ 02 '04 (6) Técnicas De Diseño También son técnicas de esamación. Ayudan a generar escenarios de pruebas eficaces. Tienen el concepto de probar lo menos posible pero tanto como haga falta. Es donde mayor parte del esfuerzo de Tesang debe concentrarse. Miden la CALIDAD de un objeto de prueba desde disantos puntos de vista. Cuando tiene calidad? - Exactitud (“accuracy”) - Adecuación (“suitability”) - Interoperabilidad (“interoperability”) Atributos de calidad para pruebas del dominio (funcionales) - Seguridad técnica (technical security) - Fiabilidad (“reliability”) - Eficiencia (“efficiency”) - Mantenibilidad (“maintainability”) - Portabilidad (“portability”) Atributos de calidad para pruebas técnicas - Seguridad funcional (“functional security”) - Usabilidad (“usability”) - Accesibilidad (“accessibility”) Invitado Especial Carlos R. Cusmai – Director de QAustral SA Formador ISTQB General - Las pruebas funcionales están dirigidas a verificar la corrección y la completitud de una función - ¿Están disponibles en el módulo todas las funciones especificadas? - ¿Las funciones ejecutadas presentan resultados correctos? - La ejecución de casos de prueba deberían ser ejecutados con una baja redundancia, pero sin embargo con carácter integral / completo - Probar lo menos posible, pero - Probar tanto como sea necesario Página 14 Partición de equivalencia o clase de equivalencia (CE) - La partición en clases de equivalencia es lo que la mayoría de los probadores hacen de forma intuitiva: dividen los posibles valores en clases, mediante lo cual observan - Valores de entrada (“input values”) de un programa (uso habitual del método CE) - Valores de salida (“output values”) de un programa (uso poco habitual del método CE) - El rango de valores definido se agrupa en clases de equivalencia para las cuales se aplican las siguientes reglas: - Todos los valores para los cuales se espera que el programa tenga un comportamiento común se agrupan en una clase de equivalencia (CE) - Las clases de equivalencia no pueden superponerse y no pueden presentar ningún salto (discontinuidad) - Las clases de equivalencia pueden consistir en un rango de valores (por ejemplo, 0<x<10) o en un valor aislado (por ejemplo, x = Verdadero) Partición de equivalencia - ejemplo - Las clases de equivalencia se escogen para entradas (“inputs) válidas y no válidas - Si el valor x se define como 0 ≤ x ≤ 100, entonces, inicialmente, se pueden identificar tres clases de equivalencia: - 1. x<0 (valores de entrada no válidos) 2. 0 ≤ x ≤ 100 (valores de entrada válidos) 3. x > 100 (valores de entrada no válidos) Se pueden definir CE adicionales, conteniendo, pero no limitadas a: - Entradas no numéricas - Números muy grandes o muy pequeños - Formatos numéricos no admitidos <0 0 - 100 > 100 Partición de equivalencia: variables de entrada - Todas las variables de entradas (“input variables ”) del objeto de prueba son identificadas, por ejemplo, - Campos de una Interfaz Gráfica de Usuario (“GUI”) - Parámetros de una función (por ejemplo, componente de prueba) - Se define un rango para cada valor de entrada (“input”) - Este rango define la suma del todas las clases de equivalencia válidas (CEv) - Las clases de equivalencia no válidas (CEnv) están constituidas por aquellos valores no pertenecientes al rango - Aquellos valores que deben ser tratados de una forma diferente (conocidos o sospechosos) son asignados a una clase de equivalencia aparte Página 17 Partición de equivalencia - ejemplo • El porcentaje será presentado en un diagrama de barra. Se aplicarán los siguientes requisitos adicionales (ambos valores incluidos: – – – – • Valores entre 0 y 15: Valores entre 16 y 50: Valores entre 51 y 85: Valores entre 86 y 100: barra color gris barra color verde barra color amarillo barra color rojo Ahora hay cuatro clases de equivalencia válidas en lugar de una: – – – – 1ra clase de equivalencia válida: 0 ≤ x ≤ 15 2da clase de equivalencia válida:16 ≤ x ≤ 50 3ra clase de equivalencia válida: 51 ≤ x ≤ 85 4ta clase de equivalencia válida: 86 ≤ x ≤ 100 <0 0 - 15 16 - 50 51 - 85 86 - 100 > 100 Clase de equivalencia – selección de representantes • En el último paso, se determina un representante de cada clase de equivalencia así como el resultado esperado para cada uno de ellos Variable Clase de equivalencia Representantes Valor porcentaje (válido) EC1: 0 ≤ x ≤ 15 + 10 EC2: 16 ≤ x ≤ 50 + 20 EC3: 51 ≤ x ≤ 85 + 80 EC4: 86 ≤ x ≤ 100 + 90 EC5: x < 0 -10 EC6: x > 100 +200 EC7: x no entero 1,5 EC8: x non numérico fred Valor porcentaje (no válido) • Ejemplo de Tabla de Análisis Variable Precio de venta al público Descuento Precio del porte Clase de equivalencia Estado Representante T01 T02 T03 EC11: x >= 0 válido 1000,00 EC12: x < 0 no válido -1000,00 EC13: x valor no numérico no válido fred válido 10% EC22: x < 0% no válido -10% EC23: x > 100% no válido 200% EC24: x valor no numérico no válido fred EC31: x = 6 válido 6 EC32: x = 9 válido 9 EC33: x = 12 válido 12 EC34: x ≠ {6, 9, 12} no válido 4 EC35: x valor no numérico no válido fred EC21: 0% < x < 100% Partición en clases de equivalencia : ejemplo 2/3 - Los siguientes casos de prueba han sido generados utilizando CE no válidas, cada una en combinación con CE válidas de otros elementos: Variable Precio de venta al público Descuento Precio del porte Clase de equivalencia Estado Representante EC11: x >= 0 válido 1000,00 EC12: x < 0 no válido -1000,00 EC13: x valor no numérico no válido fred válido 10% EC22: x < 0% no válido -10% EC23: x > 100% no válido 200% EC24: x valor no numérico no válido fred EC31: x = 6 válido 6 EC32: x = 9 válido 9 EC33: x = 12 válido 12 EC34: x ≠ {6, 9, 12} no válido 4 EC35: x valor no numérico no válido fred EC21: 0% < x < 100% T04 T05 T06 T07 T08 T09 T10 Partición en clases de equivalencia: ejemplo 2/4 - Se obtienen 10 casos de prueba: 3 casos de prueba positivos (valores válidos) y 7 casos de prueba negativos (valores no válidos) Variable Precio de venta al público Descuento Precio del porte Estado válido no válido no válido válido Representante 1000,00 -1000,00 fred 10% no válido no válido no válido válido válido válido no válido no válido -10% 200% fred 6 9 12 4 fred T01 T02 T03 T04 T05 T06 T07 T08 T09 T10 Partición en clases de equivalencia Transición - La transición de la especificación o definición de la funcionalidad a la creación de las clases de equivalencia - Con frecuencia es una tarea difícil debido a la carencia de documentación precisa y completa - Los límites no definidos o las descripciones faltantes hacen difícil la definición de las clases de equivalencia - Con frecuencia, es necesario mantener contacto con el cliente con el objeto de completar la información Análisis de valores límite /1 - - - El análisis de valores limite amplía la técnica de partición en clases de equivalencia introduciendo una regla para seleccionar representantes Los valores frontera (valores límite) de la clase de equivalencia deben ser probados de forma intensiva ¿Porqué prestar más atención a los límites? - Frecuentemente los límites del rango de valores no están bien definidos o conducen a distintas interpretaciones - Comprobar si los límites han sido implementados (programados) correctamente - Observación importante - ¡La experiencia demuestra que, con mucha frecuencia, los errores tienen lugar en los límites del rango de valores! El análisis de los valores límite puede ser aplicado en todos los niveles de prueba. Es fácil de aplicar y su capacidad de detección de defectos es alta en el caso de especificaciones detalladas Análisis de valores límite /2 - El análisis de valores límite asume que: - La clase de equivalencia está compuesta de un rango continuo de valores (no por un valor individual o un conjunto de valores discretos) - Se pueden definir los límites para el rango de valores - Como extensión a la partición en clases de equivalencia el análisis de valores límite es un método que sugiere la selección de representantes - Partición en clases de equivalencia: - Evalúa un valor (típico) de la clase de equivalencia - Análisis de valores límite: - Evalúa los valores límite (frontera) y su entorno - Se utiliza el siguiente esquema: Rango de valores: Valor Máximo ≤ x ≤ Valor Mínimo Valor Mínimo - δ Límite Inferior Límite Inferior + δ Valor Máximo - δ Límite Superior Valor Máximo + δ δ es el menor incremento definido para el valor. Por ejemplo: 1 para valores enteros. Definición de valores límite - El esquema básico sólo puede ser aplicado cuando el rango de valores ha sido definido de conformidad con el mismo esquema. - En este caso no son necesarias pruebas adicionales para un valor en el interior del rango de valores - Si un CE está definido como un único valor numérico, por ejemplo, x = 5, los valores correspondientes al entorno también serán utilizados - Los representantes (de la clase y su entorno) son: 4,5 y 6 Análisis de valores límite ejemplo 3a - Ejemplo 3a: - Rango de valores para un descuento en %: 0,00 ≤ x ≤ 100,00 - Definición de CE 3 clases: - 1. CE: x < 0,00 - 2. CE: 0,00 ≤ x ≤ 100,00 - 3. CE: x > 100,00 - Análisis de valores límite Extiende los representantes a: 2. EC: -0,01; 0,00; 0,01; 99,99; 100,00; 100,01 - Nota importante: - En lugar de un representante para la CE válida, ahora hay seis representantes (cuatro válidos y dos no válidos) Pruebas de tabla de decisión (“decision table testing ”) - La partición en clases de equivalencia y el análisis de valores límite tratan entradas en condiciones aisladas - Sin embargo, una condición de entrada puede tener efectos sólo en combinación con otras condiciones de entrada - Todos los métodos descritos previamente no tienen en cuenta el efecto de dependencias y combinaciones - El uso del conjunto completo de las combinaciones de todas las clases de equivalencia de entrada conduce, normalmente, a un número muy alto de casos de prueba (explosión de casos de prueba) - Con la ayuda del gráfico causa-efecto ("cause-effect graph") y tablas de decisión obtenidas a partir de aquellos, la cantidad de combinaciones posibles se puede reducir de forma sistemática a un subconjunto de las mismas Pruebas de tabla de decisión (“decision table testing ”) - Ejemplo 5: Banca Online (“Online-Banking”). - El usuario se identifica a través de su número de cuenta y PIN. Si tuviera suficiente cobertura podrá realizar una transferencia. Para poder realizar la transferencia debe introducir los datos del receptor y un TAN válido. Cobertura (^ Receptor correcto TAN válido ~ ~ ~ (^ V Realizar transferencia TAN identificado como utilizado Denegar transferencia Solicitar TAN nuevamente Pruebas de tabla de - Ejemplo 5: Banca Online (“Online-Banking”) T01 T03 T04 T05 T02 Precondiciones (Causas) Actividades (Efectos) - - Suficiente cobertura SI NO - - Receptor correcto SI - NO - TAN válido SI - - NO Realizar transferencia SI NO NO NO Marcar TAN como utilizado SI NO NO NO Denegar transferencia NO SI SI NO Solicitar TAN nuevamente NO NO NO SI Cada columna de la tabla representa un caso de prueba Construcción de la tabla de decisión: - Seleccionar un efecto - Retroceder en el diagrama para identificar la causa - Cada combinación de causas está representada por una columna en la tabla de decisión (un caso de prueba) - Combinaciones de causas idénticas, conducentes a efectos distintos, se pueden fusionar para formar un único caso de prueba Pruebas de transición de estado • Para determinar los casos de prueba utilizando un diagrama de transición de estado se construye un árbol de transición – El estado inicial es la raíz del árbol – Para cada estado que pueda ser alcanzado desde el estado inicial se crea un nodo que está conectado a la raíz por una rama – Esta operación se repite y finaliza cuando: • El estado del nodo es un estado final (una hoja del árbol) O • El mismo nodo con el mismo estado ya es parte del árbol muerto muerto casado casado "morir“ "casarse“ "morir“ "casarse“ viudo divorciado “m.d.p.“ “divorciarse“ casado “morir” muerto “casarse” soltero "morir“ muerto “ser soltero" No nacido Evento: “m.d.p..”: muerte de pareja Pruebas de transición de estado • Cada camino desde la raíz a una hoja entonces representa un caso de prueba de prueba de transición de estado • El árbol de transición de estado para este ejemplo conduce a los siguientes seis casos de prueba M o estado 1 estado 2 estado 3 estado 4 estado 5 estado final no nacido soltero muerto no nacido soltero casado muerto no nacido soltero casado viudo muerto muerto. no nacido soltero casado viudo casado casado no nacido soltero casado divorciado muerto muerto no nacido soltero casado divorciado casado casado M o C C muerto muerto V D C S NN M o M o Árbol de transición de estado - muerto muerto casado casado "morir“ "morir“ divorciado viudo "casarse“ "casarse“ “m.d.p.“ “divorciarse“ casado - muerto “morir” error “casarse” muerto “divorciarse“ soltero “ser soltero" error No nacido “m.d.p.“ Evento: “m.d.p..”: muerte de pareja Página 33 - "morir“ El árbol de transición de estado de nuestro ejemplo puede ser extendido ualizando transiciones inválidas (casos de prueba negaavos, pruebas de robustez Ejemplo: dos transiciones inválidas posibles – hay más Las transiciones imposibles entre estados no se pueden probar IV - Técnicas de diseño de pruebas 03 - Técnicas basadas en la especificación o de caja negra Pruebas basadas en casos de uso /2 - Ejemplo de un diagrama de caso de uso sencillo (fuente: Wikipedia). - - - - - El diagrama de la izquierda describe la funcionalidad de un Sistema “Restaurant” sencillo Los casos de uso están representados por óvalos y los actores están representados por figuras de palo El actor “Patron” puede comer comida (“Eat Food”), pagar por la comida (“Pay for Food”)o beber vino (“Drink Wine”) El actor cocinero (“Chef”) sólo puede preparar comida. Observar que los actores “Patron” y “Cashier” están involucrados en el caso de uso “Pay for Food” (pagar por la comida) La caja define los límites del sistema “Restaurant”, es decir, los casos de uso representados son parte del sistema a modelar y no los actores Página 34 Tester Profesional de Software Consejos: Test de LIMITES: Diseñar el test case teniendo en cuenta los limites de los campos en que se va a grabar la información. (ídem para el test de particiones) Test de Estados: Comenzar por este tipo de tests cuando no es clara la definición de partición de datos. Test de Componentes Funcional: Prestar mayor Atención a las propiedades y a los componentes que tengan impacto en la información que se esta ingresando. Tests basados en experiencia anterior: Analizar información resumida, la abundancia de información puede ser nocivo. Recordar que no esta mal consultar o preguntar distintas opiniones de hecho se espera que un tester sea un generador de dialogo. Using structural coverage Spec Tests SoMware Enough tests? Results OK? What's covered? Coverage OK? More tests Stronger structural techniques (different structural elements) Increasing coverage Statement coverage • percentage of executable statements exercised by a test suite number of statements exercised total number of statements • example: – program has 100 statements = – tests exercise 87 statements – statement coverage = 87% Statement coverage is normally measured by a software tool. Typical ad hoc tesQng achieves 60 -‐ 75% ? Example of statement coverage 1 read(a) 2 IF a > 6 THEN 3 b = a 4 ENDIF 5 print b Test case Input Expected output 1 7 7 As all 5 statements are ‘covered’ by this test case, we have achieved 100% statement coverage Statement numbers Decision coverage (Branch coverage) • percentage of decision outcomes exercised by a test suite Decision coverage is normally measured by a software tool. number of decisions outcomes exercised = total number of decision outcomes • example: ? True – program has 120 decision outcomes – tests exercise 60 decision outcomes – decision coverage = 50% Typical ad hoc tesQng achieves 40 -‐ 60% False 1234 Paths through code 12 12 123 ? ? ? ? ? ? Paths through code with loops 1 2 3 4 5 6 7 8 …. ? for as many times as it is possible to go round the loop (this can be unlimited, i.e. infinite) Tips CC >= BC/DC >= SC Cyclomatic complexity Minimum no. of tests to achieve 100% Branch Coverage/ Decision Coverage Minimum no. of tests to achieve 100% Statement Coverage One decision, no ELSE Read A IF A > 0 THEN Print “A positive” ENDIF ELSE’s = 0 + 1 = 1 = SC Indentations (Tabs) = 2 = BC 2 – cyclomatic complexity: _____ – minimum tests to achieve: 1 • statement coverage: ______ • branch coverage: _____ 2 Read THEN A>0 Otherwise (ELSE) ENDIF Print Self-draw 1 Read stock level for item IF Item in stock THEN Get from stores ELSE Order from supplier Print “Item back-ordered” ENDIF Print “Item processed” 2 – cyclomatic complexity: _____ – minimum tests to achieve: 2 • statement coverage: ______ 2 • branch coverage: _____ Read In? THEN ELSE Order & Draw the diagram Print in your notes ENDIF Print Get Read WHILE loop Read order line WHILE more items ordered DO Check availability Get from stores FALSE ? TRUE Get & Check ENDDO Print “Finished processing” 2 – cyclomatic complexity: _____ – minimum tests to achieve: 1 • statement coverage: ______ 1 • branch coverage: _____ ENDDO Print init WHILE and IFs Pseudo-‐code: Result = 0 Right = 0 do if DO WHILE more QuesQons IF Answer = Correct THEN end Right = Right + 1 ENDIF res r=r+1 END DO Result = (Right / QuesQons) IF Result > 60% THEN Print "pass" ELSE Print "fail” END IF if 4 – complex: _____ 2 • st cov: _____ 2 • br cov: _____ fail end pass Wait Self draw 2 Wait for card to be inserted IF card is a valid card THEN display “Enter PIN number” WHILE PIN is valid DO select transaction ENDDO ELSE (otherwise) reject card Print record Valid card? Then Else Reject card 3 – complx: _____ 2 • st cov: _____ • br cov: _____ 2 Valid PIN? ENDDO ENDIF Print rec False True select trans. ENDIF Indentation Shows End of IF Display “Enter.. LCSAJ Stress Performance Carga Volumen L10N I18N Regression Recovery Usability MMD Ethical Hacking Taxonomy Configuraaon API Smoke Fuzz…. EJERCICIO Tienes 1000, sumale 40. Sumale 1000 más. Agrégale 30 y nuevamente 1000. Sumale 20. Sumale 1000 y añádele 10. FINISHED FILES ARE THE RE-‐ SULT OF YEARS OF SCIENTIF-‐ IC STUDY COMBINED WITH THE EXPERIENCE OF YEARS. Técnicas De Diseño También son técnicas de esamación. Ayudan a generar escenarios de pruebas eficaces. Tienen el concepto de probar lo menos posible pero tanto como haga falta. Es donde mayor parte del esfuerzo de Tesang debe concentrarse. Miden la CALIDAD de un objeto de prueba desde disantos puntos de vista. Reducen la posibilidad de un error humano mientras se testea. ¡Muchas gracias! Logo@Copyright www.bstriker.com
© Copyright 2024