Particin del espacio de inputs PEI MANUEL NEZ

  • Slides: 49
Download presentation
Partición del espacio de inputs (PEI) MANUEL NÚÑEZ ESPECIFICACIÓN, VALIDACIÓN Y TESTING Estas transparencias

Partición del espacio de inputs (PEI) MANUEL NÚÑEZ ESPECIFICACIÓN, VALIDACIÓN Y TESTING Estas transparencias están basadas en las desarrolladas por Ammann & Offutt como acompañamiento de su libro Introduction to Software Testing (2 nd Edition)

Cuatro estructuras para modelar software Espacio de Inputs Grafos Aplicado a Lógica Aplicado a

Cuatro estructuras para modelar software Espacio de Inputs Grafos Aplicado a Lógica Aplicado a Código Diseño Especs Aplicado a FSMs FND Especs Código Syntaxis Código Casos de uso ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) Modelos Integra Input 2

Dominios de entrada El dominio de inputs de un programa contiene todos los posibles

Dominios de entrada El dominio de inputs de un programa contiene todos los posibles inputs del programa. Incluso para programas pequeños, el dominio de inputs es tan grande que podría considerarse infinito. Testing consiste, fundamentalmente, en elegir un conjunto finito de valores de este dominio. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 3

Dominios de entrada Los parámetros de entrada definen el ámbito del dominio de inputs:

Dominios de entrada Los parámetros de entrada definen el ámbito del dominio de inputs: ◦ Parámetros de un método. ◦ Datos que se leen de un fichero. ◦ Variables globales. ◦ Etc. Los dominios asociados con los parámetros de entrada se particionan en regiones. Se escoge al menos un valor de cada una de estas regiones. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 4

Beneficios de PEI Se puede aplicar a varios niveles de testing ◦ Unitario. ◦

Beneficios de PEI Se puede aplicar a varios niveles de testing ◦ Unitario. ◦ Integración. ◦ Sistema. Es relativamente sencillo de aplicar sin realizar automatización. Es fácil adaptar el proceso para considerar más/menos tests. No se necesita conocer la implementación: simplemente el espacio de inputs. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 5

Partición de dominios • Dominio D. • Esquema de partición q de D. •

Partición de dominios • Dominio D. • Esquema de partición q de D. • La partición q define un conjunto de bloques: Bq = b 1 , b 2 , …, b. Q • La partición debe cumplir dos propiedades: • • b 1 Los bloques deben ser disjuntos dos a dos (no solapan). Los bloques cubren todo el dominio D (completitud). b 2 b 3 bi bj = Ø, i j, bi, bj Bq b=D b Bq ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 6

Uso de Particiones: Hipótesis Se elije un valor de cada bloque Se asume que

Uso de Particiones: Hipótesis Se elije un valor de cada bloque Se asume que cada valor es igual de útil para testear el sistema. Aplicación de testing: ◦ Encontramos características en los inputs: parámetros, descripciones semánticas, … ◦ Particionamos cada característica. ◦ Elegimos tests al combinar valores de las características. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 7

Uso de Particiones: Hipótesis Ejemplos de características: ◦ Input X es null. ◦ Orden

Uso de Particiones: Hipótesis Ejemplos de características: ◦ Input X es null. ◦ Orden del fichero de entrada F (ordenado, ordenado a la inversa, arbitrario…). ◦ Mínima separación entre dos aviones. ◦ Dispositivo de entrada de señal (DVD, CD, VCR, ordenador, …). ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 8

Elección de particiones La elección (definición) de particiones parece sencilla pero es fácil equivocarse.

Elección de particiones La elección (definición) de particiones parece sencilla pero es fácil equivocarse. Consideremos “ordenación del fichero F”. b 1 = ordenado ascendentemente b 2 = ordenado descendentemente b 3 = orden arbitrario pero … algo huele mal … ¿Qué ocurre si la longitude es 1? El fichero está en los tres bloques… No se cumple “no solapamiento”. Solución: Cada característica debería considerar solo una propiedad C 1: F ordenado ascendente - c 1. b 1 = true - c 1. b 2 = false C 2: F ordenado descendente - c 2. b 1 = true - c 2. b 2 = false ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 9

