Pruebas. Una introducción práctica. Javier Gutiérrez sirve de algo? Ariane segundos después explotó.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Pruebas. Una introducción práctica. Javier Gutiérrez sirve de algo? Ariane segundos después explotó."

Transcripción

1 Pruebas Una introducción práctica. Javier Gutiérrez Probar sirve de algo? Ariane 5. Lanzado por primera vez el 4 de junio de Ariane segundos después explotó. Motivo: Fallo software. La programación no se había probado lo suficiente. 1

2 y qué es una prueba?. Verificación dinámica del comportamiento del software a partir de un conjunto finito de casos de prueba. y esto qué significa?. Para probar un programa tenemos que ejecutarlo. Verificación dinámica del comportamiento del software a partir de un conjunto finito de casos de prueba. La prueba tiene un límite. No vale ejecutar el programa de cualquier manera. 2

3 y qué es un caso de prueba?. Valores de entrada. Probar es ejecutar un programa con unos cuantos casos de prueba. Acciones. Resultado esperado. Ejemplos de casos de prueba Funciona el teléfono?. Valores de prueba Acciones 1. Descolgar auricular. 2. Marcar número de Pepote. 3. Esperar contestación. Resultado esperado (Pepote): Digameee Digameee. Me está bien esta camisa? Valores de prueba Mi cuerpo. Acciones 1. Ponerme la camisa. 2. Abrochármela. 3. Moverme un poco. 4. Mirarme al espejo. Cuidado con la etiqueta o con arrugarla por si hay que devolverla Resultado esperado Elegancia y confort. 3

