La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "5. Ingeniería de Pruebas LS4128: Ingeniería del Software II"— Transcripción de la presentación:

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

2 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

3 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

4 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

5 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

6 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

7 Ingeniería de Pruebas - Justo Hidalgo
JUnit (I) Creado por Kent Beck. Gamma y Fowler también están involucrados. 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

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

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

18 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

19 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

20 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

21 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

22 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

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

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

25 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

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


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

Presentaciones similares


Anuncios Google