Pruebas de Android: UIAutomator vs Espresso

Yo estaba buscando para los marcos de prueba para la automatización de la interfaz de usuario de Android y me topé con UI Automator y Espresso y esta es la parte que estoy confundido acerca de –

  1. Ambos son mantenidos por Google
  2. Ambos se utilizan para pruebas de interfaz de usuario funcional
  3. Ambos son solo frameworks de Android

Así que mis preguntas / dudas aquí son –

  • ¿Cuál es la diferencia principal entre UI Automator y Espresso ?
  • ¿Debe modificarse el código fuente para integrar cualquiera de estos marcos?
  • ¿Un marco tiene alguna ventaja sobre el otro? En caso afirmativo, ¿qué marco es el más adecuado para la automatización de la interfaz de usuario de una aplicación para Android?

UIAutomator – es potente y tiene buena integración externa del sistema operativo, por ejemplo, puede activar y desactivar WiFi y acceder a otros ajustes durante la prueba, pero carece de compatibilidad con versiones anteriores, ya que requiere Jelly Bean o superior. Pero, también carece de acceso detallado a la vista por lo que se podría decir que puede ser más de una pura prueba de caja negra. Donde como Espresso tiene acceso para ver internals (véase abajo). Esto se recomienda en developer.android.com para "Testing UI for Multiple Apps"

Espresso – es un poco más peso ligero en comparación con ui automator y soporta 2.2 Froyo y hasta también tiene un api fluido con poderoso hamcrest ( https://github.com/hamcrest ) integración haciendo código más legible y extensible (es más reciente que Ui). No tiene acceso a pruebas de integración de sistemas, pero tiene acceso a ver elementos internos, por ejemplo, puede probar una webview (útil para pruebas de aplicaciones híbridas o pruebas pesadas en webview). Un poco más de pruebas de caja gris en comparación con UI Automator. Esto se recomienda en developer.android.com para "Testing UI for a Single App". A partir de Android Studio 2.2 esto ahora ofrece UI prueba de grabación (como UIAutomator)

En realidad, no es necesario elegir. UIAutomator y Espresso usan el mismo corredor de instrumentación, así que puedes usar comandos de ambos en una sola prueba. Espresso tiene variedad de matchers, aserciones y acciones en la interfaz de usuario, que el automatismo no tiene:

Espresso 2.1 Cheat Sheet

Espresso se está ejecutando en hilos separados y es muy rápido comparando con otros marcos de prueba.

Como resumen: utilizar ambos en sus pruebas, Espresso es principal y UIAutomator como una herramienta adicional para la integración de SO.

Si está probando sólo una aplicación, entonces espresso.

Si está probando más de una aplicación o su integración con otras aplicaciones o sistema, entonces UiAutomator.

He encontrado un artículo interesante, que habla acerca de por qué debe utilizar ambos. Echa un vistazo a:

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

Ya Espresso es suficiente para mí, pero por algunas razones como la prueba de notificaciones de aplicaciones que en pocas semanas aprender uiautomator .

Dedica tiempo a

  • Compruebe los ejemplos de Google de utilizar estos marcos:

https://github.com/googlesamples/android-testing/tree/master/ui

  • Lea una documentación de estos marcos:

http://developer.android.com/training/testing/ui-testing/espresso-testing.html

http://developer.android.com/training/testing/ui-testing/uiautomator-testing.html

Al usar UIAutomator debe usar una API de 18+ mientras que con Espresso, puede ir tan bajo como API 8.

Como se afirma en la documentación de Android, las pruebas multi-aplicación deben realizarse con UIAutomator, mientras que si solo desea que las pruebas se ejecuten dentro de su propio paquete de aplicaciones, puede utilizar Espresso.

En la parte inferior de la página de esta documentación , puede encontrar la introducción, así como ejemplos de ambos estilos de prueba.

Para obtener una idea rápida de cómo funcionan las dos cosas vamos a dar un ejemplo. Vamos a tratar de encontrar y hacer clic en un botón con el título "Inicio" en Lollipop utilizando UIAutomator y Espresso :

  • UIAutomator : Usted tiene que buscar mayúsculas "START" porque en los botones Lollipop se renderizan en mayúsculas. device.findObject(new UiSelector().text("START")).click();
  • Espresso : Usted solo usaría R.string.start y no tendría que preocuparse de cómo la cadena es realmente renderizada por la plataforma. No importa si la vista tiene textAllCaps=true o ellipsized. onView(withText(R.string.start)).perform(click());

TL: DR;

UIAutomator busca vistas en un estilo de nivel inferior a Espresso – a través del mecanismo Instrumentación y recorriendo el árbol AccessibilityNodeInfo de la jerarquía de vistas. Espresso a su vez típicamente atraviesa la propia jerarquía de vista.

Un beneficio clave del uso de Espresso es que proporciona sincronización automática de las acciones de prueba con la interfaz de usuario de la aplicación que está probando. Espresso detecta cuando el hilo principal está inactivo, por lo que es capaz de ejecutar sus comandos de prueba en el momento adecuado, mejorando la fiabilidad de sus pruebas. Esta capacidad también le libera de tener que agregar cualquier solución temporal, como Thread.sleep () en su código de prueba.

El marco de pruebas Espresso es una API basada en instrumentación y funciona con el corredor de pruebas de AndroidJUnitRunner.

Fuente: https://developer.android.com/training/testing/ui-testing/espresso-testing.html

  • UiAutomator volcado para Lollipop Lost WebView Ver jerarquía
  • Android uiautomator para hacer clic en ListView
  • Cómo cambiar el título de las actividades en attach ()
  • UIAutomator corriendo con espresso
  • Android recibe texto del navegador
  • uiautomator - no puede obtener ListView para desplazarse como validar el texto en cada elemento de la lista. sólo falla cuando golpeo el último elemento en la pantalla
  • Cómo automatizar el patrón de desbloqueo en un teléfono real utilizando uiautomator?
  • UiAutomator getLastTraversedText ()
  • Android - Fragmento independiente herramienta de prueba de interfaz de usuario
  • UIAutomator haga clic en la vista de lista basada en el índice
  • Prueba de UiAutomator 2.0 desde la línea de comandos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.