4 Un ejemplo public int suma(int a, int b) { return a + b; Qué casos de prueba podemos escribir?. Valores de prueba??? Acciones Resultado esperado??? Los casos de prueba son finitos (y cuantos menos, mejor). Un ejemplo public int suma(int a, int b) { return a + b; Qué casos de prueba podemos escribir?. Valores de prueba 0, 0 0, b = no 0 3, 4-2, -8-3, 6 Integer.MAX_ VALUE,, 6 Acciones Resultado esperado 0 b Y algunas permutaciones más. 4

5 Por qué he elegido esos casos de prueba?. 5 valores = 25 casos de prueba. Otro ejemplo I. public static void Intercambia(List l1, List l2) { Object b1=null; Object aux=null; Collections.sort(l1); Collections.sort(l2); ListIterator i1=l1.listiterator(); while (i1.hasnext()) { b1=i1.next(); int pos=collections.binarysearch(l2,b1); 1 if (pos<0) { if (i1.hasnext()){ aux=i1.next(); if (b1.equals(aux)) { 2 i1.remove(); l2.add(b1); Collections.sort(l2); Quita un elemento de la lista l1 y lo pone en la lista l2 si: 1. No está en l2. 2. Está repetido en l1. Entrada: l1 = {3, 4, 1, 2, 3, 1 l2 = {3, 4, 2, 6, 4 Salida: l1 = {1, 2, 3, 3 4 l2 = {1, 2, 3, 4, 4, 6 Veamos algunos casos De prueba. 5

6 Otro ejemplo II. Valores de prueba l1 = null o l2 = null l1 = { y l2 = * l1 = {1, 2, 3 y l2 = {4, 5, 6 l1 = {1, 3, 2, 3 y l2 = {4, 5, 6 l1 = {1, 3, 2, 3, 1, 2 l2 = {1, 2, 3, 4, 5, 6 Acciones Intercambia(l1, l2) Resultado esperado Falla!!! (Null PointerException) L2 ordenada l1 = {1, 2, 3 y l2 = {4, 5, 6 l1 = {1, 2, 3 y l2 = {3, 4, 5, 6 l1 = {1, 1, 2, 2, 3, 3 l2 = {1, 2, 3, 4, 5, 6 * Significa una lista con cualesquiera valores. Estos casos de prueba (y sus permutaciones) garantizan que el método funciona bien en cualquier circunstancia? Otro ejemplo III. Valores de prueba l1 = {1, 2, 2, 3 y l2 = {4, 5, 6 l1 = {1, 1, 2, 3, 3 y l2 = {4, 5, 6 l1 = Un valor repetido 3 veces l2 = * Acciones Intercambia(l1, l2) Resultado esperado Falla!!! l1 = {1, 2, 2, 3 y l2 = {4, 5, 6 Falla!!! l1 = {1, 2, 3, 3 y l2 = {1, 4, 5, 6 Falla!!! El valor aparece repetido en l1. * Significa una lista con cualesquiera valores. 6

7 En conclusión Probar es ejecutar casos de prueba. Caso de prueba: entrada + acciones + salida salida obtenida == salida esperada salida obtenida!= salida esperada Un programa que pasa todos sus casos de prueba es un programa sin errores?. JUnit I. Open Source framework for the automation of unit tests under Java. Existen muchas versiones para distintos lenguajes. Su API es nuestro mapa de carreteras. 7

8 IDEs: JDeveloper Eclipse Forte / Netbeans Intelli J JBuilder TogetherJ VisualAge JUnit II. JUnit III. Nuestra primera prueba Vamos a probar nuestra función suma import junit.framework.*; public class TestSuma extends TestCase { // Atributos // Pruebas public void testsumapositivos() { int r = Suma.Suma(3, 4); assertequals( Suma de 3 y 4 no es 7", r, 7 ); Los imports no se nos pueden olvidar. Cada clase guarda un conjunto de pruebas relacionadas. Las clases deben heredar de TestCase. Los atributos serán la información a compartir por las distintas pruebas. Cada método que empieze por void test es una prueba. Los métodos assertx() permiten evaluar si la prueba se pasa o no. 8

9 JUnit IV. Más cosas. Inicio y fin de la prueba. protected void setuup(){ // Me conecto a una BBDD protected void teardown(){ //Me desconecto de la BBDD Métodos assertx() void assertequals() void assertnull() void assertnotnull() Void asserttrue() JUnit V. Nuestra segunda prueba. T.A.D. Lista (Lista.java) // Devuelve el número de elementos de la lista public int size(); // Vacía la lista. public void clear(); // Vacía la lista. public void clear(); // Añade el elemento x en la posición i. public void add(int i, Object x): // Devuelve el elemento en la posición i. public Object get(int i); Escribir un conjunto de pruebas (JUnit) para el TAD lista. 9

10 JUnit V. Nuestra segunda prueba. Prueba Lista (TestLista.java) protected void setup() { listavacia = new Lista(); listallena = new Lista(); elems = new Object[4]; listallena.add(0, elems[0] = new Integer(1)); listallena.add(1, elems[1] = new Integer(2)); listallena.add(2, elems[2] = new Integer(3)); elems[3] = new Integer(4); En primer lugar el setup(). Este setup() se ejecuta siempre antes de un nuevo método test*. 2 conjuntos de pruebas: sobre una lista con elementos y sobre una lista vacía. JUnit V. Nuestra segunda prueba. T.A.D. Lista (Lista.java) 1 public void testisempty() { asserttrue(listavacia.isempty()); asserttrue(!listallena.isempty()); // Devuelve el número de elementos de la public lista. void testclear() { public int size(); 2 listavacia.clear(); asserttrue(listavacia.isempty()); // Vacía la lista. listallena.clear(); asserttrue(listallena.isempty()); public void clear(); // Devuelve true si la lista está vacía. public void testgetllena() { public boolean isempty(); assertequals(listallena.get(0),elems[0]); assertequals(listallena.get(1),elems[1]); // Añade el elemento x en la posición i. assertequals(listallena.get(2),elems[2]); public void add(int i, Object x): try { listallena.get(3); // Devuelve el elemento en la posición i. catch (IndexOutOfBoundsException e) { public Object get(int i); return; fail("error. listallena no lanzó "+ excepción indice fuera de límites"); 3 10

11 JUnit V. Nuestra segunda prueba. T.A.D. Lista (Lista.java) public void testaddllena() { 4 listallena.add(3, elems[3]); assertequals(listallena.get(3), elems[3]); // Devuelve el número de elementos listallena.add(0, de la lista. elems[3]); assertequals(listallena.get(0), elems[3]); public int size(); // Vacía la lista. public void clear(); public void testsize() { // Devuelve true si la lista está 5 assertequals(listavacia.size(), 0); vacía. assertequals(listallena.size(), 3); public boolean isempty(); listallena.add(3, elems[0]); assertequals(listallena.size(), 4); // Añade el elemento x en la posición i. listallena.add(4, elems[0]); public void add(int i, Object x): assertequals(listallena.size(), 5); // Devuelve el elemento en la posición i. public Object get(int i); JUnit VI. Ejecución de pruebas. junit.textui.testrunner junit.swingui.testrunner 11

12 Un seguro de vida Probar mientras se codifica. Siempre que modifiquemos algo hemos de escribir una nueva prueba que lo verifique y, además, las pruebas antiguas deben funcionar. Además, mejora el diseño. Una taxonomía de casos de prueba. 12

JUNIT. Pruebas Unitarias

JUNIT. Pruebas Unitarias JUNIT. Pruebas Unitarias Dpto. de Ingeniería de Sistemas Telemáticos http://www.lab.dit.upm.es/~lprg Introducción Un programa es aceptable cuando: Hace lo que se acordó que debía hacer en las especificaciones.

Más detalles

Contenido. Comentarios. l Estilo l Documentación l Pruebas l Depuración **/ l Comentarios de código. l Comentarios de documentación

Contenido. Comentarios. l Estilo l Documentación l Pruebas l Depuración **/ l Comentarios de código. l Comentarios de documentación {F-PROG dit Contenido l Estilo l Documentación l Pruebas l Depuración Fundamentos de Programación DIT- 1 {F-PROG dit Comentarios l Comentarios de código n /*... */ n // comentario táctico: hasta fin de

Más detalles

Registro de traza en Java

Registro de traza en Java Registro de traza en Java javierj@us.es / jjgrodriguez@gmail.com y qué es la traza? Veremos dentro de poco como crear el objeto log. public int suma(int a, int b) { log.debug( Entrando en suma ); int sum;

Más detalles

Pruebas de Software: Herramientas: Pruebas Unitarias. Elisa Herrmann Ingeniería del Software de Gestión

Pruebas de Software: Herramientas: Pruebas Unitarias. Elisa Herrmann Ingeniería del Software de Gestión Pruebas de Software: Herramientas: Pruebas Unitarias Elisa Herrmann Ingeniería del Software de Gestión Contenido Qué son Pruebas Unitarias? Frameworks Ventajas Desventajas y limitaciones Mitos sobre Pruebas

Más detalles

JUnit es un paquete Java para automatizar las pruebas de clases Java.

JUnit es un paquete Java para automatizar las pruebas de clases Java. Pruebas unitarias José A. Mañas 11.2.2016 1 Introducción Se dice que un programa es aceptable cuando: hace lo que debe hacer no hace lo que no debe hacer Un programador jamás debería entregar un programa

Más detalles

Laboratorio de Programación

Laboratorio de Programación Laboratorio de Programación Documentación Pruebas Unitarias Dpto. de Ingeniería de Sistemas Telemáticos http://www.lab.dit.upm.es/~lprg/ febrero 2010 Documentación Documentación y Pruebas 2 1 Qué es documentar?

Más detalles

Programación Tema 8: Estilo y pruebas. Programación DIT-UPM

Programación Tema 8: Estilo y pruebas. Programación DIT-UPM Programación Tema 8: Estilo y pruebas Programación DIT-UPM 1 Contenidos! Estilo! Pruebas! Depuración Programación DIT-UPM 2 Calidad del Software! Estilo, prueba, depuración: aspectos relacionados con el!

Más detalles

JUnit 3 vs. JUnit 4. David Alonso Ríos. Facultad de Informática Universidade da Coruña 2008/2009

JUnit 3 vs. JUnit 4. David Alonso Ríos. Facultad de Informática Universidade da Coruña 2008/2009 JUnit 3 vs. JUnit 4 David Alonso Ríos Facultad de Informática Universidade da Coruña 2008/2009 Novedades de JUnit 4 Utiliza anotaciones de Java 5 para: Identificar los tests, en vez de usar convenciones

Más detalles

INGENIERÍA DEL SOFTWARE II Práctica 1. Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández

INGENIERÍA DEL SOFTWARE II Práctica 1. Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández INGENIERÍA DEL SOFTWARE II Práctica 1 Pruebas con Junit y Eclemma Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández Objetivos Realizar pruebas de caja negra de forma automática Familiarizarse

Más detalles

Programación II - TP1 1er Cuatrimestre 2018

Programación II - TP1 1er Cuatrimestre 2018 Fecha de presentación: 15/5/18 Fecha de entrega por mail: 29/5/18 Programación II - TP1 1er Cuatrimestre 2018 Requerimientos técnicos: Grupos de 1 o 2 personas Se debe utilizar al menos una vez iteradores

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

JUnit. JUnit registra si es falso el valor retornado por la función evaluada Así se ha detectado una falla

JUnit. JUnit registra si es falso el valor retornado por la función evaluada Así se ha detectado una falla Aprendizaje Java acelerado por casos de prueba JUnit Agenda JUnit Ventajas de DrJava 2 Ejemplos Rellene con su algoritmo Indentación Análisis Conclusiones JUnit Conjunto de bibliotecas creadas por Erich

Más detalles

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Diseño de tipos Igualdad, representación, código, copia y relación de orden Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones

Más detalles

Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/ de Marzo de

Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/ de Marzo de Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/2015 09 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Una compañía solicita

Más detalles

Ejercicios resueltos de programación

Ejercicios resueltos de programación Ejercicios resueltos de programación Mariano Fernández López Escuela Politécnica Superior, Universidad San Pablo CEU 18 de marzo de 2015 Índice general 1. Implementación de un método recursivo 2 1.1. Enunciado.............................

Más detalles

Pruebas unitarias JUnit

Pruebas unitarias JUnit Pruebas unitarias JUnit Pruebas unitarias Conceptos básicos Es una forma de probar el correcto funcionamiento de un módulo de código. Sirve para asegurar que cada uno de los módulos funcione correctamente

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

Más detalles

Tema 5 - Pruebas del software Ingeniería del Software de Gestión II

Tema 5 - Pruebas del software Ingeniería del Software de Gestión II escuela técnica superior de ingeniería informática Tema 5 - Pruebas del software Ingeniería del Software de Gestión II Objetivos Cuáles son las alternativas para verificar y validar software Qué son las

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación Colecciones de Objetos José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ colecciones Cuando tenemos varios

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Pruebas de unidad: JUnit David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Pruebas de unidad Se validan los componentes (módulos) del sistema

Más detalles

Introducción al Proceso de Pruebas.

Introducción al Proceso de Pruebas. Introducción al Proceso de Pruebas. Javier Gutiérrez / javierj@us.es Introducción al proceso de pruebas Objetivo: repasar las ideas principales sobre las pruebas del software y, en concreto, las que usaremos

Más detalles

8. Colecciones e iteradores

8. Colecciones e iteradores 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases TreeMap, HashMap - Iteratores: interfaz Iterator El lenguaje de programación Java

Más detalles

Programación II 2do cuatrimestre 2017

Programación II 2do cuatrimestre 2017 Tecnología Java El propósito de esta clase es aplicar los conceptos de TAD y Complejidad en Java. A continuación se mencionan algunas herramientas que nos ayudaran a aplicar estos y otros conceptos que

Más detalles

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011 Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011 Ejercicio 1 (2 puntos) SOLUCIONES class TarjetaDeCredito

Más detalles

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2004 1) Se desea crear una clase para hacer cálculos sobre el movimiento

Más detalles

Arrays, Cadenas y Vectores Tipos Genéricos

Arrays, Cadenas y Vectores Tipos Genéricos Unidad Didáctica 5 Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.2.1 Introducción Según lo visto hasta ahora Cómo representaría

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++; Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software UPM ETSIINF. Exámen de Programación II. Convocatoria extraordinaria.08-07-2016. Realización: El test se realizará en la hoja

Más detalles

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción a la Recursión

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación

Más detalles

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0. Unidad Didáctica 6 Tipos List y Set con tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Estructuras de datos predefinidas en Java (Colecciones)

Más detalles

Soluciones Kata TDD. Solución requisito 1

Soluciones Kata TDD. Solución requisito 1 Soluciones Kata TDD Este documento recoge las soluciones a los primeros 8 ejercicios de la Kata Test Driven Development (TDD): Example Walkthrough de Viktor Farcic: https://technologyconversations.com/2013/12/20/test-driven-development-tdd-example-walkthrough/

Más detalles

Programación II. Mario Aldea Rivas Programación II 25/03/11 1

Programación II. Mario Aldea Rivas Programación II 25/03/11 1 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Tema 2. Programación dirigida por eventos Bloque temático 3. Esquemas algorítmicos Programación

Más detalles

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 84M, 2014/2015 12 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Una empresa de alquiler

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Programación de sistemas Listas enlazadas

Programación de sistemas Listas enlazadas Programación de sistemas Listas enlazadas Departamento de Ingeniería Telemática 1 Contenidos *** Introducción a los genéricos Estructuras de datos Listas enlazadas La clase Node La clase LinkedList Ventajas

Más detalles

Tema 4 Corrección y Robustez. Programación Orientada a Objetos Curso 2010/2011

Tema 4 Corrección y Robustez. Programación Orientada a Objetos Curso 2010/2011 Tema 4 Corrección y Robustez Programación Orientada a Objetos Curso 2010/2011 Contenido Especificación formal. Asertos. Pruebas unitarias. Excepciones. Diseño por contrato. Curso 2010/2011 Programación

Más detalles

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 JUnit es una herramienta para la realización de pruebas de unidad de software desarrollado con Java, que es una herramienta de software

Más detalles

Tema 3. Repaso de primero Análisis y Diseño de Algoritmos

Tema 3. Repaso de primero Análisis y Diseño de Algoritmos Tema 3. Repaso de primero Análisis y Diseño de Algoritmos ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Departamento de Lenguajes y Sistemas Informáticos Curso 2010-2011 Índice 1. Programación genérica

Más detalles

SCR6150c Versión 2.0(12/01/05)

SCR6150c Versión 2.0(12/01/05) SCR6150c Versión 2.0(12/01/05) JUnit: Manual de usuario Fecha: Referencia: EJIE S.A. Mediterráneo, 3 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz

Más detalles

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM Programación Tema 9: Bibliotecas y Colecciones 1 Contenidos l Bibliotecas l Concepto de colección l Definición y uso de lista (List, ArrayList) l Recorridos sobre colecciones l Conjunto (Set, HashSet)

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Programación concurrente en Java

Programación concurrente en Java Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en

Más detalles

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011 Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá

Más detalles

Contenido. Pruebas del Software. Verificación vs. Validación. Prueba de Software. Information Engineering Research Group

Contenido. Pruebas del Software. Verificación vs. Validación. Prueba de Software. Information Engineering Research Group Contenido Pruebas del Software Information Engineering Research Group Repaso de los conceptos básicos de Prueba de Software vistos en la parte teórica del curso Descripción del framework JUnit Adaptaciones

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario

Más detalles

Fundamentos de Computadores y Lenguajes

Fundamentos de Computadores y Lenguajes Fundamentos de Computadores y Lenguajes 1. Elementos básicos de los lenguajes 2. Instrucciones de control 3. Tipos de datos 4. Métodos 5. Modularidad y Abstracción 6. Tratamiento de errores 7. Entrada/salida

Más detalles

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de

Más detalles

Excepciones. Excepciones

Excepciones. Excepciones Excepciones FJP Unidad 12 Excepciones Una excepción es la representación de una condición de error o cualquier situación no esperada en el resultado de un método. Son instancias de subclases de la clase

Más detalles

Capitulo 3. Test Driven Development

Capitulo 3. Test Driven Development Capitulo 3. Test Driven Development 3.1 Uso de JUnit como framework para realizar pruebas unitarias Como ya se mencionó en el marco teórico Test Driven Development es una técnica de programación extrema

Más detalles

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Primera parte (50% nota del examen) Septiembre 2009 1) Se desea hacer un método con la cabecera que se muestra abajo que cree y retorne

Más detalles

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto Examen de Programación (13294) Convocatoria de Junio 2008 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 a) Explicar qué es un NullPointerException ( por qué ocurre? cuando se produce?). Dar

Más detalles

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES 1 Objetivo del caso JUnit 2 Poder utilizar JUnit para realizar

Más detalles

Universidad de los Andes Ingeniería de Sistemas y Computación. ISIS1205 Algorítmica y Programación 2. Hoja de trabajo teórica Nivel 7 (N7-EE)

Universidad de los Andes Ingeniería de Sistemas y Computación. ISIS1205 Algorítmica y Programación 2. Hoja de trabajo teórica Nivel 7 (N7-EE) Universidad de los Andes Ingeniería de Sistemas y Computación ISIS1205 Algorítmica y Programación 2 Hoja de trabajo teórica Nivel 7 (N7-EE) Cupi2 Enunciado: Desarrolle las modificaciones al programa exposicióncanina

Más detalles

Elementos de Java LSUB. 30 de marzo de 2016 GSYC

Elementos de Java LSUB. 30 de marzo de 2016 GSYC Elementos de Java LSUB GSYC 30 de marzo de 2016 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial -

Más detalles

Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Algoritmos y Estructura de Datos Página 1 de 6

Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Algoritmos y Estructura de Datos Página 1 de 6 Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Algoritmos y Estructura de Datos Página 1 de 6 Algoritmos y Estructura de Datos: Examen 2 (Solución) Grados Ing. Inf. y Mat. Inf. Noviembre 2011 Departamento

Más detalles

Manual de usuario JUnit

Manual de usuario JUnit Manual de usuario JUnit Fecha: 17 Diciembre 2014 Referencia: EJIE S.A. Mediterráneo, 14 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz Tel. 945 01 73 00* Fax. 945 01 73 01

Más detalles

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005 24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos

Más detalles

Computación Geométrica Colecciones en Java

Computación Geométrica Colecciones en Java Computación Geométrica Colecciones en Java Colecciones en Java Copyright 2010-2011 Universidad de Alicante 1 La interfaz Iterator La interfaz java.util.iterator se usa para recorrer las colecciones posicionales

Más detalles

Concurso: Cuánto sabes de JAVA?

Concurso: Cuánto sabes de JAVA? Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos

Más detalles

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos

Más detalles

PRIMER EXAMEN PARCIAL. 5 de febrero de SOLUCIONES

PRIMER EXAMEN PARCIAL. 5 de febrero de SOLUCIONES FUNDAMENTOS DE PROGRAMACIÓN Curso: 2012/13 PRIMER EXAMEN PARCIAL. 5 de febrero de 2013. SOLUCIONES Versión:1.0.7 EJERCICIO 1: El tipo Beca a) 0,25 puntos public enum TipoBeca { ORDINARIA, MOVILIDAD, EMPRESA

Más detalles

Programación Avanzada, curso 2011 Juan Manuel Fernández Peña

Programación Avanzada, curso 2011 Juan Manuel Fernández Peña //Ejemplo curso Programación Avanzada feb-jun 2011 //Juan Manuel Fernández public class Persona { private String nombre, apellido1, apellido2; private int dia, mes, anio; aa){ // Constructor public Persona(String

Más detalles

Parte I: Programación en un lenguaje orientado a objetos

Parte I: Programación en un lenguaje orientado a objetos Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS DEPARTAMENTO DE INFORMÁTICA E INGENIERÍA DE SISTEMAS ESCUELA DE INGENIERÍA Y ARQUITECTURA FUNDAMENTOS DE INFORMÁTICA 1ª CONVOCATORIA (16-junio-2011) Ejercicio

Más detalles

Ejercicio 1 (proyecto prlistas, paquete listas)

Ejercicio 1 (proyecto prlistas, paquete listas) PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.

Más detalles

Pruebas, depuración y profiling

Pruebas, depuración y profiling Pruebas, depuración y profiling LSUB GSYC 13 de abril de 2016 (cc) 2016 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento -

Más detalles

Programación II Práctica 04: Objetos

Programación II Práctica 04: Objetos Introducción Programación II Práctica 04: Objetos Versión del 01/05/2016 En la siguiente práctica se utilizarán los conceptos de: herencia, sobrescritura, polimorfismo, abstract, extends e implements.

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

JAVA RMI: ESTRUCTURA INTERNA RMI

JAVA RMI: ESTRUCTURA INTERNA RMI Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

Introducción a C# y la plataforma.net. Pablo Zaidenvoren 2013

Introducción a C# y la plataforma.net. Pablo Zaidenvoren 2013 Introducción a y la plataforma.net Pablo Zaidenvoren 2013 Plataforma.NET Una plataforma -> Muchos lenguajes Posibilidad de compartir funcionalidades entre ellos! Plataforma.NET Base Class Library -> Funcionalidades

Más detalles

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a Examen de Programación (13294) Convocatoria de Junio 2006 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena

Más detalles

Sincronización por Colas en en Java

Sincronización por Colas en en Java 75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2013 Facultad de Ingeniería Universidad de Buenos Aires Sincronización por Colas en en Java Interface Collection Una interface

Más detalles

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS

Más detalles

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a Examen de Programación (13294) Convocatoria de Junio 2006 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena

Más detalles

DESARROLLO: Realizamos la declaración de variables con inicialización en cero se realizo el menú que se le muestra al usuario.

DESARROLLO: Realizamos la declaración de variables con inicialización en cero se realizo el menú que se le muestra al usuario. PRACTICA 1 MENU OBJETIVO: Reforzar conocimientos ya adquiridos sobre el manejo de programación en java a través de un programa, el cual realice un conteo de caracteres, cadenas, verificación de palíndromos

Más detalles

Solución al Examen de Fundamentos de Computadores y Lenguajes

Solución al Examen de Fundamentos de Computadores y Lenguajes Solución al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2006 1) Se dispone de la siguiente clase enumerada. Escribir un método,

Más detalles

Estructuras de Datos

Estructuras de Datos Estructuras de Datos Conjunto de nodos sobre los cuales existe una relación de paternidad que verifica: Si no es vacío tiene un único nodo distinguido llamado raíz, que no tiene padre. Cada nodo que no

Más detalles

Colecciones e iteradores

Colecciones e iteradores Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases TreeMap, HashMap - Iteratores: interfaz Iterator El lenguaje de programación Java

Más detalles

Técnicas Avanzadas de Testing Automatizado

Técnicas Avanzadas de Testing Automatizado Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación interface 24.11.2010 José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ interface Son clases sí cuentan (public)

Más detalles

ADSW Tema 2 Diccionarios

ADSW Tema 2 Diccionarios ADSW Tema 2 Diccionarios José A. Mañas 10.3.2013 Contenido 1 interface Diccionario... 2 2 Implementaciones... 2 2.1 con arrays... 2 2.2 con arrays ordenados... 3 2.3 árbol binario de búsqueda... 5 2.4

Más detalles

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Examen de Ejemplo Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Parte Teórica (2,5 puntos). La respuesta correcta se indica

Más detalles

ARREGLOS CLASE VECTOR. Ing. Marina Cipolletti

ARREGLOS CLASE VECTOR. Ing. Marina Cipolletti ARREGLOS CLASE VECTOR Ing. Marina Cipolletti QUÉ ES UN ARREGLO? Es una estructura de datos. Almacena datos del mismo tipo en forma indexada. El tamaño se declara en un primer momento y no cambia en tiempo

Más detalles

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2003 1) Se dispone del siguiente array de números reales ya creado.

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos: Nombre-Apellidos: Nota: 1. Ejercicio (1 punto) Responder a las siguientes preguntas de tipo test, seleccionando sólo una de las respuestas. Se evaluarán sólo las respuestas contestadas con el siguiente

Más detalles

Estructuras de Datos. 14 de junio de Apellidos

Estructuras de Datos. 14 de junio de Apellidos Ejercicio 1) (3 puntos). Dado el TAD Pila de Números Enteros con las siguientes operaciones: boolean pilavacia (); void apilar (int x); int desapilar () throws PilaVacia; SE PIDE: Codificar un método estático

Más detalles

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía

Más detalles

M.C. Yolanada Moyao Martínez

M.C. Yolanada Moyao Martínez M.C. Yolanada Moyao Martínez Es una técnica de programación que permite que un bloque de instrucciones se ejecute n veces. En Java los métodos pueden llamarse a sí mismos. Si dentro de un método existe

Más detalles

CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS

CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS 1 TEMAS A VER Listas simples genéricas Pilas Colas 2 LISTA SIMPLE GENÉRICA Una lista simple genérica nos permite crear listas de diferentes objetos: enteros, char,

Más detalles