mock objects rosemary torrico bascopé. introducción las pruebas de unidad han sido aceptadas como...

16
Mock objects Rosemary Torrico Bascopé

Upload: vinicio-ponciano

Post on 23-Jan-2016

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Mock objects

Rosemary Torrico Bascopé

Page 2: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Introducción

• Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software.

• Si se escribe un objeto, también debe proporcionar una clase de prueba automatizada que contiene los métodos que trabajan con el objeto, llamando a sus métodos públicos con distintos parámetros y asegurándose de que los valores devueltos son los adecuados.

Page 3: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

….

• Cuando se trata con datos simples u objetos de servicio, es sencillo escribir pruebas unitarias. – Sin embargo, muchos objetos dependen de otros

objetos o capas de infraestructura. Cuando se trata de probar estos objetos, a menudo es costoso, poco práctico o ineficaz.

Page 4: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

• La raíz de todos los problemas son las dependencias. . Todo depende de otra cosa,

• Se debe probar las llamadas más probables a otros métodos, y si no aislar a sus dependencias, a continuación, un fallo de la prueba en realidad podría ser un error en algún otro lugar.

• Así que puede haber falsos negativos en las pruebas: una prueba que falla, puede no ser un bug en el código, pero todavía se tiene que pasar tiempo investigando esto.

Page 5: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

• Mediante el aislamiento de las dependencias, se asegura que un fallo en una prueba sin duda significaría un bug en tu código. ... y las pruebas son más rápidas.

Page 6: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software
Page 7: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Definición

• Un Mock Object es un "objeto falso", un objeto que representa a otro y lo sustituye en funcionalidad. (http://www.dosideas.com/wiki/Mock_Object)

• También es conocido como objeto simulado (pseudoobjetos).

• Este patrón es utilizado ampliamente en la Prueba Unitaria (test unit) para asegurar un correcto aislamiento de la clase bajo test.

Page 8: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Comportamiento

• Imita el comportamiento de objetos reales de una forma controlada (Wikipedia)

• En los test de unidad, los mock objects se usan para simular el comportamiento de objetos complejos cuando es imposible o impracticable usar al objeto real en la prueba.

• Resuelve el problema del caso de objetos interdependientes

Page 9: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Funcionamiento

• Las dependencias que tenga nuestro objeto a testear pueden ser reemplazadas por mocks que funcionen como nosotros queremos.

• De esta manera, podremos testear en forma aislada a nuestra clase, sin preocuparnos por sus dependencias (más aún, sin preocuparnos por si realmente funcionan estas dependencias).

Page 10: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

…Funcionamiento…

• Usando Mock Objects podemos asegurar un "entorno perfecto y a medida", haciendo que este entorno responda como nosotros necesitamos.

• Luego, si el test de la clase falla, será por un problema en esta misma clase (y no en sus dependencias ya que, por hipótesis, el entorno era ideal).

Page 11: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Frameworks para mock objects

• Existen varios frameworks que ayudan a la creación de mocks.

• EasyMock • Mockito • MockEjb • EasyMock es uno de los más conocidos, y el

usado por el equipo de Spring para testear su framework.

Page 12: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Cuando usar mock objects

• Se usan en lugar de objetos reales que tengan algunas de estas características:– Devuelven resultados no determinísticos (por ejemplo la hora o la

temperatura)– Su estado es difícil de crear o reproducir (por ejemplo errores de

conexión)– Es lento (por ejemplo el resultado de un cálculo intensivo o una

búsqueda en una Base de Datos)– El objeto todavía no existe o su comportamiento puede cambiar.– Debería incluir atributos o métodos exclusivamente para el testeo.– Los objetos simulados para imitar al objeto real deben imitar su

misma interfaz.

Page 13: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Ejemplo

• La prueba de unidad de un objeto que utiliza una base de datos, puede ser instalar, configurar una copia local de la base de datos, para ejecutar pruebas.

• Los Mock Objets pueden proporcionar una salida a este dilema.– Un objeto ficticio ajusta a la interfaz del objeto real, pero tiene

código sólo lo suficiente para engañar al objeto para comprobar y hacer el seguimiento de su comportamiento.

– Siempre y cuando la clase que se está probando se comporte como se esperaba, no se dará cuenta de la diferencia, y la prueba unitaria puede comprobar que la consulta apropiada fue realizada.

Page 14: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Conclusiones

• Sin mucho esfuerzo, los Mock objets permiten poner a prueba hipótesis de cosas que rara vez ocurren en la vida real. Y, por último, puede probar soluciones incompletas.

Page 15: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software
Page 16: Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software

Videos recomendados

• http://www.youtube.com/watch?v=fAb_OnooCsQ

• http://www.youtube.com/watch?v=R9FOchgTtLM