Clase 05c niveles de pruebas

19

Click here to load reader

Transcript of Clase 05c niveles de pruebas

Page 1: Clase 05c niveles de pruebas

1

Pruebas de SoftwareNiveles de Pruebas

Universidad de los AndesDemián Gutierrez

Febrero 2013

Page 2: Clase 05c niveles de pruebas

2

¿Cómo Probar?

¿cómo probamos algo como esto?¿por qué es tan difícil hacer pruebas?

Sumar 2 Números

int sumarAyB(int a, int b) { return a + b;}

Page 3: Clase 05c niveles de pruebas

3

¿Cómo Probar?

OtraAplicación

Envío deCorreo

Inte

rfaz

de

Usu

ario

¿cómo probamos algo como esto?

Page 4: Clase 05c niveles de pruebas

4

Niveles de Pruebas /Pruebas Según su Alcance

PRUEBASSegún su Alcance

Unitarias

De Integración

De Sistema¿fin a fin? G

rano

Más F

ino

Más N

um

eros as

Más R

á pid

as

Page 5: Clase 05c niveles de pruebas

5

Niveles de Pruebas /Pruebas Unitarias

¿cómo probamos algo como esto?

salidasentradas

...

...

Inte

rfaz

de

Usu

ario

Page 6: Clase 05c niveles de pruebas

6

Niveles de Pruebas /Pruebas de Integración

¿cómo probamos algo como esto?

...

...

Inte

rfaz

de

Usu

ario

entradas salidas

Page 7: Clase 05c niveles de pruebas

7

Niveles de Pruebas /Pruebas De Sistema / Subsistema

¿cómo probamos algo como esto?

...

...

Inte

rfaz

de

Usu

ario

entradassalidas

Page 8: Clase 05c niveles de pruebas

8

bien, pero¿cuál es el problema?

Page 9: Clase 05c niveles de pruebas

9

Niveles de Pruebas /Pruebas De Sistema / Subsistema

esto es fácil de probar

...

...

Inte

rfaz

de

Usu

ario

entradassalidas

ponga a correr el sistema y comience a hacer clicks(se puede automatizar)

Page 10: Clase 05c niveles de pruebas

10

Niveles de Pruebas /Pruebas Según su Alcance

en estos dos casos tenemos problemas

¿qué tipo de problemas?

salidasentradas entradas salidas

Page 11: Clase 05c niveles de pruebas

11

Niveles de Pruebas /Pruebas Según su Alcance

los componentes que queremos probartienen dependencias

salidasentradas

Page 12: Clase 05c niveles de pruebas

12

Niveles de Pruebas /Pruebas Según su Alcance

que a su vez tienen dependencias

lo que hace difícilprobarlos por separado

salidasentradas

Page 13: Clase 05c niveles de pruebas

13

¿cómo se resuelve?

salidasA

C

entradas

B

Page 14: Clase 05c niveles de pruebas

14

Elimina

r Com

pone

ntes

Verda

dero

s

salidasA

C(verdadero)

entradas

B(verdadero)

salidasA

C(FALSO)(MOCK)

entradas

B(FALSO)(MOCK)

C(FALSO)(MOCK)

B(FALSO)(MOCK)

C(verdadero)

B(verdadero)

Cambiarlos por

“Componentes Falsos”

Page 15: Clase 05c niveles de pruebas

15

salidasA

C(verdadero)

entradas

B(verdadero)

salidasA

C(FALSO)(MOCK)

entradas

B(FALSO)(MOCK)en producción

(en funcionamiento)

Conductor de la Prueba

bajo prueba(en modo prueba)

Page 16: Clase 05c niveles de pruebas

16

Los Mocks y Stubs se pueden implementar sin la ayuda de ningún

framework, pero usualmente es aconsejable apoyarse en alguna librería

Dos muy conocidas en el mundo Java

JMockhttp://jmock.org/

Mockitohttp://code.google.com/p/mockito/

Page 17: Clase 05c niveles de pruebas

17

¿cómo mejorar la “testeabilidad”?

¿cómo escribir software “testeable”?

Page 18: Clase 05c niveles de pruebas

18

¿Cómo escribir código que sea “testeable”? ¡Cuatro consejos clave!

Establecer “contratos” entre los distintos componentes por medio de interfaces

Usar el principio de “inversión de dependencias” (Dependency Inversion)

(La “D” de SOLID)

Evitar usar el operador new para crear instancias concretas de un tipo dado (preferir interfaces)

¿qué? ¿cómo?

Apoyarse en frameworks de inyección de dependencias, por ejemplo, Spring

Page 19: Clase 05c niveles de pruebas

19

Gracias

¡Gracias!