Propiedades de las particiones Si las particiones no son completes o disjuntas entonces no

Propiedades de las particiones Si las particiones no son completes o disjuntas entonces no hemos sido suficiente cuidadosos al elegirlas. Deberían revisarse detenidamente (como cualquier diseño). Se deberían considerar alternativas diferentes. Modelaremos el dominio de inputs en cinco pasos. ◦ Los pasos 1 y 2 nos mueven del nivel de la implementación al nivel de diseño. ◦ Los pasos 3 y 4 se llevan a cabo al nivel de diseño. ◦ El paso 5 nos devuelve al nivel de implementación. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 10

Modelado del dominio de inputs Paso 1: Identificar las funciones testeables. ◦ Los métodos

Modelado del dominio de inputs Paso 1: Identificar las funciones testeables. ◦ Los métodos individuales tienen una función testeable. ◦ Los métodos de una clase suelen tener las mismas características. ◦ Los programas tienen características más complicadas: documentos de modelado, como UML, se pueden usar para diseñar características. ◦ Los sistemas que integran componentes hardware y software usan dispositivos, sistemas operativos, plataformas hardware, browsers, etc. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 11

Modelado del dominio de inputs Paso 2: Encontrar todos los parámetros. ◦ Usualmente es

Modelado del dominio de inputs Paso 2: Encontrar todos los parámetros. ◦ Usualmente es muy sencillo, incluso mecánico. ◦ Es muy importante que sea completo (no nos dejamos ninguno). ◦ Métodos: Parámetros y variables no locales. ◦ Componentes: Parámetros para métodos y variables no locales. ◦ Sistema: Todos los inputs, incluyendo ficheros y bases de datos. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 12

Modelado del dominio de inputs Paso 3: Modelar el dominio de inputs. ◦ El

Modelado del dominio de inputs Paso 3: Modelar el dominio de inputs. ◦ El dominio viene acotado por los parámetros. ◦ La estructura se define en términos de las características. ◦ Cada característica se particiona en conjuntos de bloques. ◦ Cada bloque representa un conjunto de valores. ◦ Este es el paso más creativo al llevar a cabo PEI. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 13

Modelado del dominio de inputs Paso 4: Aplicar un criterio para elegir las combinaciones

Modelado del dominio de inputs Paso 4: Aplicar un criterio para elegir las combinaciones de valores. ◦ Cada test contiene un valor para cada parámetro. ◦ Un bloque para cada característica. ◦ Usualmente es imposible considerar todas las combinaciones. ◦ Los criterios de cobertura permiten elegir subconjuntos. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 14

Modelado del dominio de inputs Paso 5: Transformar las combinaciones de bloques en tests.

Modelado del dominio de inputs Paso 5: Transformar las combinaciones de bloques en tests. ◦ Elegir valores apropiados para cada bloque. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 15

Dos metodologías para modelar el dominio de inputs Basada en el interface ◦ Se

Dos metodologías para modelar el dominio de inputs Basada en el interface ◦ Se desarrollan características a partir de los parámetros de entrada. ◦ Es la forma más simple. ◦ En algunas situaciones se puede automatizar (parcialmente). Basada en funcionalidades ◦ Se desarrollan características a partir del comportamiento observado en el programa que estamos testeando. ◦ Más difícil de desarrollar: necesita más esfuerzo de diseño. ◦ Puede dar lugar a mejores tests o menos tests que son igual de efectivos. Modelo del Dominio de Inputs (MDI) ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 16

Basada en el interface De forma mecánica, consideramos cada parámetro por separado. Esta es

Basada en el interface De forma mecánica, consideramos cada parámetro por separado. Esta es una técnica sencilla de modelado y se basa, esencialmente, en la sintaxis. De hecho, no se tendrá en cuenta alguna información semántica o sobre el dominio, lo que dará lugar a MDI incompletos. Ignora completamente las relaciones entre parámetros. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 17

