106
Functional Testing Juan C. Sacanamboy - Rubén Valencia - Julio Campaz

Functional Testing

Embed Size (px)

DESCRIPTION

-Descripción de la familia Fuctional testing -Técnicas de la familia -Comparación respecto a otras familias -Posibles ambientes de configuración -Referencias -Preguntas

Citation preview

Page 1: Functional Testing

Functional TestingJuan C. Sacanamboy - Rubén Valencia - Julio Campaz

Page 2: Functional Testing

Agenda1. Familia Functional Testing2. Técnicas de la familia

a. Combinatorial Testingb. Equivalence Partitioningc. Exploratory Testingd. Anti-Random Testinge. Specification-based Testingf. Boundary Value Analysis

3. Comparación respecto a otras familias4. Posibles ambientes5. Referencias6. Preguntas

Page 3: Functional Testing

Familia Functional TestingSon un tipo de técnicas de caja negra que generan sus casos de pruebas a partir de la documentación de los componentes de software. Las actividades verifican una acción o función específica del software.

Page 4: Functional Testing

Familia Functional TestingPuede hacerse desde 2 perspectivas:

● Basado en requerimientos

● Basado en el proceso del negocio

Page 5: Functional Testing

Familia Functional TestingGeneralmente involucra 5 pasosThe identification of functions that the software is expected to performThe creation of input data based on the function's specificationsThe determination of output based on the function's specificationsThe execution of the test caseThe comparison of actual and expected outputsTo check whether the application works as per the customer need.

Page 6: Functional Testing

Combinatorial Testing (CT)Se hace testing con un conjunto de pruebas que cubra todas las combinaciones requeridas en los valores de los parámetros.

Ventaja: Puede detectar fallas que se generan por la interacción entre parámetros en el SUT (Software Under Test).

Page 7: Functional Testing

Combinatorial Testing (CT)Ejemplo: Juego en Internet

Parámetros = { Navegador, SO, Tipo de acceso a la red, Gráficos, Audio, número de jugadores}

Interacción entre parámetros → Fallas

Page 8: Functional Testing

Combinatorial Testing (CT)- Probar TODAS las combinaciones de los valores de los parámetros → Poco práctico.- La mayoría de combinaciones no producen fallos → Poco eficiente.

El CT provee una manera práctica para detectar fallas con una buena relación costo-eficiencia.

Page 9: Functional Testing

Combinatorial Testing (CT)1. Crea casos de prueba seleccionando valores de los parámetros y

combinandolos para formar un covering array

Tomada de (Nie & Leung, 2011)

Page 10: Functional Testing

Combinatorial Testing (CT)2. Usar el covering array como el conjunto de pruebas.3. Cada parámetro no va a relacionarse con una falta y algunas faltas pueden detectarse probando la interacción entre una cantidad pequeña de parámetros.

(Kuhn and Reilly, 2002) y (Kuhn and Wallace, 2004). Todas las faltas conocidas son causadas por la interacción entre 6 o menos parámetros.

CT tiene un rendimiento próximo al testing exhaustivo pero usando una cantidad reducida de casos de prueba.

Page 11: Functional Testing

Combinatorial Testing (CT)4. No se requiere conocimiento de la implementación.Se requiere una especificación mínima: parámetros y posibles valores.

5. La generación de casos de prueba puede ser automatizada → Amplia aceptación en la industria

Page 12: Functional Testing

Combinatorial Testing (CT)Falsa confianza

1. No se cubren todas las posibles combinaciones.2. Si los parámetros y valores no son seleccionados correctamente, se

disminuirá la capacidad de CT para detectar faltas.3. Si no se detectan todas las interacciones entre los parámetros, CT no

probará esas combinaciones.

Se debe aplicar CT sabiamente. En (Nie & Lieung,2011) se hace una recopilación de 93 papers y se caracterizan de acuerdo a 8 temas.

Page 13: Functional Testing

Combinatorial Testing (CT)1. Modelamiento (Model)2. Generación de casos de prueba (Gen)3. Restricciones (Constr.)4. Caracterización de faltas y diagnóstico (Fault)5. Mejoramiento de los procedimientos de testing y la aplicación de CT (App).6. Priorización de casos de prueba (Prior.)7. Métricas (Metric)8. Evaluación (Eval.)

Tomada de (Nie & Leung, 2011)

Page 14: Functional Testing

Combinatorial Testing (CT)Notaciónn parámetrosCada tiene valores discretos de un conjunto finito

