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

¿Necesitas una estimación?

Calcula ahora

Centro de preferencias de privacidad

Cookies propias

__unam, gdpr 1P_JAR, DV, NID, _icl_current_language

Cookies de analítica

Estas cookies nos ayudan a comprender cómo los usuarios interactúan con nuestra página web.

_ga, _gat_UA-42883984-1, _gid, _hjIncludedInSample,

Cookies de suscripción

Estas cookies se utilizan para ejecutar funciones de la Web, como no mostrar el banner publicitario y / o recordar la configuración del usuario dentro de la sesión.

tl_3832_3832_2 tl_5886_5886_12 tve_leads_unique

Otra