Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Espresso Workshop, UI Testing en Android

Saul Molinero
September 30, 2019

Espresso Workshop, UI Testing en Android

Diapositivas utilizadas en el workshops de Espresso celebrado el 30 de septiembre en Android Vigo.

Evento: https://www.meetup.com/Vigo-Android-Developer-Group/events/264644654/
Repositorio: https://github.com/ADGevents/vigotech-sample

Saul Molinero

September 30, 2019
Tweet

More Decks by Saul Molinero

Other Decks in Programming

Transcript

  1. UI testing en Android 
 
 ¿Qué es espresso? ¿Por

    son necesarios los test de UI? Espresso Test Recorder Espresso API Espresso Idling Resources Mock web server Firebase test lab
 Casos avanzados @_saulmm
  2. Qué es Espresso? Framework UI Testing Mantenido y soportado por

    Google ‘Relativamente’ sencillo implementar tests de UI Los test de UI imitan a un usuario interactuando con el dispositivo @_saulmm
  3. Por qué son necesarios los tests de UI El ‘testing’

    manual es tedioso Implica mucho tiempo, es fácil perder tests importantes Permite la refactorización Evita regresiones Tests con gran ‘scope’ Al interactuar cuál usuario, los detalles de implementación no son demasiado importantes @_saulmm
  4. Espresso test recorder Buena primera aproximación Espresso Test Recorder permite

    generar tests de 
 UI a partir de interacciones con un dispositivo Código autogenerado mejorable Es necesario mejorar el código generado por ETR, ya que incita a malas prácticas como el uso `Thread.sleep` en nuestros tests @_saulmm
  5. Mock web server # @_saulmm Scriptable Web Server para testear

    clientes HTTP Mantenido por Square (creadores de OkHttp, Retrofit) Permite servir archivos JSON estáticos en local Se evita salir a internet, razón suficiente para que nuestros tests
 no sean confiables (flaky tests)
  6. Mock web server # @_saulmm Scriptable Web Server para testear

    clientes HTTP Mantenido por Square (creadores de OkHttp, Retrofit) Permite servir archivos JSON estáticos en local Se evita salir a internet, razón suficiente para que nuestros tests
 no sean confiables (flaky tests)
  7. Espresso idling resources ⏱ @_saulmm Espresso necesita saber que operaciones

    asíncronas ocurren LLamadas a red, operaciones complejas, carga de db, etc. Mediante el componente IdlingResource, podemos decirle a Espresso cuando ha de esperar CountlingIdlingResource.increment()
 doHeavyWork()
 CountingIdlingResource.decrement()
  8. The robot pattern Permite reutilizar código fácilmente Múltiples tests con

    múltiples parámetros Abstrae los detalles de implementación Facilidad en el mantenimiento de los test @_saulmm
  9. Firebase test lab & @_saulmm Permite ejecutar tus tests en

    emuladores o dispositivos reales Multitud de modelos, configuraciones y locales Ejecutables desde Android Studio, Firebase o CLI