R es el conjunto de relaciones de interacción. Todas las interacciones existentes entre parámetros.

Conjunto potencia: Conjunto formado por todos los subconjuntos del mismo.

Page 15: Functional Testing

Combinatorial Testing (CT)Ejemplo:

indica que todos los valores del parámetro en pueden generar una falla.

muestra que existen interacciones entre y . Esto quiere decir que todas las parejas en pueden generar una falla.

Page 16: Functional Testing

Combinatorial Testing (CT)Ejemplo práctico

n = 4a1 = a2 = a3 = a4 = 3V1 = {Netscape, IE, Firefox}R = {{c1,c2,c3,c4}} → Todos los parámetros y sus combinaciones pueden afectar el juego.

Tomada de (Nie & Leung, 2011)

Page 17: Functional Testing

Combinatorial Testing (CT)Definición (Caso de prueba)Una n-tupla (v1,v2,...,vn) dondees un caso de prueba de un SUT.Tall → Conjunto de todos los posibles casos de prueba.Tall ⊆ { (v1,v2,...,vn) | } = V1 X V2X...XVn

Ejemplo juego: |Tall| = 34 = 81 casos de prueba

Page 18: Functional Testing

Combinatorial Testing (CT)Definición (Esquema Valor)La n-tupla (-,Vn1,…,Vnk,...) es llamada un esquema k-valor (k>0), cuando algunos k parámetros tienen valores definidos y el resto puede tomar cualquier valor permitido, lo cual se representa con un “-”.

Page 19: Functional Testing

Combinatorial Testing (CT)Ejemplo: Se detecta una falla con el caso de prueba t = (Netscape, Windows, ISDL, Creative) que pudo haber sido generada por:-Un esquema de un valor en {(Netscape,-,-,-), (-,Windows,-,-), (-,-,ISDL,-), (-,-,-,Creative)}-Uno de los esquemas de dos valores en {(Netscape,Windows,-,-), (-,Windows,ISDL,-), (-,-,ISDL, Creative), (Netscape,-,ISDL,-), (-,Windows,-,Creative), (Netscape,-,-,Creative)}

24 - 1 = 15 posibles causas2n - 1 esquemas

Page 20: Functional Testing

Combinatorial Testing (CT)Definición (Arreglo Ortogonal) - OAUn arreglo ortogonal (OA) de fuerza τ, es un arreglo Nxn con las siguientes propiedades:1. Cada columna i (1 ≤ i ≤ n) contiene solamente elementos del conjunto Vi con ai = |Vi| 2. Las filas de cada sub-arreglo N x τ cubre todas las τ - tuplas de valores de las τ columnas exactamente λ veces.

λ = N / (ai1...aiτ )

Page 21: Functional Testing

Combinatorial Testing (CT)Orthogonal ArrayTesting Systems → CT(OATS)-OA difícil de generar-Conjunto de pruebas muy grande

Ejemplo

Arreglo ortogonalτ = 2N = 4

Page 22: Functional Testing

Combinatorial Testing (CT)Definición (Covering Array)Si un arreglo Nxn cumple las siguientes propiedades:1. Cada columna i (1 ≤ i ≤ n) contiene solamente elementos del conjunto Vi con ai = |Vi| 2. Las filas de cada sub-arreglo N x τ cubre todas las τ - tuplas de valores de las τ columnas al menos una vez.

,entonces es denominado un covering array τ-way

Page 23: Functional Testing

Combinatorial Testing (CT)τ-way testingEs un tipo de CT que requiere que cada combinación de cualquier τ valores de parámetros debe ser probada al menos una vez.

τ = 1 → Estrategia de combinación Each Choice (EC)τ = 2 → Pairwise testing (PW)τ = n → Estrategia All Combination (AC)

Page 24: Functional Testing

Combinatorial Testing (CT)Variable Strength Covering ArrayR con elementos de diferentes tamaños

Tomada de (Nie & Leung, 2011)

Page 25: Functional Testing

Combinatorial Testing (CT)Métodos para la generación de casos de prueba-One Factor One Time (OFOT) o Base Choice (BC)t = (v1, v2,...,vn) → Caso de prueba

Reemplazar cada valor vi con los otros valores del parámetro ci uno por uno, manteniendo los otros valores de t iguales.

Page 26: Functional Testing

Combinatorial Testing (CT)

Tomada de (Nie & Leung, 2011)