Basada en el interface Consideremos un método Triangulo() que implementa el problema con el

Basada en el interface Consideremos un método Triangulo() que implementa el problema con el que empezamos el curso y que forma parte de una clase Tipo. Triangulo. public enum Triangulo { Escaleno, Isosceles, Equilatero, Invalido } public static Triangulo triang (int Lado 1, int Lado 2, int Ladoe 3) // Lado 1, Lado 2, and Lado 3 representan las longitudes de los lados del triángulo // Devuelve el valor apropiado de enum El MDI es igual para cada parámetro. Característica razonable: Relación de lado con cero. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 18

Basada en las funcionalidades Se identifican características que corresponden con las supuestas funcionalidades. Como

Basada en las funcionalidades Se identifican características que corresponden con las supuestas funcionalidades. Como ya hemos dicho, requiere un mayor esfuerzo de diseño por parte del testeador. Pueden incorporar conocimiento sobre semántica y dominio. Puede tener en cuenta relaciones entre parámetros. El modelado se puede basar en los requisitos en lugar de en la implementación. Un parámetro puede aparecer en varias características. Por tanto, es más difícil traducir valores en tests. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 19

Basada en las funcionalidades Consideremos de nuevo el método Triangulo() de la clase Tipo.

Basada en las funcionalidades Consideremos de nuevo el método Triangulo() de la clase Tipo. Triangulo. Los tres parámetros representan un triángulo. El MDI puede combinar todos los parámetros. Característica razonable: Tipo de triángulo. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 20

Pasos 1 & 2: Funcionalidades, parámetros y características La creatividad juega un papel relevante.

Pasos 1 & 2: Funcionalidades, parámetros y características La creatividad juega un papel relevante. Un mayor número de características da lugar a más tests. Basada en el interface: Traducir de parámetros a características. Candidatos para características: ◦ Precondiciones y postcondiciones. ◦ Relaciones entre variables. ◦ Relación entre variables con valores especiales (cero, null, blanco, …). ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 21

Pasos 1 & 2: Funcionalidades, parámetros y características No se debería usar el código

Pasos 1 & 2: Funcionalidades, parámetros y características No se debería usar el código fuente: características deberían basarse en el dominio de los inputs. ◦ El código se debería usar con criterios basados en grafos o lógica. Es mejor tener más características con menos bloques. ◦ Menos errores y menos tests. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 22

Pasos 1 & 2: Interface public boolean encontrar. Elemento (List lista, Object elemento) //

Pasos 1 & 2: Interface public boolean encontrar. Elemento (List lista, Object elemento) // Si lista o elemento es null lanzar Null. Pointer. Exception // sino devuelve true si elemento está en lista, false e. o. c. Basada en interface Dos parámetros: lista, elemento Características: lista es null (block 1 = true, block 2 = false) lista es vacía (block 1 = true, block 2 = false) ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 23

Pasos 1 & 2: Funcionalidades public boolean encontrar. Elemento (List lista, Object elemento) //

Pasos 1 & 2: Funcionalidades public boolean encontrar. Elemento (List lista, Object elemento) // Si lista o elemento es null lanzar Null. Pointer. Exception // sino devuelve true si elemento está en lista, false e. o. c. Basada en funcionalidades Dos parámetros: lista, elemento Características: número de apariciones de elemento en lista (0, 1, >1) elemento sale el primero en la lista (true, false) elemento sale el último en la lista (true, false) ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 24

Paso 3: Modelando el dominio de inputs Partiticionar las características en bloques y valores

Paso 3: Modelando el dominio de inputs Partiticionar las características en bloques y valores es un paso muy creativo. Más bloques implican más tests. A menudo se pueden realizar las particiones directamente a partir de las características (y ambos pasos se hacen juntos). ◦ En general, se deberían evaluar por separado: algunas veces se pueden usar menos características con más bloques y viceversa. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 25

Paso 3: Modelando el dominio de inputs Estrategias para identificar valores: ◦ Incluir valores

