Algoritmos y programación III (75.07)

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

Características Generales y Entornos de Desarrollo
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Curso de java básico (scjp)
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
Curso de java básico (scjp)
Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
5. Ingeniería de Pruebas LS4128: Ingeniería del Software II
Arquitectura CLARO-TECNOTREE
Pruebas de programas Java mediante JUnit
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
UNIVERSIDAD LATINA (UNILA)
RMI (Remote Method Invocation)
Aplicación del paradigma orientado a objetos
Presentación del estado del arte
Diseño y programación de
Herramientas QA Morax.
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
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.
Modificadores.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Un hilo es un único flujo de ejecución dentro de un proceso. Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones. Los.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
El lenguaje de programación Java
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Sintaxis de C# (Declaraciones y Tipos)
Tema 11: Excepciones Antonio J. Sierra.
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Programación orientada a objetos Capítulo 6 Objetos con buen comportamiento.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
MBA. LIDA LOOR MACIAS2 Historia. El perfil de Java. Los padres de Java son James Gosling (emacs) y Bill Joy (Sun) Java desciende de un lenguaje llamado.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Detalles Generales sobre Java
Algoritmos y Programación III
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
Tratamiento de excepciones
Interfaces y Clases Internas
MANEJO DE EXCEPCIONES. 21/11/2005 E.T.S de Ingenieros de Telecomunicacion.2 Índice ¿Qué es una excepción? Tipos de situaciones. Manejo de excepciones.
Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
Hilos Java Profesor Elian Rojas Berrocal
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos Capítulo 7 Objetos con buen comportamiento.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
Testing en Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.
Tema 1: Concurrencia con Java
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
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.
Transcripción de la presentación:

Algoritmos y programación III (75.07) Pruebas Automatizadas – JUnit - NUnit

Temario Introducción a JUnit Descripción Clases involucradas Casos particulares de pruebas NUnit - diferencias Desarrollo basado en pruebas

Introducción JUnit Se trata de un conjunto de clases que nos permiten realizar pruebas unitarias sobre código Java. Está desarrollado en Java. JUnit es Software de código abierto y está alojado en SourceForge. Página principal: www.junit.org.

Descripción JUnit consta de varios paquetes (packages) de clases Paquetes para construir los casos de prueba junit.framework, contiene las clases básicas de junit que utilizaremos para construir los casos de prueba. junit.extensions, contiene clases que extienden la funcionalidad de las clases básicas. Paquetes para ejecutar los casos de prueba junit.textui, permite ejecutar los casos de prueba en unainterfaz de texto. junit,awtui y junit.swingui proporcionan una interfaz gráfica para la ejecución de los casos de prueba. Integrado a la plataforma de desarrollo Eclipse

junit.framework Conjunto de clases para construir casos de prueba, algunas de las mas representativas son: Assert, proporciona una serie de métodos estáticos para comprobar el cumplimiento de condiciones sobre el código a probar. TestCase, representa un conjunto de pruebas sobre una clase, permite realizar múltiples pruebas sobre sus métodos. TestSuite, permite agrupar diferentes objetos TestCase para su ejecución conjunta. TestResult, permite almacenar los resultados de la ejecución de uno o varios TestCase, de esta forma conoceremos los resultados de las pruebas.

Assert Todos sus métodos son estáticos. Posee métodos para probar todo tipo de condiciones. //Condiciones de igualdad static void assertEquals(boolean expected, boolean actual) static void assertEquals(float expected, float actual, float delta) //Condiciones booleanas static void assertTrue(boolean condition) static void assertFalse(boolean condition) //Condiciones sobre objetos static void assertNull(java.lang.Object object) static void assertNotNull(java.lang.Object object) //Condiciones sobre referenacias a objetos static void assertSame(java.lang.Object expected, java.lang.Object actual) static void assertNotSame(java.lang.Object expected, java.lang.Object actual) Contiene un método fail para indicar de forma explícita que el test ha fallado. static void fail(java.lang.String message)

TestCase Representa el conjunto de pruebas que se van a realizar sobre los métodos de una clase. Hereda de Assert, por lo que posee todos sus métodos para la comprobación de condiciones. Implementa la interfaz Test. La forma de utilizar esta clase es heredando de ella para construir nuestras clases de prueba. Sus métodos más importantes son: //Ejecuta los métodos de test (todos los que comienzan por “test”) void run(TestResult result) //Realiza todas las inicializaciones necesarias para la prueba protected void setUp() //Libera todos los recursos utilizados durante la prueba protected void tearDown()