Page 27: Functional Testing

Combinatorial Testing (CT)-Simplified One Factor One Time Method (SOFOT)t = (v1, v2,...,vn) → Caso de prueba asignado

Se cambia cada valor en t uno por uno y se genera un conjunto de casos de prueba{t1

t = (*, v2,...,vn),t2t = (v1, *,...,vn),...,tn

t = (v1, v2,...,*)}

* → Valor permitido diferente al valor original en t

Page 28: Functional Testing

Combinatorial Testing (CT)Ejemplo SOFOT

t = ( Netscape, Window s, ISDL, Creative)

Tst = { tt1 = (IE, Windows, ISDL, Creative), tt2 = (Netscape, Linux, ISDL, Creative), tt3 = (Netscape, Windows, Modem, Creative), tt4 = ( Netscape, Windows, ISDL, Digital)}

Page 29: Functional Testing

Combinatorial Testing (CT)Diferentes conjuntos de pruebas de CT tienen un cubrimiento y costo diferente

Tomada de (Nie & Leung, 2011)

Page 30: Functional Testing

Combinatorial Testing (CT)Running example: Pizza Ordering Application

Tomada de (Othman & Zamli, 2011)

Page 31: Functional Testing

Combinatorial Testing (CT)

Tomada de (Othman & Zamli, 2011)

Page 32: Functional Testing

Combinatorial Testing (CT)

Tomada de (Othman & Zamli, 2011)

τ = 4

24 = 16 combinaciones

Combinación Exhaustiva

Page 33: Functional Testing

Combinatorial Testing (CT)

Tomada de (Othman & Zamli, 2011)

Usando τ = 3

18,75% menos que la combinación exhaustiva

Page 34: Functional Testing

Combinatorial Testing (CT)

Usando τ = 2

43,75% menos que la combinación exhaustiva

Tomada de (Othman & Zamli, 2011)

Page 35: Functional Testing

Combinatorial Testing (CT)

Tomada de (Othman & Zamli, 2011)

Variable Strength Interaction Usando τ = 2 Usando τ = 3

18,75% menos que la combinación exhaustiva

Page 36: Functional Testing

Combinatorial Testing (CT)

Cummulative strength Usando τ = 2 Usando τ = 3

12,5% menos que la combinación exhaustiva

Tomada de (Othman & Zamli, 2011)

Page 37: Functional Testing

Combinatorial Testing (CT)

I/O Based Relations Usando f1 = f(A,B,C) Usando f2 = f(A,D)

43,75% menos que la combinación exhaustiva

Tomada de (Othman & Zamli, 2011)

Page 38: Functional Testing

Combinatorial Testing (CT)τ = 2 → Poco efectivo para sistemas con alta interacción de parámetros.Mayor interés en la generación de pruebas τ-way

Estrategias τ - way para la generación de casos de pruebas

-GTWay -IPOG-Jenny - GA y GA-N-AETG -Density

Page 39: Functional Testing

Combinatorial Testing (CT)Estrategias Variable Strength Based para la generación de casos de prueba

-SA-ACS-VS-PSTG

Page 40: Functional Testing

Combinatorial Testing (CT)Estrategias I/O Based Relations para la generación de casos de prueba

-Union and Greedy-Test Vector Generatoro(TVG)-Integrated T-Way Test Data Generator (ITTDG)-Aura-ParaOrder y ReqOrder

Page 41: Functional Testing

Combinatorial Testing (CT)Integrated T-Way Test Data Generator (ITTDG)

Genera un caso de prueba de manera iterativa, añadiendo la mejor combinación del valor de un parámetro (aquella que cubre la mayor cantidad de tuplas sin cubrir) hasta que un caso de prueba esté completo y bien formado.

La iteración continúa hasta que todas las tuplas hayan sido cubiertas (y el conjunto de pruebas ha quedado bien formado).

Page 42: Functional Testing

Combinatorial Testing (CT)Ejemplo: Multiplexor 4-1

Tomada de (Othman & Zamli, 2011)

Page 43: Functional Testing

Combinatorial Testing (CT)Código Java

Mux 4-1

Tomada de (Othman & Zamli, 2011)

En el experimento se va a comparar la efectividad de uniform strength, variable strength e input output based relations para la detección de fallas.

Se inyectan faltas la implementación en Java usando MuJava. Se generan un total de 53 mutantes.