Paso 3: Modelando el dominio de inputs Estrategias para identificar valores: ◦ Incluir valores válidos, inválidos y especiales. ◦ Sub-particionar algunos bloques. ◦ Explorar las fronteras entre dominios. ◦ Incluir valores que representan el “uso normal”. ◦ Intentar equilibrar el número de bloques por característica. ◦ Comprobar completitud y disjuntos. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 26

Paso 3: MDI-Interface triang() Triang() tiene una función testeable y tres inputs enteros. Primera

Paso 3: MDI-Interface triang() Triang() tiene una función testeable y tres inputs enteros. Primera caracterización de los inputs Característica b 1 b 2 b 3 q 1 = Relación de Lado 1 con 0 mayor que 0 igual a 0 menor que 0 q 2 = Relación de Lado 2 con 0 mayor que 0 igual a 0 menor que 0 q 3 = Relación de Lado 3 con 0 mayor que 0 igual a 0 menor que 0 Da lugar a un máximo de 3*3*3 = 27 tests. Algunos triángulos serán válidos y otros serán inválidos. Refinar la caracterización puede dar lugar a más tests …. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 27

Paso 3: MDI-Interface triang() Segunda caracterización de los inputs Característica b 1 b 2

Paso 3: MDI-Interface triang() Segunda caracterización de los inputs Característica b 1 b 2 b 3 b 4 q 1 = Refina q 1 mayor que 1 igual a 0 menor que 0 q 2 = Refina q 2 mayor que 1 igual a 0 menor que 0 q 3 = Refina q 3 mayor que 1 igual a 0 menor que 0 Da lugar a un máximo de 4*4*4 = 64 tests. Completa porque los inputs son enteros. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 28

Paso 3: MDI-Interface triang() Segunda caracterización de los inputs Característica b 1 b 2

Paso 3: MDI-Interface triang() Segunda caracterización de los inputs Característica b 1 b 2 b 3 b 4 q 1 = Refina q 1 mayor que 1 igual a 0 menor que 0 q 2 = Refina q 2 mayor que 1 igual a 0 menor que 0 q 3 = Refina q 3 mayor que 1 igual a 0 menor que 0 Valores posibles para q 1 Característica Lado 1 b 1 52 b 3 b 4 1 0 -1 -5 Si queremos tener en cuenta las fronteras ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 29

Paso 3: MDI-funcionalidades triang() Las primeras dos caracterizaciones están basadas en sintaxis: los parámetros

Paso 3: MDI-funcionalidades triang() Las primeras dos caracterizaciones están basadas en sintaxis: los parámetros y su tipo. Una caracterización a nivel semántico puede usar el hecho de que los tres enteros representen un triángulo. Caracterización geométrica de los inputs Característica b 1 b 2 b 3 b 4 q 1 = Clasificación escaleno isósceles equilátero inválido Geométrica Oh, oh, algo huele mal…. los equiláteros también son isósceles… refinar Caracterización correcta geométrica de los inputs Característica b 1 b 2 b 3 b 4 Isósceles, q 1 = Clasificación escaleno no equilátero inválido Geométrica equilátero ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 30

Paso 3: MDI-funcionalidades triang() Los valores de esta partición se puede elegir de la

Paso 3: MDI-funcionalidades triang() Los valores de esta partición se puede elegir de la siguiente forma: Posibles valores para partición geométrica q 1 Característica Triángulo b 1 b 2 b 3 b 4 (4, 5, 6) (3, 3, 4) (3, 3, 3) (3, 4, 8) ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 31

Paso 3: MDI-funcionalidades triang() Una alternativa sería partir la caracterización anterior en cuatro. Cuatro

Paso 3: MDI-funcionalidades triang() Una alternativa sería partir la caracterización anterior en cuatro. Cuatro características para triang() Característica b 1 b 2 q 1 = escaleno True False q 2 = isósceles True False q 3 = equilátero True False q 4 = válido True False Además, hay que añadir restricciones para asegurar que: o equilátero = True implica isósceles = True. o válido = False implica escaleno = isósceles = equilátero = False. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 32

Paso 3: Uso de más de un MDI Algunos programas pueden tener cientos de

