mock objects rosemary torrico bascopé. introducción las pruebas de unidad han sido aceptadas como...
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/3.jpg)
….
• 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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/4.jpg)
…
• 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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/5.jpg)
…
• 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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/6.jpg)
![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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/10.jpg)
…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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/15.jpg)
![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](https://reader033.vdocuments.net/reader033/viewer/2022061608/5665b4691a28abb57c91511c/html5/thumbnails/16.jpg)
Videos recomendados
• http://www.youtube.com/watch?v=fAb_OnooCsQ
• http://www.youtube.com/watch?v=R9FOchgTtLM