TestSuite Representa una conjunto de casos de prueba. Implementa la interfaz Test, por tanto implementa el método run para la ejecución de los tests. void run(TestResult result) Existen varias formas de utilizarlo: //Creamos un TestSuite y añadimos varios métodos de prueba para ser ejecutados TestSuite suite= new TestSuite(); suite.addTest(new MathTest("testAdd")); suite.addTest(new MathTest("testDivideByZero")); //Creamos un TestSuite a partir de los métodos de test de una clase, es decir //aquellos que comienzan por “test” y no tienen argumentos, simplemente //pasamos la clase y todos los métodos de test se extraen automáticamente para //formar parte del TestSuite TestSuite suite= new TestSuite(MathTest.class);

Ejemplo package pruebaBanco; import junit.framework.TestCase; import miniBanco.*; public class PruebaCtaCte extends TestCase { public void testCrear() { CtaCte cc1 = new CtaCte(11,"Pablo"); CtaCte cc2 = new CtaCte(22,"Juan",3.5); Assert.assertEquals(11,cc1.getNro()); assertEquals(22,cc2.getNro()); assertEquals("Pablo",cc1.getTitular()); assertEquals("Juan",cc2.getTitular()); Assert.assertEquals(3.5,cc2.getDesc_acordado(),0.01); }

Ejemplo - 2 package pruebaBanco; import miniBanco.CtaCte; import junit.framework.TestCase; public class OtraPrueba extends TestCase { CtaCte cc1; CtaCte cc2; protected void setUp() throws Exception { super.setUp(); cc1 = new CtaCte(11,"Pablo"); cc2 = new CtaCte(22,"Juan",3.5); } public void testDepositar() { cc1.depositar(100.5); assertEquals(100.5,cc1.getSaldo(),0.1); cc1.depositar(20); assertEquals(120.5,cc1.getSaldo(),0.1);

Excepciones Manejo de excepciones esperadas con Junit, ejemplo: public void testMetodoQueLanzaExcepcion() { try { //Invocamos el método de forma que deba lanzar una excepción metodoQueLanzaExcepcion(null); //Si el flujo de control pasa por aquí es porque la excepción //no saltó, entonces indicamos que ha habido un fallo fail(“El método debería haber lanzado una excepción”); } catch (RunTimeException e) { //A modo de documentación, para indicar que la prueba ha //tenido éxito el flujo de control ha de pasar por aquí assertTrue(true);

Prueba de métodos privados Probar indirectamente Cambiar el nivel de protección por el de acceso desde el mismo paquete Utilizar clases anidadas Utilizar reflection

NUnit Originalmente un 'port' de Junit A partir de la versión 2: Las clases de prueba no deben heredar de una jerarquía determinada Utiliza [atributos] para especificar las clases de prueba, las pruebas, el setup, etc.

Ejemplo using System; namespace Calculadora { public class Calc public Calc() {} public int Sumar (int n1, int n2) return n1 + n2; } public int Restar (int n1, int n2) return n1 - n2;

Ejemplo using System; using Calculadora; using NUnit.Framework; namespace Pruebas { [TestFixture] public class PruebaCalc { public PruebaCalc() {} [Test] public void ProbarSuma() { Calc c = new Calc(); Assert.AreEqual(3, c.Sumar(1,2)); } public void PorbarResta() Assert.AreEqual(1, c.Restar(2,1));} }

Elementos Originalmente un 'port' de Junit A partir de la versión 2: Las clases de prueba no deben heredar de una jerarquía determinada Utiliza [atributos] para especificar las clases de prueba, las pruebas, el setup, etc.

Otros atributos [SetUp] ...[TearDown] [TestFixtureSetUp] ... [TestFixtureTearDown] [Category("MiCategoria")] [ExpectedException("System.ExcepcionEsperada")] [Ignore("Ignrar esta fixture")]

Herramientas Resultados por consola GUI Integración con VS 2003/2005 Ej: TestDriven.Net

Otras herramientas Generación automática de casos de prueba a partir de código Separación del código de prueba de los datos de prueba Prueba de sitios web Prueba de interfaces de usuario Otros...

Desarrollo mediante pruebas Test Driven Development (TDD) Primer se escriben las pruebas, luego el código del programa Cada vez que se agrega una funcionalidad se corren las pruebas de todo el sistema Las pruebas se convierten en la principal documentación del sistema Es principalmente una metodología de desarrollo, que además produce código ‘limpio’