Paso 3: Uso de más de un MDI Algunos programas pueden tener cientos de parámetros. Una buena alternativa puede ser crear varios MDIs pequeños, dando lugar a una estrategia divide y vencerás. Diferentes partes del software se pueden testear con diferente rigurosidad. Por ejemplo, algunos MDIs pueden incluir muchos valores inválidos. El hecho de que los diferentes MDIs solapen no acarrea problemas: la misma variable puede aparecer en varios MDIs. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 33

Paso 4: Eligiendo combinaciones de valores Cuando se han definido las características y las

Paso 4: Eligiendo combinaciones de valores Cuando se han definido las características y las particiones, el siguiente paso es elegir valores para los tests. Utilizamos criterios para elegir subconjuntos efectivos. El criterio más obvio consiste en elegir todas las combinaciones. All Combinations (ACo. C): Se usan todas las combinaciones de bloques de todas las características. El número de tests es igual al producto del número de bloques en Q cada característica. (B ) i=1 i La segunda caracterización de triang() da lugar a 64 tests. ¿Creéis que son demasiados? ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 34

Criterio PEI: Todas combinaciones Consideremos la segunda caracterización geométrica: Característica b 1 b 2

Criterio PEI: Todas combinaciones Consideremos la segunda caracterización geométrica: Característica b 1 b 2 b 3 b 4 q 1 = Refina q 1 mayor que 1 igual a 0 menor que 0 q 2 = Refina q 2 mayor que 1 igual a 0 menor que 0 q 3 = Refina q 3 mayor que 1 igual a 0 menor que 0 Por conveniencia, reetiquetamos los bloques: ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 35

Criterio PEI: Todas combinaciones Característica b 1 b 2 b 3 b 4 A

Criterio PEI: Todas combinaciones Característica b 1 b 2 b 3 b 4 A A 1 A 2 A 3 A 4 B B 1 B 2 B 3 B 4 C C 1 C 2 C 3 C 4 ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 36

Criterio PEI: Tests ACo. C A 1 B 1 C 1 A 1 B

Criterio PEI: Tests ACo. C A 1 B 1 C 1 A 1 B 1 C 2 A 1 B 1 C 3 A 1 B 1 C 4 A 2 B 1 C 1 A 2 B 1 C 2 A 2 B 1 C 3 A 2 B 1 C 4 A 3 B 1 C 1 A 3 B 1 C 2 A 3 B 1 C 3 A 3 B 1 C 4 A 4 B 1 C 1 A 4 B 1 C 2 A 4 B 1 C 3 A 4 B 1 C 4 A 1 B 2 C 1 A 1 B 2 C 2 A 1 B 2 C 3 A 1 B 2 C 4 A 2 B 2 C 1 A 2 B 2 C 2 A 2 B 2 C 3 A 2 B 2 C 4 A 3 B 2 C 1 A 3 B 2 C 2 A 3 B 2 C 3 A 3 B 2 C 4 A 4 B 2 C 1 A 4 B 2 C 2 A 4 B 2 C 3 A 4 B 2 C 4 A 1 B 3 C 1 A 1 B 3 C 2 A 1 B 3 C 3 A 1 B 3 C 4 A 2 B 3 C 1 A 2 B 3 C 2 A 2 B 3 C 3 A 2 B 3 C 4 A 3 B 3 C 1 A 3 B 3 C 2 A 3 B 3 C 3 A 3 B 3 C 4 A 4 B 3 C 1 A 4 B 3 C 2 A 4 B 3 C 3 A 4 B 3 C 4 A 1 B 4 C 1 A 1 B 4 C 2 A 1 B 4 C 3 A 1 B 4 C 4 A 2 B 4 C 1 A 2 B 4 C 2 A 2 B 4 C 3 A 2 B 4 C 4 A 3 B 4 C 1 A 3 B 4 C 2 A 3 B 4 C 3 A 3 B 4 C 4 A 4 B 4 C 1 A 4 B 4 C 2 A 4 B 4 C 3 A 4 B 4 C 4 ACo. C da lugar a 4*4*4=64 tests. Ciertamente, esta cantidad parece muy alta. En particular, teniendo en cuenta que solo 8 de ellos son válidos (todos lados mayores que cero). ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 37