Luego se generan separadamente casos de prueba usando las 3 diferentes estrategias para luego destruir los mutantes usando la implementación de ITTDG.

Page 44: Functional Testing

Combinatorial Testing (CT)Usando un conjunto de pruebas generado por la estrategia Uniform StrengthSe generan 5 conjuntos de pruebas de fuerza uniforme desde τ = 2 hasta τ = 6 (i.e. combinación exhaustiva).

Tomada de (Othman & Zamli, 2011)

Page 45: Functional Testing

Combinatorial Testing (CT)Usando un conjunto de pruebas generado por la estrategia Variable Strength Usando un pairwise testing (i.e. 2-way testing) para todos los parámetros y 3-way testing para los 4 primeros parámetros se eliminan todos los mutantes con solamente 11 casos de prueba.

Tomada de (Othman & Zamli, 2011)

Page 46: Functional Testing

Combinatorial Testing (CT)Usando un conjunto de pruebas generado por la estrategia I/O Relations Based RelationAnalizando el esquema lógico del multiplexor, se puede deducir que hay 5 grupos de entradas que afectan la salida.

Tomada de (Othman & Zamli, 2011)

Page 47: Functional Testing

Combinatorial Testing (CT)Situaciones recomendadas para su usoEn general, cuando la interacción entre parámetros puede generar fallas.

Por estrategia:Uniform Strength Interaction: Cuando no hay mucho conocimiento del SUT.

Variable Strength Interaction: Cuando se sabe que los efectos de algunos conjuntos de parámetros afectan en mayor medida la operación del SUT.

I/O Based relations interaction: Cuando el comportamiento I/O del SUT puede ser establecido.

Page 48: Functional Testing

Equivalence Partitioning Es muy común y ampliamente usada de manera informal.

Consiste en dividir (particionar) un conjunto de condiciones en grupos cuyos elementos se consideran iguales.

Page 49: Functional Testing

Equivalence PartitioningSe evalúa un solo elemento de la partición. Si está correcto, se considera que todos los elementos de la partición lo están. De igual forma en caso contrario.

Page 50: Functional Testing

Equivalence PartitioningEjemplosUna tienda en una ciudad ofrece descuentos de acuerdo al valor de la compra.

Tomado de http://www.softwaretestingmentor.com/test-design-techniques/equivalence-partitioning/

Page 51: Functional Testing

Equivalence PartitioningEjemplos

3 clases de equivalencia

INT_MIN ≤ X+Y≤ INT_MAX, con

X ∈ {INT_MIN,...,INT_MAX} yY ∈ {INT_MIN,...,INT_MAX}

Page 52: Functional Testing

Equivalence PartitioningEjemplos

Tienda de comestibles (http://users.csc.calpoly.

edu/~jdalbey/205/Resources/grocerystore.html)

Page 53: Functional Testing

Equivalence PartitioningSituaciones en las cuales es recomendado su uso

-Software con gran cantidad de datos de entrada, lo cual puede generar grandes casos de prueba.

-Es aplicable en cualquier momento del desarrollo.

Page 54: Functional Testing

Exploratory Testing ETLa ET es aprendizaje simultáneo, diseño de prueba y ejecución de prueba.

En otras palabras, la ET es cualquier prueba en la medida en que el tester controla activamente el diseño de las pruebas, como son llevadas a cabo. Luego usa esa información obtenida durante las pruebas para diseñar nuevas y mejores pruebas

Las ET son un potente enfoque, pero son ampliamente incomprendidas En algunas ocasiones pueden ser mucho más productivas que una prueba con un guión.

Page 55: Functional Testing

Exploratory Testing ETET es una práctica profundamente situacional:EJemplo: Rompecabezas

Características específicas que afectan ET:-Misión de la prueba-Misión de la prueba en particular-El rol del Tester-El tester(habilidades, talentos y preferencias)

Page 56: Functional Testing

Exploratory Testing ETCaracterísticas específicas que afectan ET:

-Herramientas e instalaciones disponibles-Tiempo disponible-Datos y materiales de prueba disponible-Ayuda disponible de otras personas-Cuál es la preocupación de los clientes del tester-Estrategia actual de la prueba-Estado de otros esfuerzos de prueba del mismo producto

Page 57: Functional Testing

Exploratory Testing ETCaracterísticas específicas que afectan ET:

