La guía completa para pruebas móviles con Selenium

Última actualización: 06 de abril de 2020 Continuous Testing Modo experto
Continuous Testing

 

En nuestro entorno DevOps En esta era, el desarrollo continuo y el despliegue continuo son el objetivo clave de los entornos de desarrollo de software. El código se desarrolla continuamente y continuamente probado Además, las herramientas de automatización de pruebas son clave para el despliegue continuo de aplicaciones. Selenium es una popular herramienta de automatización de pruebas que ayuda a los desarrolladores de Selenium a integrar las pruebas continuas en el desarrollo. Es compatible con múltiples navegadores, plataformas y sistemas operativos.

Sin embargo, la proliferación de smartphones ha traído al mercado una amplia gama de dispositivos, plataformas y sistemas operativos. Antes, las pantallas de los móviles eran pequeñas y su diseño no era intuitivo. Eso ha cambiado con las pantallas actuales. Las aplicaciones diseñadas para móviles son ahora la nueva tendencia. Esto exige que las empresas reajusten sus estrategias de pruebas para adaptarse a esta nueva realidad. soluciones de aplicaciones móviles.

Las aplicaciones móviles son fáciles de usar y más accesibles. Hoy en día, cada vez más personas utilizan dispositivos móviles para comprar en línea o suscribirse a cualquier servicio. Actualmente, el 60 % de los recursos empresariales se consultan a través de dispositivos móviles. Sin embargo, la mayoría de los testers utilizan Selenium para pruebas móviles en lugar de Appium para probar soluciones de automatización.

¿Es compatible Selenium con las pruebas de aplicaciones móviles? Si bien no ofrece soporte directo para pruebas móviles, sí proporciona frameworks para ello. Selendriod es un framework de pruebas móviles basado en Selenium que permite a las empresas ejecutar pruebas automatizadas en dispositivos Android. Sin embargo, las opciones son limitadas. Aquí es donde Appium resulta fundamental para los desarrolladores de pruebas móviles con Selenium. Appium es un potente framework de automatización de pruebas móviles basado en Selenium que ofrece compatibilidad multiplataforma y multitecnología. Permite escribir código de prueba único tanto para Android como para iOS.

Si quieres saber más sobre las pruebas con Selenium y Appium usando SeeTest, haz clic aquí. 

Protocolo tecnológico

Selenium y Appium utilizan el mismo protocolo: JSON Wire. Este protocolo se convirtió recientemente en un estándar del W3C. Hoy en día, numerosas industrias, así como proveedores de navegadores, lo están implementando como protocolo estándar.

Arquitectura de Selenium

Arquitectura de Selenium

Selenium permite escribir código en diferentes lenguajes como Java, PHP, C# y Python. El código se ejecuta mediante el protocolo JSON Wire, una API REST que se utiliza para controlar el navegador. Cuando el código se ejecuta como una solicitud HTTP REST, el servidor de Selenium crea una nueva sesión. A continuación, invoca el controlador del navegador (Chrome, Safari o Edge) para acceder a él. El navegador envía la información solicitada al servidor de Selenium a través del controlador, que luego la envía al cliente.

Componentes de Selenium Grid

Componentes de Selenium Grid

Selenium Grid consta de tres componentes principales. El Hub de Selenium Grid es el servidor que distribuye las tareas de prueba a los nodos. Este servidor decide qué nodo recibirá la prueba según las capacidades predefinidas. El Nodo de Selenium Grid es la máquina que ejecuta las pruebas recibidas del Hub. Cada servidor puede tener varios nodos. La URL wd/hub facilita la comunicación entre el Hub y los nodos.

Arquitectura de Appium

Arquitectura de Appium

La arquitectura de Appium es bastante similar a la de Selenium. Appium también permite a los desarrolladores de pruebas móviles con Selenium escribir código en múltiples lenguajes, como Java, PHP, C#, Python, Ruby, JavaScript (WebdriverIO) y JavaScript (WD). Sin embargo, Appium también implementa otras opciones. Por ejemplo, al usar Java, hereda de RemoteWebDriver. El servidor de Appium se puede instalar localmente o en la nube. Cuando se ejecuta el comando `createSession()` desde el cliente de Appium mediante el protocolo JSON Wire, el servidor de Appium crea una nueva sesión en el dispositivo móvil a través del controlador de Appium (controlador de Android/controlador de iOS). Para dispositivos Android, utiliza la infraestructura ADB de Android. Si es necesario, creará APK en el equipo. Para iOS, utiliza el framework del IDE móvil y se comunica con la línea de comandos.

La idea es ejecutar pruebas ficticias sin fin en dispositivos móviles. En iOS, se ejecuta XCUITest. Las pruebas están controladas por el servidor.

Instalación de Appium

Instalar Appium en Android es bastante sencillo. Sin embargo, se complica un poco al trabajar con dispositivos iOS. El principal problema es que no se puede simplemente instalar una aplicación en el dispositivo. Al tratarse de aplicaciones para desarrolladores, cada una debe estar firmada para el dispositivo. Si bien se pueden usar emuladores, es posible obviar algunos requisitos. Además, se necesita un ID de desarrollador de Apple, un certificado de desarrollo válido, un perfil de aprovisionamiento, un archivo .ipa firmado, Xcode y las herramientas de desarrollo de línea de comandos. Asimismo, es necesario configurar el dispositivo para el desarrollo en Xcode.