Criterio PEI: Cada elección Un nuevo criterio se conforma a partir de la idea

Criterio PEI: Cada elección Un nuevo criterio se conforma a partir de la idea de que debemos probar al menos un valor de cada bloque. Each Choice Coverage (ECC): Un valor de cada bloque de cada característica se debe usar en al menos un test. El número de tests es igual al número de bloques de la característica Q con más bloques. (Bi) Max triang() : A 1, B 1, C 1 A 2, B 2, C 2 A 3, B 3, C 3 A 4, B 4, C 4 i=1 Usando valores: 2, 2, 2 1, 1, 1 0, 0, 0 -1, -1 ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 38

Criterio PEI: Dos a dos En el criterio anterior, cada elección da menos tests

Criterio PEI: Dos a dos En el criterio anterior, cada elección da menos tests pero puede ser inefectiva. Una alternativa es combinar valores con otros valores. Pair-Wise Coverage (PWC): Un valor de cada bloque de cada característica se debe combinar con un valor de todos los bloques de las otras características. El número de tests es al menos el producto de los bloques de la dos Q (Bi) ) * (Max Q características con más bloques. (Max (Bj) ) i=1 triang() : A 1, B 1, C 1 A 2, B 1, C 2 A 3, B 1, C 3 A 4, B 1, C 4 A 1, B 2, C 2 A 1, B 3, C 3 A 1, B 4, C 4 A 2, B 2, C 3 A 2, B 3, C 4 A 2, B 4, C 1 A 3, B 2, C 4 A 3, B 3, C 1 A 3, B 4, C 2 A 4, B 2, C 1 A 4, B 3, C 2 A 4, B 4, C 3 ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) j=1, j!=i 39

Criterio PEI: Dos a dos En el criterio anterior, cada elección da menos tests

Criterio PEI: Dos a dos En el criterio anterior, cada elección da menos tests pero puede ser inefectiva. Una alternativa es combinar valores con otros valores. Pair-Wise Coverage (PWC): Un valor de cada bloque de cada característica se debe combinar con un valor de todos los bloques de las otras características. A, 1 A, 2 A, 3 A, x A, y B, 1 B, 2 B, 3 B, x B, y 1, x 1, y 2, x 2, y 3, x 3, y Otro ejemplo: Tenemos tres particiones con bloques [A, B], [1, 2, 3] y [x, y] los tests necesitan cubrir las siguientes 16 combinaciones. Como cada test puede cubrir más de una combinación es suficiente con los siguientes 8 tests: A, 1, x A, 2, x A, 3, x B, 1, y B, 2, y B, 3, y Nota: - se puede sustituir por cualquier valor. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 40

Criterio PEI: de t en t Una extensión obvia consiste en requerir la combinación

Criterio PEI: de t en t Una extensión obvia consiste en requerir la combinación de t valores en lugar de 2. t-Wise Coverage (TWC): Un valor de cada bloque de cada grupo de t características se debe combinar. El número de tests es al menos el producto de los bloques de la t características con más bloques. Si todas las características tienen el mismo tamaño: (Max Q (B ) i=1 i )t Si t es igual al número de características Q entonces Q-Wise = ACo. C. T-wise es costoso y sus beneficios no están claros. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 41

Criterio PEI: Elección base Los testeadores identifican que algunos valores son más importantes. Esto

Criterio PEI: Elección base Los testeadores identifican que algunos valores son más importantes. Esto usa conocimiento del dominio del programa. Base Choice Coverage (BCC): Para cada característica se designa un bloque como elección base. Un test base se conforma usando la elección base de cada característica. Los siguientes tests se forman manteniendo todos los valores constantes menos uno y usando cada elección no base en las demás características. El número de tests es igual a un test base más un test por cada uno de los restantes bloques: 1+ Base A 1, B 1, C 1 A 1, B 1, C 2 A 1, B 2, C 1 A 2, B 1, C 1 A 1, B 1, C 3 A 1, B 3, C 1 A 3, B 1, C 1 A 1, ESPECIFICACIÓN, B 1, C 4 VALIDACIÓN A 1, Y TESTING B 4, (M. C 1 A 4, B 1, C 1 G. MERAYO Y M. NÚÑEZ) Q i=1 (Bi -1 ) 42