-El producto en sí (interfaz,comportamiento,estado actual de la ejecución, defectos, propósito)-Lo que el tester sabe acerca del producto (que pasó en pruebas anteriores, problemas conocidos, problemas pasados, fortalezas y debilidades, áreas de riesgo y magnitud de riesgo percibido, cambios recientes, cómo se supone debería trabajar, similitudes o diferencias respecto a otros productos)-Lo que al tester le gustaría saber de ese producto

Page 58: Functional Testing

Exploratory Testing ET

Los ET preguntan cuál es la mejor prueba que puedo llevar a cabo en este momento. Las anteriores consideraciones influyen en lo que la prueba necesita.

Estos factores cambian continuamente. Por lo que las ET pueden optimizar todo este proceso, mientras que las secuencias de comandos tienden a ser menos efectivas con el tiempo.

Page 59: Functional Testing

Exploratory Testing ET

Las ET son también conocidas como pruebas ad hoc. Desafortunadamente, ad hoc es muy a menudo relacionado con un trabajo descuidado y negligente.

1990 un grupo llamado Context.Driven school, inició el uso del término exploratorio, para cambiar esta creencia.

Page 60: Functional Testing

Exploratory Testing ETCuando usar ET:

En general, ET es usado en cualquier situación donde no es obvio lo que debe hacer la próxima prueba, o cuando se quiere ir más allá de las pruebas evidentes. Más específicamente las ET encajan en cualquiera de las siguientes situaciones:

-Se necesita rápida retroalimentación sobre un nuevo producto o característica-Se necesita aprender del producto rápidamente-Ya se ha hecho una prueba usando scripts, y se busca diversificar la prueba

Page 61: Functional Testing

Exploratory Testing ETCuando usar ET:

-Se quiere encontrar un simple e importante fallo en un tiempo corto-Se quiere comprobar el trabajo de otro tester haciendo una breve investigación independiente-Se quiere aislar e investigar un defecto particular-Se quiere improvisar en pruebas con un guión-Se quiere escribir nuevos guiones de prueba-Se quiere comprobar el manual de usuario con cada aserción.

Page 62: Functional Testing

Anti-Random TestingEn esta estrategia de prueba, cada prueba aplicada es elegida tal que su distancia total de todas las pruebas previas es máxima.

La selección de cada prueba depende explícitamente de la pruebas ya obtenidas.

Se usan la distancia Hamming y la distancia Cartesiana como medidas de diferencia.

Page 63: Functional Testing

Anti-Random TestingDefiniciones formales usadas para la construcción de secuencias anti-random.

Se asume que todas las variables son binarias.

Anti-random Test Sequence (ATS): Es una secuencia de prueba tal que una prueba ti es elegida, tal que satisface algún criterio respecto a todas las pruebas aplicadas antes t0 ,t1 , … ,ti-1 .

Page 64: Functional Testing

Anti-Random TestingDefinición de distancia: Es una medición de lo diferente que son dos vectores ti y tj.

Definición de distancia Hamming (HD): Es el número de bits en el que dos vectores binarios difieren. No está definido para los vectores que contienen valores continuos.

Definición de distancia Cartesiana (CD): la distancia cartesiana entre dos vectores, A = {aN ,aN-1 , … ,a0} y B = {bN ,bN-1 , … ,b0} es dado por:

Page 65: Functional Testing

Anti-Random Testing

Page 66: Functional Testing

Anti-Random TestingDefinición de distancia total de Hamming (THD): Para cualquier vector es la suma de sus distancias de Hamming con respecto a todos los vectores anteriores.Definición de distancia total Cartesiana (TCD): para cualquier vector es la suma de sus distancias cartesianas con respecto a todo el vector anterior.

Definición de Maximal distance random test sequence (MDATS): Es una secuencia tal que cada prueba ti es elegida para hacer la distancia total entre ti y cada una de t0 ,t1 , … ,ti-1 máximo. Por ejemplo:

Page 67: Functional Testing

Anti-Random Testinges máximo para todas las posibles elecciones de ti . Se usará HD y CD para construir MHDATSs y MCDATSs.

Utilizando criterio de distancia máxima, cada vez que se intenta encontrar un vector de prueba lo más diferente posible de todos los vectores aplicados anteriormente. Así pues, el programa de pruebas de antirandom intenta mantener la prueba lo más eficiente posible.

Page 68: Functional Testing

Anti-Random Testing

