Test automáticos en Android con Appium

Appium es una herramienta de código abierto, multiplataforma para hacer pruebas en simuladores (iOS, FirefoxOS), emuladores (Android), y dispositivos reales (iOS, Android, FirefoxOS).

Appium te permite escribir test para distintas plataformas, utilizando la misma API.

Para ello Appium usa Selenium WebDriver.

Requerimientos para empezar

– Java IDE (Aquí usamos eclipse)
– Java JDK
– Maven Plugin for Eclipse
– Selenium WebDriver Dependencies
– Appium Java-Client Dependency
– Android SDK
– JUnit
– Appium Server

¿Cómo empezamos?

Creamos un nuevo proyecto Maven en Eclipse.

En el archivo pom.xml se añaden las dependencias

<dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>2.2.0</version>
</dependency>

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
</dependency>
<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.45.0</version>
</dependency>

Vamos a ver un ejemplo de un test.

En setup(), la función que se ejecuta antes de lanzar el test, se configura el driver.

También se indica donde está el apk a probar.

Por lo que el apk debe estar en src/test/resources, en este caso
Desire capabilities también se configuran en esta función.

Desired Capabilities son una serie de valores que se envian al servidor de Appium para indicarle que tipo de sesión debe lanzar.

También hay capabilities, para modificar la sesión en tiempo de ejecucuión.

Luego va el test.

En tearDown(), la funcion que se ejecuta despues de haber lanzado el test, se puede borrar la aplicación, dejar el entorno como lo encontramos…

@Before
public void setUp() throws Exception {
   //path to eclipse project
   File rootPath = new File(System.getProperty("user.dir"));
   //path to folder where the apk is going to be
   File appDir = new File(rootPath,"src/test/resources");
   //name of the apk
   File app = new File(appDir,"ownCloud.apk");

   DesiredCapabilities capabilities = new DesiredCapabilities();
   //which mobile OS to use: Android, iOS or FirefoxOS
   capabilities.setCapability("platformName", "Android");
   capabilities.setCapability("deviceName", "test");
   //the absolute local path to the APK
   capabilities.setCapability("app", app.getAbsolutePath());
   //Java package of the tested Android app
   capabilities.setCapability("appPackage", "com.owncloud.android");
   // activity name for the Android activity you want to run from your package. This need to be preceded by a . (example: .MainActivity)
   capabilities.setCapability("appActivity",".activity_name");
   capabilities.setCapability("appWaitActivity",".activity_name");

   // constructor to initialize driver object
   driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
   driver.manage().timeouts().implicitlyWait(waitingTime,
   TimeUnit.SECONDS);
   wait = new WebDriverWait(driver, waitingTime, 50);
}

@Test
public void test1LoginPortrait () throws Exception {
     //here goes the test
}

@After
public void tearDown() throws Exception {
  driver.removeApp("com.owncloud.android");
  driver.quit();
}

Si quieres empezar con un ejemplo, puedes usar este

git clone https://github.com/appium/tutorial.git

importalo como proyecto maven y en el siguiente enlace puedes ver cómo se ha hecho

http://appium.io/slate/en/tutorial/android.html?java#writing-your-first-…

¿Cómo localizamos los elementos?

¿Cómo indicamos en un test que queremos pinchar sobre un elemento?
Para ello es necesario seleccionarles por nombre, id, descripciión…

¿Cómo sabemos el valor de esas propiedades?
Hay diferentes maneras de hacerlo, usando appium o uiatomatoviewer, por ejemplo
Aqui vamos a explicar cómo usar uiatomatoviewer.

Accede a la carperta donde está el sdk, y luego entre en la carpeta tools.
Entonces abre uiatomatoviewer.
Una vez hecho esto, enchufa un dispostivo al ordenador o lanza un simulador.
En el dispositivo, abre la aplicación que quieres inspeccionar.
En uiatomatoviewer, pincha en Device Screenshot.
Ahora todos los elementos de la aplicación se ven y es posible ver su id, nombre, descripción…
Google recomienda usar content-description para buscar los elementos en el código.

¿Cómo se lanzan los test?

Accede a la carpeta de Appium que te descargaste anteriormente y ejecuta Appium.exe. Selecciona Android y lanzalo.
También es posible hacerlo por linea de comandos:

appium &

Ahora ya podemos lanzar los tests.

En eclipse, ejecuta los test como junit test.
También es posible hacerlo por linea de comandos:

mvn clean test

if you only want to launch some files, it is possible to do it:

mvn clean -Dtest=RunInProgressTest test

Cosas a tener en cuenta antes de automatizar

  • Deja la aplicación cómo la encontraste, esto permite poder lanzar los test independientemente y que no dependan unos de otros ni del orden en que se ejecuten.
  • Las asercciones más importantes y útiles de Selenium son assertTrue y assertEquals.

Se deben incluir asserciones en tu código para comprobarlo.

Las asercciones más importantes y útiles de Selenium son assertTrue y assertEquals.

Deja un comentario

Responsable » Solidgear.
Finalidad » Gestionar los comentarios.
Legitimación » Tu consentimiento.
Destinatarios » Los datos que me facilitas estarán ubicados en los servidores SolidgearGroup dentro de la UE.
Derechos » Podrás ejercer tus derechos, entre otros, a acceder, rectificar, limitar y suprimir tus datos.