Criterio PEI: Elección base El test base debe ser factible, es decir, las elecciones

Criterio PEI: Elección base El test base debe ser factible, es decir, las elecciones deben ser compatibles. Las elecciones base pueden ser: o Más habituales desde el punto de vista del uso final. o Más simples. o Más pequeñas. o Primeras en algún orden. Tests que siguen un camino feliz suelen ser buenas elecciones. La elección base es una decisión de diseño crucial. Los diseñadores de tests deberían documentar sus decisiones en este sentido. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 43

Criterio PEI: Múltiple elección base Algunas veces existe más de un elección base lógica.

Criterio PEI: Múltiple elección base Algunas veces existe más de un elección base lógica. Multiple Base Choice Coverage (MBCC): Se elige al menos un bloque de elección base para cada característica. Los tests base se conforman usando la elección base de cada característica al menos una vez. Los siguientes tests se forman manteniendo todos los valores constantes menos uno y usando cada elección no base en las demás características. Si tenemos M tests base y mi elecciones base para cada característica entonces tenemos (a lo sumo) tests: M+ ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) Q (M * (Bi - mi )) i=1 44

Criterios PEI: Subsunción All Combinations Coverage ACo. C T-Wise Coverage TWC Multiple Base Choice

Criterios PEI: Subsunción All Combinations Coverage ACo. C T-Wise Coverage TWC Multiple Base Choice Coverage MBCC Pair-Wise Coverage PWC Base Choice Coverage BCC Each Choice Coverage ECC ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 45

Restricciones entre características Algunas combinaciones de bloques no son factibles. ◦ “menor que cero”

Restricciones entre características Algunas combinaciones de bloques no son factibles. ◦ “menor que cero” y “escaleno” no son posibles al mismo tiempo. Estas combinaciones se pueden representar mediante restricciones entre bloques. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 46

Restricciones entre características Hay dos tipos de restricciones: ◦ Un bloque de una característica

Restricciones entre características Hay dos tipos de restricciones: ◦ Un bloque de una característica no se puede combinar con un bloque específico de otra. ◦ Un bloque de una característica puede combinarse SOLO con un bloque específico de otra. La manipulación de restricciones depende del criterio considerado: ◦ ACC, PWC, TWC: Eliminar los pares no factibles. ◦ BCC, MBCC: Cambiar un valor por otro que no sea base para encontrar una combinación factible. ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 47

Ejemplo manipulación restricciones public boolean encontrar. Elemento (List lista, Object elemento) // Si lista

Ejemplo manipulación restricciones public boolean encontrar. Elemento (List lista, Object elemento) // Si lista o elemento es null lanzar Null. Pointer. Exception // sino devuelve true si elemento está en lista, false e. o. c. Característica Bloque 1 Bloque 2 Bloque 3 A: longitud y contenidos un elemento más de uno, no ordenados B : match elemento no encontrado elemento una vez Combinaciones inválidas: (A 1, B 3), (A 4, B 2) Un elemento no puede estar más de una vez en una lista con un elemento Bloque 4 más de uno, todos iguales elemento más de una vez Si la lista tiene un único elemento pero aparece varias veces, no podemos encontrarlo una sola vez ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 48

Resumen de PEI Relativamente fácil de usar, incluso sin automatización. Son convenientes para considerar

Resumen de PEI Relativamente fácil de usar, incluso sin automatización. Son convenientes para considerar más/menos testing. Aplicable a todos los niveles (unidad, clase, integración, etc). Basado solo en el espacio de inputs del programa, no en la implementación Simple, sencillo, efectivo, y ampliamente usado ESPECIFICACIÓN, VALIDACIÓN Y TESTING (M. G. MERAYO Y M. NÚÑEZ) 49