Por ejemplo, si utiliza Java, deberá realizar las siguientes tareas:

  • Configurar Java
  • Instalar Homebrew
  • A continuación, instala Node.js y npm.
  • Luego, instala Appium.
    • npm install -g appium
  • Finalmente, instala wd
    • npm install wd
  • Configurar Appium para iOS en un dispositivo que instalará ilibmobiledevice
  • configurar el controlador XCUITest

Puedes consultar este tutorial para ver los pasos para instalar Appium.

http://appium.io/docs/en/about-appium/getting-started/#installing-appium

Matriz de portada

Para probar aplicaciones de Android, puedes usar ordenadores con Windows, Mac o Linux. Sin embargo, para probar aplicaciones de iOS, necesitas un dispositivo Mac. La nube funciona tanto para aplicaciones de iOS como de Android.

Matriz de portada para desarrolladores de Selenium

Dispositivo móvil vs. navegador

Antes de pasar a las pruebas en dispositivos móviles, es importante comprender las diferencias ambientales entre los dispositivos móviles y los navegadores.

  • gestos: Los dispositivos móviles utilizan diferentes opciones de entrada o gestos como deslizar, pellizcar, tocar con dos dedos, tocar con varios dedos, etc., que no están disponibles en los navegadores web.
  • Sistema de URL diferente: Las aplicaciones móviles son específicas para dispositivos móviles, en los que no se utilizan las URL web convencionales.
  • Dispositivos reales y emuladores: Las pruebas se realizan en dispositivos reales y simuladores. En Android, se utilizan los mismos archivos APK para ambas opciones. Sin embargo, en iOS, se emplean tecnologías diferentes para dispositivos reales y simuladores, ya que los simuladores se ejecutan en arquitecturas de 64 bits (x64) mientras que los dispositivos reales utilizan procesadores ARM. Por lo tanto, será necesario realizar pruebas en ambas plataformas.
  • Botones: Los dispositivos móviles incluyen botones como Inicio, Encendido y Volumen. Debes tenerlos en cuenta durante las pruebas.
  • Pantalla de inicio: Los dispositivos móviles tienen una pantalla de inicio con una barra de notificaciones. Por lo tanto, deben tenerse en cuenta las interacciones en la pantalla de inicio.
  • Pantalla giratoria: La pantalla del móvil se puede cambiar a modo vertical u horizontal, lo que modifica el tamaño de la pantalla.
  • Diferentes conexiones de red: Deben tenerse en cuenta las condiciones de la red, como 2G, 3G, 4G y 5G. En particular, deben realizarse pruebas funcionales a diferentes velocidades de internet.

Aplicaciones móviles frente a aplicaciones web

En lo que respecta a las aplicaciones, las aplicaciones móviles son diferentes de sus contrapartes web:

  • Ciclo de vida de la aplicación: El ciclo de vida de una aplicación móvil es diferente y complejo. Puedes instalar, desinstalar, ejecutar y cerrar aplicaciones.
  • Navegación con estado: Las aplicaciones móviles recuerdan tu sesión y responden en consecuencia la próxima vez que inicies sesión. Es más fiable en cuanto al estado de la sesión. La navegación también es sencilla.
  • Tecnologías de interfaz de usuario DOM: son diferentes para iOS y Android
  • Programación del lado del cliente: Por ejemplo, JavaScript no está disponible en las aplicaciones móviles.
  • Herramienta de depuración: (ej.: F12 en Chrome) no está disponible.

Funcionalidad móviles

Para las capacidades locales, debe especificar los siguientes detalles:

  • Nombre de la plataforma: Especifique la plataforma (iOS / Android).
  • Nombre del dispositivo: Especifique el nombre del dispositivo (ya que utilizará varios dispositivos).
  • nombre de automatización: Especifique la tecnología de automatización utilizada (por ejemplo: XCUITest para iOS).
  • aplicación: Para instalar una aplicación, especifique la ruta del archivo APK.
  • bundleId/appActivity: Especifica el ID del paquete de la app. En Android, puedes iniciar actividades de paquete y actividades específicas desde tu aplicación. En iOS, en cambio, solo dispones de actividades de paquete.

Funcionalidad en la nube

Cuando los desarrolladores de Selenium utilizan la tecnología en la nube:

  • Clave de acceso: La clave de acceso permite realizar pruebas remotas.
  • Consulta de dispositivo: Para encontrar los dispositivos que se utilizan en la nube

Comandos móviles

Para sobrecargar los comandos móviles, los desarrolladores de Selenium pueden usar ExecuteScript. Algunos de los comandos móviles relacionados con la aplicación son:

  • instalar aplicación
  • lanzarAplicación
  • resetApp
  • eliminarAplicación
  • terminarAplicación
  • ejecutarAplicaciónEnSegundoPlano

Algunos ejemplos de comandos de dispositivo

  • Bloquear
  • Descubrir
  • Girar
  • Agitación
  • ocultarTeclado
  • esBloqueo

En esta página de Appium encontrarás todos los comandos disponibles: http://appium.io/docs/en/commands/mobile-command/

¿Cómo crear una prueba móvil utilizando Selenium y Appium?

Usando Selenio

Paso 1: Crear archivo Gradle

Para comenzar la prueba, abre tu IDE. Por ejemplo, si estás usando Java, puedes ir a IntelliJ IDEA.

  • Crear un nuevo proyecto
  • Seleccione Gradle (también puede usar otras opciones como Maven).
  • Asigna un nombre al proyecto (ej.: Selenium 2).
  • Haga clic en Finalizar

Paso 2: Agregar Selenium a Gradle

Incorpora Selenium a Gradle

  • Al hacer clic en la nueva versión, se muestra la nueva versión. Sin embargo, ahora se muestra la versión alfa. Haga clic en Selenium Java.

Haz clic en Selenium Java

  • Elige la última versión en la página siguiente.

Haz clic en la nueva versión de Selenium Java

  • Copia el código de la página siguiente y pégalo en el cuadro de dependencias del IDE. Se descargarán todas las dependencias necesarias, en caso de que tu dispositivo no las tenga.

Copia el código de la página siguiente y pégalo en el cuadro de dependencias del IDE.

  • Usaremos TestNG para esta prueba. Importa Selenium, TestNG y el controlador de Chrome. Puedes descargar el controlador de Chrome aquí: https://chromedriver.chromium.org/
  • Crea un nuevo paquete (directorio) y nómbralo (ej.: William.demo).
  • Crea una clase (por ejemplo: williamSeleniumdemo)
  • Ahora ya tienes todos los elementos necesarios. Escribe el código para una prueba de Selenium.
    • Por ejemplo, usar driver.get() para abrir una URL y esperar a que se cargue la página.
    • Driver.navigate() para navegar entre páginas
    • encontrarElemento(Por.xpath())
    • driver.quit() para cerrar todos los navegadores
  • Ejecuta la prueba

Prueba de Appium

Probar dispositivos iOS con Appium es algo más complejo que con dispositivos Android. Por lo tanto, esta guía de pruebas utilizará un dispositivo iOS.

  1. Abre el IDE de IntelliJ.
  2. Agrega las dependencias de Appium al archivo Gradle (elimina las dependencias de Selenium, si las hay).
  3. Instala el controlador de iOS (WebDriver no tiene comandos específicos para iOS).
  4. Los desarrolladores de Selenium pueden usar la prueba de Selenium como base y modificarla para adaptarla a la prueba de iOS.
    1. Defina las capacidades deseadas (Esto le ayudará a establecer un mapa de valores clave para definir la forma de iniciar sesión en la nube, el lanzamiento de aplicaciones, etc.).
    2. Necesitas una clave de acceso para acceder a los dispositivos. Por lo tanto, ve a tu entorno en la nube y crea una clave de acceso.
    3. Crea un nombre para la prueba (ej.: prueba WilliamAppium)
    4. Selecciona la aplicación que deseas usar y obtén el ID del paquete. También puedes acceder al entorno en la nube y cargar la aplicación en el dispositivo.
    5. Defina el MobileCapabilityType
    6. Inicie el controlador creando un nuevo controlador iOS y proporcione la URL de wd.
  5. Ahora, ejecuta la prueba desde el IDE. Esto iniciará el controlador y ejecutará la prueba en dispositivos móviles.
  6. Acceda a la página en la nube y abra el dispositivo para ver en directo cómo se instala, se inicia y se cierra la aplicación.

Ejecutando la prueba desde la aplicación Appium

Ejecutando la prueba desde la aplicación Appium

  • Ve a Appium
  • Crear una nueva sesión
  • Existen múltiples proveedores de servicios en la nube. Elija un proveedor de servicios en la nube.

Existen múltiples proveedores de servicios en la nube. Elija un proveedor de servicios en la nube.

  • Introduzca el nombre de usuario y la clave de acceso.
  • Define el nombre de la plataforma (ej.: iOS)
  • Define la consulta del dispositivo (ej.: os=iOS)
  • Haz clic en Iniciar sesión
  • El dispositivo se seleccionará automáticamente. Puede usar la aplicación de escritorio de Appium para identificar los diferentes elementos y sus propiedades.
  • escribe el codigo
    • Driver.findelement(by.xpath)
    • Sendkeys() (nombre de usuario y contraseña)
  • Ejecuta el código. Ahora, seleccionará un dispositivo diferente.
  • Acceda a la nube y compruebe cómo se ejecuta la prueba en diferentes dispositivos.
  • Puedes establecer un punto de interrupción para depurar.

¡Eso es todo! Ahora los desarrolladores de Selenium han ejecutado con éxito las pruebas utilizando Appium.

Haz clic aquí para obtener más información sobre las pruebas de Appium y Selenium con Experitest..

Guy ArieliCTO

También puede interesarle