Kif, Espresso y Robotium como entorno de test

– Post escrito por María Morales (@MaMoralesMC) y Noemí Navarro (@nnsanchez92).

En el post de hoy, queremos ser algo más técnicas, y que queremos hablar de algunas herramientas como entornos de test. Hemos seleccionado estas herramientas porque últimamente están siendo muy sonadas y queremos hacer una pequeña introducción a cada una de ellas, para que se pueden usar o en qué tipo de Testing y beneficios de usar unas u otras.
Estas herramientas son, Kif, Espresso y Robotium. Seguramente alguna de ellas te sonará de haberlo leído por ahí o que te hayan hablado de ellas, por eso esta vez vamos a ser nosotras quienes te hablen de ellas.
Queremos hablar de estas herramientas, porque creemos que la automatización es clave, ya que no puede probar todas las combinaciones de dispositivo/navegador manualmente. En el mundo de las pruebas móvil, hay una serie de proyectos de código abierto que abordan el problema de la automatización móvil, y es lo que vamos a tratar.
Así que comencemos…

Kif “Keep It Functional”

Es un framework de Testing contra interfaz de usuario y sus siglas significan “Keep It Functional”. Utilizamos Kif para realizar tests de interfaz de usuario en una aplicación de iOS, al contrario que Espresso, que como veremos más adelante es para Android.
Kif intenta imitar cómo el usuario real interactuaría con la aplicación. La automatización se realiza mediante eventos siempre que sea posible.
Para integrarlo en nuestro proyecto debemos descargarlo de su repositorio en github (Kif fue creado por Square en 2011 para automatizar aplicaciones de iOS). En este repositorio se encuentra toda la explicación del proceso de integración del framework.
El equipo que creó Kif tenía unos objetivos en mente para el framework:

  • Uno de esos objetivos y además ventaja es que la configuración es fácil (requiere una configuración mínima para realizar un conjunto de pruebas) ya que no hay que utilizar servidores webs ni paquetes adicionales.
  • Se puede extender fácilmente para adaptarse a las necesidades de los desarrolladores.
  • Que funciona en configuraciones de Integración Continua.

Kif prueba dispositivos de iOS y estas pruebas están escritas en Objective-C, y con la ayuda de WaxSim, las pruebas se pueden integrar con los sistemas IP, como Jenkins (aquí abrieron una línea de conversación hablando de esto).
Si queréis saber más del tema podéis uniros a un grupo que hay de Google sobre Kif. Es un foro que tienen abierto para cuestiones, pero no se centran en potenciar la comunidad, sino simplemente en resolver posibles problemas que les puede surgir a los que usan Kif.

Espresso

Espresso es un framework para hacer tests contra la interfaz de usuario en movilidad, pero ojo, solo para Android, ya lo adelantábamos antes. Es Open Source lanzado por Google, el cual provee una API que permite crear pruebas de interfaz de usuario para simular interacciones de usuarios en una aplicación Android (aquí se pueden ver algunos ejemplos de esto).
Es una buena práctica simular los diferentes escenarios en los que el usuario puede interactuar con una aplicación pero ojo, hay que automatizar, sí, pero ya os contábamos aquí, y también Martin Fowler lo decía, que es recomendable tener pocas pruebas de interfaz gráfica ya que son muy frágiles.
Ya hemos hablado en otros post de frameworks para hacer Testing contra interfaz de usuario en movilidad como por ejemplo Calabash, que era, por aquel entonces, uno de los más sonados y sobre todo muy recomendado si usábamos BDD para el desarrollo.
Las posibilidades de Espresso son bastante grandes y a veces puede parecer difícil encontrar la manera exacta de probar cierta funcionalidad. Para esto Google proporciona una documentación a la que llama “chuleta” que la puedes encontrar en la página oficial de Espresso y os la dejamos también aquí en pdf. En ella podemos ver todas las sentencias posibles con todas las posibilidades que nos ofrece la librería.
Una última característica que creemos importante, es que Espresso tiene una versión para web. A groso modo, Espresso web sirve para trabajar con WebViews en Android. Utiliza los átomos de la API WebDriver para controlar el comportamiento de un WebView (puedes leer más en su página web oficial e incluso ver alguna de las interacciones/funciones).

Robotium

Robotium es un framework creado para implementar test automáticos de aplicaciones Android. Robotium es un librería que permite realizar pruebas de interfaz de usuario sobre aplicaciones nativas e híbridas en Android. Si comparamos este framework con el mundo del desarrollo web, se podría decir que Robotium es el Selenium de Android.
Con Robotium lo que hacemos es simular cómo un usuario interactuaría con una aplicación.  Se puede realizar la acción de realizar click en un texto especificado, introducir un texto en una caja de texto concreta o busca un texto en el propio formulario entre muchas otras cosas.
Robotium se puede utilizar con  Maven y Jenkins  para poder llevar a cabo la Integración Continua, y poder calcular los resultados de los test de forma automática.
Una de las mayores desventajas es que si se modifica la interfaz tenemos que cambiar también los test afectados, modificando de acuerdo a los nuevos cambios establecidos en la interfaz.
Como una característica a destacar, con las últimas releases, ha traído Robotium Recorder, un plugin para capturar acciones y crear test black-box. Con Robotium Recorder podemos capturar cada paso necesario en los tests y automáticamente importar los resultados al proyecto.
Como opinión personal, es una herramienta muy interesante para aquellos apasionados del Testing y de Android.

Terminando…

Como veis hemos estado contando frameworks para movilidad, pero hay muchos más, Calabash que ya hablamos de él en su día, recomendable si se sigue una filosofía BDD, Appium… Además hemos mencionado que Espresso también se puede usar para web, y aunque no hemos hablado mucho de ello por no extender más el post, ya sabéis que Selenium es otra posibilidad como framework para automatizar pruebas en web.
Con este post hemos querido introducir algunas herramientas que creemos que pueden servir de ayuda, ya sabemos que son muchas, como siempre decimos, valorar cuál se adapta a las necesidades de vuestra organización y… ¡A por ello!

Javier Garzás

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba