Criterios cobertura de grafos: introducción

Slides:



Advertisements
Presentaciones similares
Curso de programación Visual Chart 6 (1ªEd.) ENTRADAS LIMITADAS.
Advertisements

INTRODUCCIÓN DEL LENGUAJE DE PROGRAMACIÓN SCRATCH Elaborado por: Elvia R. De Gracia C.
Teoría de la computación DECIBILIDAD Equipo 4 Karla Flores Samuel rojas Filiberto Jiménez.
PROGRAMACIÓN I CENTRO DE ESTUDIOS INTEGRADOS EL MARISCAL - CEIM Ing. Luisa Fernanda Arenas Castañeda Feb 6 de 2016.
Un grafo consta de un conjunto de vértices y un conjunto de aristas. Cada arista de un grafo se especifica mediante un par de vértices. Denotemos al conjunto.
1 PROBABILIDAD. 2 3 Deterministas Si se repiten en las mismas condiciones se puede conocer el resultado. Dejar caer un objeto desde cierta altura y.
MODELO ADDIE Módulo 2. 1.Fundamentos teóricos ADDIE Análisis Diseño Desarrollo Implementación Evaluación Prototipación rápida 2.Actividad de clase.
Cuando el número de posibles resultados de un experimento es finito, su espacio muestral es finito y su cardinal es un número natural. Si el experimento.
LA INNOVACIÓN. ANALISIS DE NECESIDADES Una idea innovadora es frecuentemente el punto de partida para un nuevo proyecto. Pero desde ahí a su materialización.
1 LENGUAJES DE PROGRAMACIÓN. Son aplicaciones específicas diseñadas para crear otras aplicaciones o programas. Son programas para crear programas. 2.
Curso Sygma. Grafos Universidad San Buenaventura Cali.
Estructuras de Control en Visual Basic.net
Estructuras de Control.
Actividad #2 Los algoritmos
. Primera Open Class Asignatura: Programación Estructurada Tema:
Tema 4: Ingeniería del Software
Ciclos condicionales y exactos Estructura de control de ciclos
Artículos Definición de grupos de artículos
Centro de Estudios de Justicia de las Américas
SAP Business One, Versión 9.0
Conceptos básicos de programación
2.Metodología de Solución de Problemas
Fundamentos de programación
Estructuras de Control en Visual Basic.net
TAD’s ARBOLES GENERALIZADOS
Bucles y estructuras de decisión
Algoritmo Conjunto ordenado y finito de pasos que permite hallar la solución de un problema. Una secuencia de pasos que conducen a la realización de una.
ALGORTIMO Y PROGRAMA REDES PETRI
Infografía. Estructura de Datos.
Toribio Sarmiento Miguel Sesarego Cruz Rosmery
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
NORMALIZACION MsC (c) Esp. Alexis Ovany Torres Ch.
Método de Verificación
Análisis de redes Por: Alexander Miss.
TAREA DEFINICIONES: Software: Equipamiento lógico o soporte lógico de una computadora digital; comprende el conjunto de los componentes lógicos necesarios.
Diagramas del modelo uml
Especificación de requerimientos por: Sonia Cristina Gamboa Sarmiento
Estructuras de control en PHP
Justificación y Delimitación
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
INSTITUTO TECNOLÓGICO DE LA CHONTALPA MATERIA FORMULACIÓN Y EVALUACIÓN DE PROYECTOS ALUMNOS CRISTELL GUADALUPE CERINO LANDERO JAVIER RAUL NISHIMURA GARCIA.
Java – programación orientada a objetos programación ii – iee
Testing basado en sintaxis: Introducción
Criterios cobertura de grafos: código fuente
Automatización del testing
5. Optimización de redes. Integrantes: * Christian Cota * Cesar Rojo
Metodología de la Programación
Criterios cobertura de grafos: casos de uso
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
PROYECTO INFORMÁTICO ¿QUÉ ES UN PROYECTO INFORMÁTICO?
Requisitos Ing. Maribel Valenzuela Beltrán 1.
Partición del espacio de inputs (PEI)
Diseño de tests basado en criterios
Criterios cobertura de grafos: especificaciones
Manuel Núñez Especificación, Validación y Testing
Bucles y estructuras de decisión
Testing basado en sintaxis: Gramáticas a partir de programas
Clase Nº 1 Concepto de Probabilidad
Quadratic Assignment Problem
ANGULO YOMAIRA QUINTERO MARIA PAEZ MARIAM
Técnicas de Análisis de las Redes de Petri
Tema 2 N Ú M E R O S R E A L E S.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
Estructuras de Control
CC 1002: Introducción a la Programación Clase 19
Diagrama de componentes
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Tema 8. Estructuras de decisión. Clases 1 y 2.
Clase Nº 1 Concepto de Probabilidad
Macros EN EXCEL.
Transcripción de la presentación:

