5. Ingeniería de Pruebas LS4128: Ingeniería del Software II

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

Curso de java básico (scjp)
Herencia en C#.
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.
Práctica II: Java RMI.
Orientación a Objetos con Java SE
Desarrollo para Entorno Web
Lección 1 Introducción a la POO
UNIT TESTING pruebas unitarias pruebas unitarias.
Pruebas de programas Java mediante JUnit
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
Tratamiento de listas en Java
1.2 Sintaxis del lenguaje Java.
Presentación del estado del arte
Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Herramientas QA Morax.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Lenguaje de Programación II Manejo de Paquetes Corporación Universitaria del Caribe CECAR.
Primer Programa en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
Herencia e Interfaces.
Medio de tele-comunicación
Modificadores.
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Práctica III: Java RMI con Serialización y Activation Framework
Inicio Java: Algunas utilidades. Inicio Temporización En ingeniería nos encontramos con tareas que deben repetirse de forma periódica. Son tareas temporizadas.
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.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
Técnicas avanzadas de programación Interfaces
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
Patrones Creacionales
Programación Orientada a Objetos
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Programación orientada a objetos Capítulo 6 Objetos con buen comportamiento.
Algoritmos y programación III (75.07)
Técnicas avanzadas de programación Introspección
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Java.
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.
Buenas prácticas en el desarrollo de Software
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
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,
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.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Tema 1: Concurrencia con Java
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
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:

5. Ingeniería de Pruebas LS4128: Ingeniería del Software II DII – Universidad Nebrija Justo N. Hidalgo Sanz

Ingeniería de Pruebas - Justo Hidalgo Contenidos Introducción Pruebas Unitarias Junit Utilizaremos los ejemplos que aparecen en el Framework de Junit. Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Introducción Las pruebas son vitales en cualquier proyecto SW. Deben ser repetibles e incrementables. Introducimos un framework de pruebas unitarias. Útil también para otro tipo de pruebas: sistemas, integración. Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Pruebas Unitarias Durante el flujo de implementación de cualquier iteración de cualquier fase: PRUEBAS UNITARIAS Utilización del main() Utilización de un Framework de Pruebas Ingeniería de Pruebas - Justo Hidalgo