En este enfoque estamos utilizando la hipótesis de que si dos vectores de entrada tienen sólo una pequeña distancia entre ellos a continuación, los conjuntos de fallos encontrados por los dos es probable que tenga un número de defectos en común. A la inversa, si la distancia entre dos vectores es grande, entonces el conjunto de fallos detectados por uno es probable que contenga sólo unos pocos de los fallos detectados por el otro.

Page 69: Functional Testing

Anti-Random TestingProcedimiento 1. Construcción de un MHDATS (MCDATS)

Paso 1. Para cada una de las variables de entrada N, asignar un valor elegido arbitrariamente para obtener el primer vector de prueba. Esto no da como resultado ninguna pérdida de generalidad.

Paso 2. Para la obtención de cada nuevo vector, evaluar la THD (TCD) para cada una de las combinaciones restantes con respecto a las combinaciones ya elegidos y elegir uno que da la distancia máxima. Añádelo a el conjunto de vectores seleccionados.

Page 70: Functional Testing

Anti-Random TestingPaso 3. Repita el paso 2 hasta que se hayan utilizado todas las combinaciones, o hasta que se han generado el número deseado de vectores.

Page 71: Functional Testing

Specification based testing● Evalúan tanto el comportamiento esperado

como la funcionalidad.

● Para sistemas criticos.○ Sistemas de trafico aéreo○ Sistemas de diagnostico médico

Page 72: Functional Testing

Specification based testing● La especificación brinda las propiedades

que el programa debe satisfacer.

● La especificación debe hacerse en un lenguaje formal de especificación.

Page 73: Functional Testing

Specification based testing● Dada una particular instancia de entradas

del programa con sus respectivas salidas, se evalúa si el comportamiento del programa cumple la especificación, reemplazando las instancias de las entradas y salidas en las variables de entrada y salida de la especificación respectivamente.

Page 74: Functional Testing

Specification based testingAunque este proceso de evaluación puede variar dependiendo de la especificación, la idea básica detrás del enfoque con que se haga, es considerar un conjunto particular de elementos en la especificación y calcular la proporción de tales elementos que intervienen en la evaluación.

Page 75: Functional Testing

Specification based Testing: Specification

Hay 2 enfoques principales de especificación funcional formal de software:● Especificación basada en modelos.● Especificación orientada a propiedades.

○ Axiomatica○ Algebraica

Page 76: Functional Testing

Specification based testing: Model-Based Specification● Cobertura de especificación basada en

modelos:○ como las escritas en Z y VDM, tienen dos partes:

■ Espacio de estados del software.■ Operaciones requeridas en el espacio.

Page 77: Functional Testing

Specification based testing: Model-Based Specification■ Espacio de estados: conjunto de variables tipadas, con un predicado que describe la propiedad invariante del espacio de estados.

Page 78: Functional Testing

■ Operaciones requeridas en el espacio: son especificadas por un conjunto de predicados:➢ precondiciones: condiciones de las

entradas.➢ Postcondiciones: condiciones de las

salidas.

Specification based testing: Model-Based Specification

Page 79: Functional Testing

● Se evalúa muy similar a como se hace con cualquier expresión condicional en un lenguaje de programación.

● Cuando una variable de entrada y una de salida son reemplazadas con una instancia de datos de entrada y salida, cada predicado atómico puede ser falso o verdadero.

Specification based testing: Model-Based Evaluation

Page 80: Functional Testing

● Cuando una variable de entrada y una de salida son reemplazadas con una instancia de datos de entrada y salida, cada predicado atómico puede ser falso o verdadero.

Specification based testing: Model-Based Evaluation

Page 81: Functional Testing

● Si el resultado de la evaluación de la especificación completa es verdadero, la correctitud del software con esa entrada es confirmada.

● De lo contrario, se encontró un error en el programa.

Specification based testing: Model-Based Evaluation

Page 82: Functional Testing

● El mismo valor de verdad de una especificación, puede ser arrojado por diferentes combinaciones de instancias de entradas y salidas para las variables.

● Se necesita de una prueba adecuada que cubra un subset de combinaciones factibles de predicados.

Specification based testing: Model-Based Evaluation

Page 83: Functional Testing

● Se necesita de una prueba adecuada que cubra un subset de combinaciones factibles de predicados.

Specification based testing: Model-Based Evaluation

Page 84: Functional Testing

Boundary Values AnalysisEl objetivo del análisis de límites es probar si los bordes de un subdominio son correctos.Entiendo subdominio como un conjunto de datos que generan la misma computación del programa.

Page 85: Functional Testing

Boundary Values AnalysisLa dimensión de un espacio de entradas es la cantidad de variables asignadas en la especificación.

Un borde de un subdominio en un espacio K-dimensional es una superficie de dimensión K-1.

Page 86: Functional Testing

Boundary Values AnalysisHay un método de pruebas formulado por Cohen y White llamado Nx1 domain testing, estrategia que requiere N casos de pruebas para ser seleccionados en los límites de un espacio N-Dimensional y un caso de prueba por límite.

Page 87: Functional Testing

Boundary Values Analysis: Nx1 Adequacy criteria

Definición del criterio de adecuación de dominio de Nx1:

Sea {D1,D2,...,Dn} el conjunto de subdominios del software S, que tiene N variables de entrada.Un conjunto de casos de prueba T se dice que es Nx1 adecuado cuando, para cada subdominio Di, y cada Borde B de Di, Existen al menos N casos de prueba, y al menos 1 caso justo al lado de B.

Page 88: Functional Testing

Si el borde esta en el dominio de Di, el caso de prueba del dominio debe ser un punto de prueba OFF, en caso contrario un punto de prueba ON.

Este método apunta a detectar si hay errores de desplazamiento en paralelo, en un borde lineal, donde un criterio de adecuación de NxN puede detectar un desplazamiento en rotación

Boundary Values Analysis: Nx1 Adequacy criteria

Page 89: Functional Testing

Boundary Values Analysis: NxN Adequacy criteria

Definición del criterio de adecuación de dominio de Nx1:

Sea {D1,D2,...,Dn} el conjunto de subdominios del software S, que tiene N variables de entrada.Un conjunto de casos de prueba T se dice que es Nx1 adecuado cuando, para cada subdominio Di, y cada Borde B de Di, Existen al menos N casos de prueba, y al menos N casos linealmente independientes justo al lado de B.

Page 90: Functional Testing

Si el borde esta en el dominio de Di, el caso de prueba del dominio debe ser un punto de prueba OFF, en caso contrario un punto de prueba ON.

Este método apunta a detectar si hay errores de desplazamiento en paralelo, en un borde lineal, donde un criterio de adecuación de NxN puede detectar un desplazamiento en rotación.

Boundary Values Analysis: NxN Adequacy criteria

Page 91: Functional Testing

Es por esto que el criterio selecciona la posición específicas de los Casos de prueba ON y OFF.

Se seleccionan vértices como casos de prueba.

Boundary Values Analysis

Page 92: Functional Testing

Es por esto que el criterio selecciona la posición específicas de los Casos de prueba ON y OFF.

Se seleccionan vértices como casos de prueba y sus puntos cercanos.

Boundary Values Analysis

Page 93: Functional Testing

Sea {D1,D2,...,Dn} el conjunto de subdominios del software S, se dice que un conjunto de casos de prueba T es VxV adecuado si, para cada Di se cumple que T contiene a los vértices de Di, y por cada vértice V de Di hay un caso de prueba justo fuera del vértice v. si el vértice v de Di esta en el dominio Di, entonces el caso de prueba que esta junto a V, debería ser un punto de prueba OFF, en caso contrario ser un punto de prueba ON

Boundary Values Analysis: VxV Domain Adequacy criteria

Page 94: Functional Testing

Este criterio es efectivo para la detección de errores en dominios lineales, entiendo como lineal aquel dominio que sus bordes son funciones lineales.

para dominios no lineales se aplica otro criterio.

Boundary Values Analysis: VxV Domain Adequacy criteria

Page 95: Functional Testing

N+2 Domain Adequacy CriteriaSea {D1,D2,...,Dn} el conjunto de subdominios del software S, que tiene N variables de entrada. Un conjunto de pruebas T se dice que es N+2 Adecuado si, para cada Di, y cada borde B de Di, se cumple que hay al menos N+2 casos de prueba X1,X2,...,Xn+2 en T, tal que:

Page 96: Functional Testing

N+2 Domain Adequacy Criteria● cada conjunto de N+1 pruebas estan en posición

general, donde un conjunto de {xi-> }contiene N+1

vectores en posición general, si los N vectores xi->-x1

->, N+1 son linealmente independientes.

● Hay al menos un punto de prueba On y uno Off.

Page 97: Functional Testing

N+2 Domain Adequacy Criteria● Para cada par de casos de prueba, si los dos son del

mismo tipo, deberìan ir en lados opuestos del hiperplano formado por los otros N puntos de prueba.