Criterios cobertura de grafos: introducción 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 (2nd Edition)

Cuatro estructuras para modelar software Grafos Lógica Espacio de Inputs Syntaxis Casos de uso Especs Diseño Código Aplicado a FND Especs FSMs Código Aplicado a Input Modelos Integra Código Aplicado a Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Recorriendo Grafos Los grafos son la estructura más utilizada para realizar testing. Los grafos pueden provenir de muchos sitios. Grafos para control de flujo. Estructuras de diseño. FSMs y statecharts. Casos de uso. Los tests, usualmente, deben “cubrir” el grafo en un cierto sentido. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Definición de grafo Un conjunto no vacío de nodos N. Un conjunto no vacío de nodos iniciales N0. Un conjunto no vacío de nodos finales Nf . Un conjunto de aristas E. Cada aristas es un par de nodos. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Ejemplos de grafo 1 3 2 4 10 1 5 4 8 2 6 9 3 7 1 3 2 4 Grafo no válido N0 = { 1, 2, 3 } Nf = { 8, 9, 10 } E = { (1,4), (1,5), (2,5), (3,6), (3, 7), (4, 8), (5,8), (5,9), (6,9), (6,10), (7,10) (9,6) } N0 = { } Nf = { 4 } E = { (1,2), (1,3), (2,4), (3,4) } N0 = {1} Nf = {4} E = { (1,2), (1,3), (2,4), (3,4) } Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Caminos en grafos Camino: Secuencia de nodos [n1, n2, …, nM] tal que cada par de nodos consecutivos es una arista. Longitud: Número de nodos – 1. Subcamino: Una subsecuencia de un camino 10 1 5 4 8 2 6 9 3 7 Algunos caminos [ 1, 4, 8 ] [ 2, 5, 9, 6, 2 ] [ 3, 7, 10 ] Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Caminos de test y SESEs Camino de test: Camino que empieza en un nodo inicial y termina en un nodo final. Los caminos de test representan la ejecución de tests: Algunos caminos de test pueden ser ejecutados por muchos tests. Algunos caminos de test no se pueden ejecutar por ningún test. Grafos SESE (Single Entry, Single Exit): Solo un nodo inicial y un nodo final. Grafo doble-diamante Cuatro caminos de test [1, 2, 4, 5, 7] [1, 2, 4, 6, 7] [1, 3, 4, 5, 7] [1, 3, 4, 6, 7] 1 3 2 7 4 6 5 Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Visita y recorrido Visita Un camino de test p visita un nodo n si n está en p. Un camino de test p visita una arista e si e está en p. Recorre Un camino de test p recorre un subcamino q si q es un subcamino de p. Camino [ 1, 2, 4, 5, 7 ] Visita nodos 1, 2, 4, 5, 7 Visita aristas (1, 2), (2, 4), (4, 5), (5, 7) Recorre subcaminos [1, 2, 4], [2, 4, 5], [4, 5, 7], [1, 2, 4, 5], [2, 4, 5, 7], [1, 2, 4, 5, 7] 1 3 2 7 4 6 5 Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tests y caminos de tests Path(t): EL camino de test ejecutado por el test t. Path(T): El conjunto de caminos de test ejecutados por el conjunto de tests T. Cada test ejecuta un camino de test (y solamente uno). Una localización de un grafo (nodo o arista) se puede alcanzar desde otra localización si existe una secuencia de aristas desde la primera localización a la segunda. Distinguimos: Alcance sintáctico: Existe un subcamino en el grafo. Alcance semántico: Existe un test que puede ejecutar el subcamino. Al final de este tema se podrá ver la importancia de esta distinción. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tests y caminos de tests many-to-one Camino de test Software determinista: los test siempre ejecutan el mismo camino de test test 2 test 3 Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tests y caminos de tests Camino de test 1 many-to-many test 1 Camino de test 2 test 2 test 3 Camino de test 3 Software no-determinista: El mismo test puede ejecutar distintos caminos de test Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Testing y cobertura de grafos Utilizamos grafos en testing de la siguiente manera: Desarrollamos un modelo del software en forma de grafo. Requerimos que los tests visiten/recorran conjuntos específicos de nodos, aristas y subcaminos. Requisitos de test: Describen propiedades de los caminos de test. Criterio de test: Reglas que definen los requisitos. Satisfacción: Dado un conjunto de requisitos de test para un criterio C, un conjunto de tests T satisface C en un grafo sii para todo requisito del conjunto, existe un camino de test en path(T) que cumpla el requisito. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Testing y cobertura de grafos Podemos distinguir dos grandes grupos de criterios para cobertura de grafos. Criterios de cobertura estructurales: Se definen sobre un grafo en base a sus nodos y aristas. Criterios de cobertura sobre flujo de datos: Requieren un grafo anotado con referencias a variables. No lo vamos a ver en este curso. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura de nodos y aristas Los dos primeros criterios que vamos a ver requieren, simplemente, que se ejecute cada nodo y cada arista. Node Coverage (NC): El conjunto de tests T satisface NC en el grafo G sii para cada nodo sintácticamente alcanzable existe un camino p en path(T) tal que p lo visita. Esta formulación es un tanto enrevesada, así que la simplificaremos usando requisitos de test. Node Coverage (NC): RT incluye todos los nodos alcanzables de G. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura de nodos y aristas Cobertura de aristas es algo más exigente Edge Coverage (EC): RT incluye cada camino de longitud a lo sumo 1 incluído en G. La cláusula “a lo sumo 1” permite grafos con un nodo y sin aristas. NC y EC difieren solamente cuando existen dos nodos que están unidos por una arista y por otro subcamino (típicamente, esto ocurre en instrucciones “if sin else”). 2 3 1 NC: RT = { 1, 2, 3 } Test Path = [ 1, 2, 3 ] EC: RT = { (1, 2), (1, 3), (2, 3) } Test Paths = [ 1, 2, 3 ] [ 1, 3 ] Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura de varios nodos Edge-Pair Coverage (EPC): RT incluye cada camino de longitud a lo sumo 2 incluido en G. La cláusula “a lo sumo 2” permite grafos con menos de dos aristas. 2 3 5 6 1 4 EPC: RT = { [1,4,5], [1,4,6], [2,4,5], [2,4,6], [3,4,5], [3,4,6] } Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura de varios nodos La extensión natural consiste en considerar todos los caminos. Complete Path Coverage (CPC): RT incluye todos los caminos de G. Desgraciadamente, este criterio es imposible de llevar a cabo si el grafo tiene un bucle. Una versión más débil permite al testeador elegir caminos. Specificied Path Coverage (SPC): RT incluye todos los caminos de test de un cierto conjunto S. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura estructural: Ejemplo Node Coverage RT = { 1, 2, 3, 4, 5, 6, 7 } Caminos de test: [ 1, 2, 3, 4, 7 ] [ 1, 2, 3, 5, 6, 5, 7 ] 1 Edge Coverage RT = { (1,2), (1, 3), (2, 3), (3, 4), (3, 5), (4, 7), (5, 6), (5, 7), (6, 5) } Caminos de test : [ 1, 2, 3, 4, 7 ] [1, 3, 5, 6, 5, 7 ] 2 3 Edge-Pair Coverage RT = {[1,2,3], [1,3,4], [1,3,5], [2,3,4], [2,3,5], [3,4,7], [3,5,6], [3,5,7], [5,6,5], [6,5,6], [6,5,7] } Caminos de test : [ 1, 2, 3, 4, 7 ] [ 1, 2, 3, 5, 7 ] [ 1, 3, 4, 7 ] [ 1, 3, 5, 6, 5, 6, 5, 7 ] 4 5 6 Complete Path Coverage Caminos de test : [ 1, 2, 3, 4, 7 ] [ 1, 2, 3, 5, 7 ] [ 1, 2, 3, 5, 6, 5, 6 ] [ 1, 2, 3, 5, 6, 5, 6, 5, 7 ] [ 1, 2, 3, 5, 6, 5, 6, 5, 6, 5, 7 ] … 7 Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tratando con bucles en grafos Si un grafo tiene un bucle entonces tiene un número infinito de caminos. Por tanto, CPC no se puede realizar. Por otro lado, SPC no es satisfactoria porque no es objetiva y los resultados pueden variar para cada testeador. Intentos de “tratar” los bucles: 1970s: Ejecutar los bucles una vez (informal). 1980s: Ejecutar cada bucle exactamente una vez (formalizado). 1990s: Ejecutar los bucles 0, 1 y más de una veces (descripción informal). 2000s: Caminos primarios (touring, sidetrips, detours). Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Caminos simples y primarios Camino simple: Un camino donde no se repiten nodos (salvo, posiblemente, el último). Por ejemplo, una vuelta de bucle es un camino simple (pero no se permiten bucles internos). Camino primario: Un camino simple que no es un subcamino propio de otro camino simple. 2 3 1 4 Caminos simples : [1,2,4,1], [1,3,4,1], [2,4,1,2], [2,4,1,3], [3,4,1,2], [3,4,1,3], [4,1,2,4], [4,1,3,4], [1,2,4], [1,3,4], [2,4,1], [3,4,1], [4,1,2], [4,1,3], [1,2], [1,3], [2,4], [3,4], [4,1], [1], [2], [3], [4] Caminos primarios : [2,4,1,2], [2,4,1,3], [1,3,4,1], [1,2,4,1], [3,4,1,2], [4,1,3,4], [4,1,2,4], [3,4,1,3] Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Cobertura de caminos primarios Un criterio simple, elegante y finito que requiere tanto que los bucles se ejecuten como que se salten. Recorrerá todos los caminos de longitud 0, 1, … Por tanto, subsume cobertura de nodos y de aristas. PPC casi, pero no completamente, subsume EPC… Prime Path Coverage (PPC): RT incluye todos los caminos primarios de G. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) PPC no subsume EPC Si un nodo n tiene una arista hacia si mismo (bucle), EPC requiere [n, n, m] y [m, n, n] pero ninguno de los dos es simple (y por tanto no es primario). 2 3 1 Requisitos EPC : { [1,2,3], [1,2,2], [2,2,3], [2,2,2] } Requisitos PPC: { [1,2,3], [2,2] } Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Caminos primarios: ejemplo * significa camino cicla Caminos primarios: ejemplo ! significa camino termina Veamos caminos simples Lon 1 [1, 2] [1, 3] [2, 3] [3, 4] [3, 5] [4, 7] ! [5, 7] ! [5, 6] [6, 5] Lon 2 [1, 2, 3] [1, 3, 4] [1, 3, 5] [2, 3, 4] [2, 3, 5] [3, 4, 7] ! [3, 5, 7] ! [3, 5, 6] ! [5, 6, 5] * [6, 5, 7] ! [6, 5, 6] * Lon 0 [1] [2] [3] [4] [5] [6] [7] ! Lon 3 [1, 2, 3, 4] [1, 2, 3, 5] [1, 3, 4, 7] ! [1, 3, 5, 7] ! [1, 3, 5, 6] ! [2, 3, 4, 7] ! [2, 3, 5, 6] ! [2, 3, 5, 7] ! 6 1 3 2 4 5 7 Caminos Primarios Lon 4 [1, 2, 3, 4, 7] ! [1, 2, 3, 5, 7] ! [1, 2, 3, 5, 6] ! Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Caminos primarios: ejemplo 6 1 3 2 4 5 7 Caminos Primarios [1, 2, 3, 4, 7] [1, 2, 3, 5, 7] [1, 2, 3, 5, 6] [1, 3, 4, 7] [1, 3, 5, 7] [1, 3, 5, 6] [6, 5, 7] [6, 5, 6] [5, 6, 5] Ejecuta bucle 0 veces Ejecuta bucle una vez Ejecuta bucle más de una vez Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tours, sidetrips, detours Los caminos primarios no tienen bucles internos pero los caminos de test podrían tenerlos. Tour: Un camino de test p recorre (tours) un subcamino q si q es un subcamino de p. Tour con sidetrips (viaje opcional): Un camino de test p recorre un subcamino q con viajes opcionales sii cada arista de q está también en p y en el mismo orden. La idea es que un tour puede incluir un sidetrip siempre que se vuelva al mismo nodo. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Tours, sidetrips, detours Los caminos primarios no tienen bucles internos pero los caminos de test podrían tenerlos. Tour con detours (desvíos): Un camino de test p recorre un subcamino q con desvíos sii cada nodo de q está también en p y en el mismo orden. La idea es que un tour puede incluir un detour a partir de un nodo siempre que se vuelva al camino primario de un sucesor de dicho nodo . Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Ejemplo 1 2 3 4 1 3 2 6 4 5 Tour del camino primario [1, 2, 3, 5, 6] sin sidetrips ni detours 1 2 5 6 1 3 2 6 4 5 Tour con un sidetrip 3 4 1 2 5 1 3 2 6 4 5 Tour con un detour 3 4 Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Requisitos de test imposibles Hay requisitos de test que no se pueden satisfacer. Por ejemplo: Código muerto. Subcamino que solo se ejecuta con una contradicción (x>0 && x<0). La mayoría de los criterios de test cuenta con requisitos de test imposibles. Usualmente es indecidible saber si los requisitos son posibles. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Requisitos de test imposibles Si no se permiten los viajes opcionales entonces los criterios estructurales suelen tener más requisitos de test imposibles. Por otro lado, si permitimos siempre los viajes opcionales entonces se debilitan los criterios de test. Por tanto, un compromiso entre estas situaciones es (Best Effort Touring): Satisfacer tantos requisitos de test como sea posible sin usar viajes opcionales. Permitir viajes opcionales para el resto de requisitos. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Recorridos circulares Camino circular: Un camino primario que empieza y acaba en el mismo nodo. Estos criterios omiten los nodos y aristas que no aparezcan en caminos circulares. Por tanto, no subsumen cobertura de aristas, pares de aristas o nodos. Simple Round Trip Coverage (SRTC): RT incluye al menos un camino circular para cada nodo alcanzable de G que empiece y acabe un camino circular. Complete Round Trip Coverage (CRTC): RT incluye todos los caminos circulares de cada nodo alcanzable de G. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Criterios de cobertura de grafos: subsunción Simple Round Trip Coverage SRTC Node Coverage NC Edge Coverage EC Edge-Pair Coverage EPC Prime Path Coverage PPC Complete Path Coverage CPC Complete Round Trip Coverage CRTC Especificación, Validación y Testing (M. G. Merayo y M. Núñez)

Especificación, Validación y Testing (M. G. Merayo y M. Núñez) Conclusiones Los grafos son una abstracción muy potente para diseñar tests. Los distintos criterios permiten compromisos entre coste y beneficio. Hasta ahora solo hemos visto los grafos en el nivel de abstracción de diseño. Veremos mas adelante que los grafos aparecen en otras muchas situaciones a la hora de desarrollar software. Especificación, Validación y Testing (M. G. Merayo y M. Núñez)