Utilización del main() public class Clase { public void f(String _s) { //… } public void g(int _i) {//…} public void h(Collection _c) {//…} public static void main(String args[]) { Clase miClase = new Clase(); miClase.f(“string”); miClase.g(25); miClase.h(v); } Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Framework de Pruebas Conjunto de paquetes y clases que permita automatizar las pruebas unitarias. Framework sencillo y ligero de utilizar. JUnit es una opción muy utilizada para Java. Sencillo: realmente, el desarrollador podría implementarlo por su cuenta. Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo JUnit (I) Creado por Kent Beck. Gamma y Fowler también están involucrados. www.junit.org Para control de pruebas y trazas, funciona bien con log4Java (paquete de gestión de trazas del proyecto Jakarta), o el sistema de trazas estándar de J2SE1.4.x Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Junit (y II) Utiliza como base el patrón Command. También el Template Method. Y el Composite. Ingeniería de Pruebas - Justo Hidalgo

Funcionamiento básico (I) Creación de una subclase de junit.framework.TestCase Sobrecargar el método runTest() Para comprobar el valor de un elemento: assertTrue(boolean) O assertEquals(xxx), assertNotNull(xxx), assertNotSame(xxx), … Métodos de junit.framework.Assert Ingeniería de Pruebas - Justo Hidalgo

Funcionamiento básico (y II): ejemplo public void testSimpleAdd() { Money m12CHF= new Money(12, "CHF"); Money m14CHF= new Money(14, "CHF"); Money expected= new Money(26, "CHF"); Money result= m12CHF.add(m14CHF); assertTrue(expected.equals(result)); } Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Fixtures (I) Utilizado con pruebas parecidas entre sí, sobre el mismo o similar conjunto de objetos. Test fixture: conjunto conocido de objetos. La idea es implementar primero el código del “test fixture”, que luego será utilizado por diferentes pruebas. Ingeniería de Pruebas - Justo Hidalgo

Fixtures (II): funcionamiento Crear una subclase de TestCase Añadir una instancia para cada parte del “fixture”. Sobrecargar el método “setUp()” para inicializar los atributos. Sobrecargar “tearDown()” para liberar los recursos almacenados en “setUp”. Ingeniería de Pruebas - Justo Hidalgo

Fixtures (y III): ejemplo public class MoneyTest extends TestCase { private Money f12CHF; private Money f14CHF; private Money f28USD; protected void setUp() { f12CHF= new Money(12, "CHF"); f14CHF= new Money(14, "CHF"); f28USD= new Money(28, "USD"); } Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Casos de Prueba (I) Realización de una prueba concreta sobre una o varias clases. Escribir un método Fixture::testXXX() Crear una instancia de la clase invocando al constructor que permite describir el testXXX a ejecutar. Posteriormente, cada caso se organiza en “suites”. Ingeniería de Pruebas - Justo Hidalgo

Casos de Prueba (II): ejemplo Implementación del método: public void testMoneyMoneyBag() { // [12 CHF] + [14 CHF] + [28 USD] == {[26 CHF][28 USD]} Money bag[]= { f26CHF, f28USD }; MoneyBag expected= new MoneyBag(bag); assertEquals(expected, f12CHF.add(f28USD.add(f14CHF))); } Creación de la instancia de prueba: new MoneyTest("testMoneyMoneyBag"); Ingeniería de Pruebas - Justo Hidalgo

Casos de Prueba (III): ejemplo Ingeniería de Pruebas - Justo Hidalgo

Casos de Prueba (y IV): ejemplo Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Suites (I) Es interesante poder realizar varios casos de prueba juntos. Se utiliza la clase junit.framework.TestSuite. Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Suites (II). Respuesta Un caso de prueba devuelve un TestResult: TestResult result= (new MoneyTest("testMoneyMoneyBag")).run(); Una suite, de la misma manera: TestSuite suite= new TestSuite(); suite.addTest(new MoneyTest("testMoneyEquals")); suite.addTest(new MoneyTest("testSimpleAdd")); TestResult result= suite.run(); Otra opción: TestSuite suite= new TestSuite(MoneyTest.class); Ingeniería de Pruebas - Justo Hidalgo

Suites (y III). En general… … las suites pueden contener cualquier objeto que implemente la interfaz junit.framework.Test TestSuite suite= new TestSuite(); suite.addTest(Justo.suite()); suite.addTest(Juan.suite()); TestResult result= suite.run(); Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo TestRunner (I) JUnit provee herramientas gráficas para visualizar suites de prueba. Utilizar el método estático “suite()” de una forma: public static Test suite() { TestSuite suite= new TestSuite(); suite.addTest(new MoneyTest("testMoneyEquals")); suite.addTest(new MoneyTest("testSimpleAdd")); return suite; } … u otra: return new TestSuite(MoneyTest.class); Ingeniería de Pruebas - Justo Hidalgo

TestRunner (II): ejecución Classpath: junit.jar y directorio de ejemplos Arranque de aplicación: Versión AWT: java junit.awtui.TestRunner Versión Swing: java junit.swingui.TestRunner Versión Batch: java junit.textui.TestRunner junit.textui.TestRunner.run(suite); Ingeniería de Pruebas - Justo Hidalgo

TestRunner (y III): ejecución Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Resumen Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Conclusiones Alta densidad de patrones Típico en frameworks maduros Más difícil de cambiar Fácil de usar Pero muy completo. Enseña a hacer las cosas bien Ingeniería de Pruebas - Justo Hidalgo

Ingeniería de Pruebas - Justo Hidalgo Referencias JUnit Cookbook. Beck, K., Gamma, E. www.junit.org JUnit. A Cook’s tour. www.junit.org JUnit Test Infected: Programmers Love Writing Tests. www.junit.org Design Patterns. Gamma et al. Addison-Wesley. Ingeniería de Pruebas - Justo Hidalgo