Casos de prueba con JUnit

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

PRACTICO N° 6 GRAFOS año: 2012.
Estructuras de datos y algoritmos
Utilización de un TAD Arbol.
Curso de Java Estructura del Lenguaje
INFORMATICA I Funciones CLASE 13.
Tema 5 Grafos. Implementación (I)..
Árboles binarios. Algoritmos básicos
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
Tema 4 Árboles. Árbol sobre matriz.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Método en Java.
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Colecciones.
USA agenda e itemAgenda
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
ÁRBOLES BINARIOS DE BÚSQUEDA
Métricas del Software Medidas o conjunto de éstas que nos permite conocer o estimar el tamaño u otra característica sobre un producto de software.Objetivo:
3.  Recursividad.
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
Computación II Repaso de java Karina Figueroa Mora.
Algoritmos y programación III (75.07)
Árboles Binarios Estructuras de Datos.
LISTA DOBLEMENTE ENLAZADA
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
TABLAS DE DISPERSIÓN (HASH). TABLAS ENCADENADAS INDIRECTAS.
Grafos..
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
Departamento de Lenguajes y Sistemas Informáticos escuela técnica superior de ingeniería informática Ingeniería del Software II Implementación metódica.
Tema 2 : Java Básico Clase Práctica 4a(Conferencia 3)
BUSQUEDAS BINARIAS Y SECUENCIALES Hernández Salazar Alma Pérez González Luis Alberto Villa Méndez Edgar Adrián Villegas Titla Jorge Ramsés Ríos Álvarez.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Diseño y Programación Orientada a Objetos
Diseño y Programación Orientada a Objetos
Colecciones Carlos Fontela, 2008.
Diseño y Programación Orientada a Objetos
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Diseño y Programación Orientada a Objetos
LISTAS..
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Diseño y Programación Orientada a Objetos
Searching data in Arrays
Estructuras de datos y algoritmos
Listas Dinámicas.
Teclado y Pantalla (Java estándar)
Programación Gráfica 5. Introducción a C++..
clase3: instrucción if-else
Aplicaciones de RECURSIVIDAD
Criterios cobertura de grafos: código fuente
Árboles Binarios Estructuras de Datos.
Programación Orientada a Objetos
Clase 10 (Repaso/Resumen)
Leyendo strings de la línea de comandos
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Transcripción de la presentación:

Casos de prueba con JUnit Grafos de flujo Obtención de los casos de prueba

public static int compareInt(int v1, int v2) { if (v1 == v2) return 0; else if (v1 > v2) return 1; return -1; } public class SearchValues { public static int BinarySearch (ArrayList v, int x) { int izq, der, medio = 0; boolean encontrado; izq = 0; encontrado = false; der = v.size(); while ((izq <= der) && !encontrado) { medio = (izq + der) / 2; int i = ((Integer)v.get(medio)).intValue(); if (SearchValues.compareInt(i, x) == 0) encontrado = true; else if ((SearchValues.compareInt(i, x) > 0)) der = medio - 1; izq = medio + 1; } if (encontrado) return medio; return 0;

public class SearchValues { public static int BinarySearch (ArrayList v, int x) { int izq, der, medio = 0; boolean encontrado; izq = 0; encontrado = false; der = v.size(); while ((izq <= der) && !encontrado) { medio = (izq + der) / 2; int i = ((Integer)v.get(medio)).intValue(); if (SearchValues.compareInt(i, x) == 0) encontrado = true; else if ((SearchValues.compareInt(i, x) > 0)) der = medio - 1; izq = medio + 1; } if (encontrado) return medio; return 0; 1 3 2 4 5 6 7 8 9 10 11 12 13 14 15 16

Existen 5 Caminos básicos Grafo de flujo Complejidad ciclomática 1 R5 19 Aristas – 16 Nodos + 2 => 5 4 Nodos predicado + 1 => 5 5 Regiones => 5 2 R4 4 3 14 Existen 5 Caminos básicos 5 15 16 6 Camino 1: 1-2-3-4-5-6-7-8-9-2 Camino 2: 1-2-3-4-5-6-7-8-10-11-12-2 Camino 3: 1-2-3-4-5-6-7-8-10-11-13-2 Camino 4: 1-2-14-15 Camino 5: 1-2-14-16 7 8 R1 R3 9 10 11 R2 12 13

Modificación para la prueba del camino básico public int PathTest(ArrayList v, int valueToFind, int izqValue, int derValue) { int izq, der, medio = -1; boolean encontrado; izq = izqValue; //0; der = derValue; //v.size(); encontrado = false; // -----> 1 while ((izq <= der) && !encontrado) { // -----> 2 y 3 medio = (izq + der) / 2; // -----> 4 Integer integer = (Integer)v.get(medio); // -----> 5 int intValue = integer.intValue(); // -----> 6 int compareResult = SearchValues.compareInt(intValue, valueToFind); // -----> 7 if (compareResult == 0) // -----> 8 encontrado = true; // -----> 9 else { compareResult = SearchValues.compareInt(intValue, valueToFind); // -----> 10 if (compareResult > 0) // -----> 11 der = medio - 1; // -----> 12 else izq = medio + 1; // -----> 13 } if (encontrado) // -----> 14 return medio; // -----> 15 return -1; // -----> 16

Métodos de las pruebas a realizar (1) public void BasicPathTest() { ArrayList list = new ArrayList(); list.add(2); list.add(4); list.add(8); list.add(9); list.add(12); list.add(20); list.add(21); list.add(22); list.add(30); list.add(40); assertEquals(PathTest(list, 2, 0, 1, false), 0); // Camino 1 y 4 assertEquals(PathTest(list, 4, 0, 2, false), 1); // Camino 2 y 4 assertEquals(PathTest(list, 2, 0, 3, false), 0); // Camino 3 y 4 assertNotSame(PathTest(list, 2, 0, 1, false), -1); // Camino 1 y 5 assertNotSame(PathTest(list, 4, 0, 2, false), -1); // Camino 2 y 5 assertNotSame(PathTest(list, 2, 0, 3, false), -1); // Camino 3 y 5 } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new TestSearchValues("BasicPathTest")); return suite; }

Métodos de las pruebas a realizar (2) public void testCompareInt() { assertEquals(SearchValues.compareInt(4, 9), -1); assertEquals(SearchValues.compareInt(9, 4), 1); assertEquals(SearchValues.compareInt(9, 9), 0); } public void testBinarySearch() { ArrayList list = new ArrayList(); list.add(2); list.add(4); list.add(8); list.add(9); list.add(12); list.add(20); assertEquals(“Indice no coincide con el esperado", SearchValues.BinarySearch(list, 8), 2); assertEquals("Elemento no existe, debe devolver -1", SearchValues.BinarySearch(list, 14), -1); try { SearchValues.BinarySearch(null, 8); } catch (NullPointerException e) { fail("Excepción de lista nula que no se ha tratado"); list.add(17); list.add(-1); list.add(7); list.add(17); list.add(23); list.add(14); assertEquals("La lista no está ordenada", SearchValues.BinarySearch(list, -1), 0);