Page 98: Functional Testing

Comparación respecto a otras familiasExperimentación: Equivalence Partitioning vs. Branch Testing vs. Code Reading. (Juristo et al., 2012)El experimento se replicó varias veces en distintos lugares:

-5 veces en la Universidad Politécnica de Madrid (UPM01, UPM02, UMP03, UPM04, UPM05).-Universidad de Sevilla (UdS05)-Universidad Politécnica de Valencia (UPV05)-Universidad ORT de Uruguay (ORT05)

Page 99: Functional Testing

Comparación respecto a otras familiasEl experimento usó tres programas escritos en C:

-cmdline: 209 LOC y complejidad ciclomática de 61-nametbl: 172 LOC y complejidad ciclomática de 29-ntree: 146 LOC y complejidad ciclomática de 21.

Page 100: Functional Testing

Comparación respecto a otras familias

Ninguna de las técnicas alcanzó el 100% de la efectividad.

Media EP = 79.26%Media BT = 78.43%Media CR = 47.23%

Tomada de (Juristo et al., 2012)

Page 101: Functional Testing

Comparación respecto a otras familias

Tomada de (Juristo et al., 2012)

Efectividad de la técnica por programa

Page 102: Functional Testing

Posibles ambientes● Combinatorial Testing

○ CTE XL ○ CTE XL Professional (Kruse et al., 2013)

● Equivalence Partitioning○ Equivalence Partition Organizer (http://sourceforge.

net/projects/equivalencepart/)

Page 103: Functional Testing

Posibles ambientes● Specification-Based testing

○ Choc’late

Page 104: Functional Testing

Referencias● Nie Changhai, Leung Hareton. 2011. A Survey of Combinatorial Testing. ACM Computing

Surveys.● Peter M. Kruse, Nelly Condori-Fernández, Tanja Vos, Alessandra Bagnato, Etienne Brosse,

(2013). Combinatorial Testing Tool Learnability in an Industrial Environment. ACM.● Patrick J. Schroeder, Pankaj Bolaki, Vijayram Gopu, (2004). Comparing the Fault Detection

Effectiveness of N-way and Random Test Suites. ISESE’04.● Kuhn, D. R. and Reilly, M. J. 2002. An investigation of the applicability of design of experiments

to software testing. In Proceedings of the 27th Annual NASA Goddard Software Engineering Workshop (SEW’02).IEEE Computer Society, Los Alamitos, CA, 91.

● Kuhn, D. R. and Wallace, D. R. 2004. Software fault interactions and implications for software testing. IEEE Trans. Softw. Engin. 30, 6, 418–421.

● Othman, R. and Zamli K. 2011. T-Way Strategies and Its Applications for Combinatorial Testing. IJNCAA.

● Juristo N., Vegas S., Solari M., Abrahao S., Ramos I. 2012. Comparing the Effectiveness of Equivalence Partitioning, Branch Testing, and Code Reading by Stepwise Abstraction Applied by Subjects. IEEE Fifth International Conference on Software Testing, V&V.

Page 105: Functional Testing

ReferenciasH. Zhu, P.A.V. Hall, and J.H.R. May, “Software Unit Test Coverage and Adequacy,” ACM Computing Surveys, vol. 29, iss. 4, Dec. 1997.Guide to the Software Engineering Body of Knowledge (SWEBOK),IEEE Computer Society, v3.

Page 106: Functional Testing

Preguntas1. ¿Cuál tipo de testing es un caso especial del Variable Strength Interaction Testing?2. Con t = (Windows, Ethernet, Firefox) y V1= {Windows, Linux}, V2 = {Ethernet, Wifi}, {Firefox,

Chrome}. Genere los casos de prueba usando OFOT(One Factor One Time) y SOFOT(Simplified One Factor One Time).

3. ¿Cuándo se recomienda usar el Uniform Strength Interaction? ¿Cuándo el Variable Strength Interaction? ¿Cuándo el I/O based relations Interaction? Responda solamente dos.

4. ¿Qué es una prueba exploratoria?5. ¿Cuando se usa una prueba exploratoria, diga 2 razones?6. ¿Qué es una prueba Anti-Random?7. ¿Que precondición se tiene que cumplir para poder hacer Specification-Based Testing?8. ¿Cual es la dimensión del espacio de entradas?9. ¿cuando se dice que dos entradas estan en el mismo subdominio?