Hola a todos! En la víspera del lanzamiento del curso Mobile QA Engineer, tuvimos una lección abierta tradicional. Había tanta información que el seminario web duró dos días ( Día 1 , Día 2 ). De hecho, fue un verdadero QA móvil de dos días intensivo , que será útil para todos los que tengan la intención de convertirse en profesionales en la dirección de pruebas automatizadas de aplicaciones móviles en Android e iOS.
Profesor: Dmitry Yarygin, ingeniero de pruebas de control de calidad con 8 años de experiencia, 5 de los cuales
trabajó en un contrato con Google .
En el seminario web considerado:
- qué se prueba en general y por qué se necesita automatización;
- conceptos básicos mínimos de Java para la automatización (variables, objetos, clases, OOP);
- ¿Qué es Webdriver y Appium?
- Cómo encontrar objetos en una aplicación web utilizando varios localizadores;
- Automatización de una aplicación web (inicio de sesión en Facebook) usando Appium y un emulador de Android, y mucho más.
Por cierto, si desea obtener la mayor interactividad de estos seminarios web, instale las siguientes aplicaciones antes de comenzar a mirar:
- Android Studio
- Appium Desktop .
Historia y características de las pruebas móviles.
Las pruebas móviles como clase aparecieron alrededor de 2007: fue en este momento cuando se anunció el primer iPhone, que cambió por completo a toda la industria. Sí, las pruebas móviles existieron hasta 2007, pero las aplicaciones de aquellos tiempos eran bastante simples y primitivas. Después de 2007, el desarrollo en iOS y Android se volvió especialmente activo, y esto, a su vez, no pudo sino afectar las pruebas.
Por supuesto, las pruebas móviles tienen sus propios detalles y difieren del escritorio:

A pesar de la aparente simplicidad y el pequeño tamaño de los dispositivos utilizados, en Mobile QA debe cubrir muchas cosas con las pruebas (a veces hay incluso más en comparación con las pruebas de escritorio). ¿Y quién dijo que sería fácil?
Tipos de aplicaciones móviles
Las aplicaciones móviles son:
- Nativo (nativo)
- Híbrido (híbrido).
- Aplicaciones web (web).
Ahora mira la siguiente aplicación:

Y dime, ¿qué es: una aplicación híbrida, nativa o web?
La respuesta es:Texto ocultoesta es una aplicación web
Inicialmente, se entiende que la aplicación web se ejecuta y opera en el navegador, respectivamente, todos los elementos de la interfaz se ejecutan, como dicen, en un estilo web.
En cuanto a las aplicaciones híbridas, esto es esencialmente un intento de "meter" una aplicación web en un contenedor especial y ejecutarla en este contenedor, ligeramente "embelleciéndola" para que parezca una nativa.
Ejemplos de
aplicaciones híbridas :

Las aplicaciones híbridas no difieren en particular: los botones todavía están basados en la web, los enlaces se muestran en formato web, etc.
Veamos las características de las aplicaciones híbridas:

Y ahora un ejemplo de una aplicación "nativa" de la AppStore:

Preste atención a la calidad de la interfaz de esta aplicación y al hecho de que todos los elementos se ven "como nativos", porque la funcionalidad está totalmente integrada en el sistema operativo. En términos generales, una aplicación nativa es una aplicación desarrollada teniendo en cuenta las tecnologías "nativas", en nuestro caso, es Xcode para iOS.
Configuración clave de la aplicación móvil
Los parámetros son los siguientes:
- rendimiento
- compatibilidad
- pantalla (giros, modos),
- geolocalización
- modo fuera de línea
- interacción del sistema de archivos,
- trabajar con contactos
- sincronización
- trabajar con memoria
- batería
Características de probar aplicaciones móviles
Ahora conozcamos las características de las aplicaciones de prueba para dispositivos móviles:

Interacción de probadores y desarrolladores.
En principio, la interacción prácticamente no difiere de la interacción en un entorno normal cuando se trata de pruebas de escritorio. De todos modos:
- el desarrollador crea una nueva funcionalidad;
- el probador prueba características en varios dispositivos;
- A medida que se encuentran los errores, el probador crea informes de errores y muestra las áreas problemáticas del desarrollador;
- el desarrollador corrige errores;
- el desarrollador devuelve la aplicación para pruebas adicionales;
- Si no hay ningún problema, la aplicación está lista para su lanzamiento.

OOP para el probador
Y ahora OOP en 5 minutos )). Entonces, si planea hacer pruebas automatizadas, debe saber:
- clases, objetos, métodos;
- herencia
- cuerdas, enteros;
- polimorfismo;
- Matrices
- redefinición / sobrecarga;
- constructores;
- interfaces
En pocas palabras y sin términos complejos, entonces OOP (programación orientada a objetos) es una combinación de datos y código para procesarlos en un objeto.
La herencia es un mecanismo de lenguaje que le permite crear una nueva clase basada en una existente.
La encapsulación es un mecanismo de lenguaje que restringe el acceso a los componentes de un objeto (variables y métodos) y los hace accesibles solo dentro del objeto (privado). En otras palabras, ocultar una implementación de clase.
El polimorfismo es la capacidad de una clase descendiente para cambiar la implementación de la clase principal, pero preservando la interfaz.
Ahora pasemos de la teoría a la
práctica , lo que lo ayudará a comprender los conceptos básicos de la POO.
Interactivo
En primer lugar, abra el
siguiente enlace . Tenemos el siguiente código Java en el que hay tres clases principales:
1. Principal:public class Main { public static void main (String[]args) { Cat cat = new Cat (); cat.setAge (5); cat.setName ("Alisa"); System.out.println (cat.getName ()); System.out.println (cat.getAge ()); } }
2. Animal: public class Animal { private String name; private int age; public Animal() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
3.Gato: public class Cat extends Animal { private String name; public String getName() { return "Cat name is: " + name; } public void setName(String name) { this.name = name; } }
Main es la clase principal necesaria para ejecutar otras clases. La clase
Animal enumera atributos como la edad y el nombre del animal. La clase
Cat hereda todas las propiedades de la clase
Animal (Cat extiende Animal), pero anula los métodos existentes para trabajar con nuestra clase.

Ahora intente resolver el siguiente problema usted mismo:
- hacer la clase
Dog
, heredando la clase Animal
; - cree un método
getName()
en la clase Dog
que muestre “Dog name is: [ ]”
; - cree un método
setName()
en la clase Dog
que devuelva el nombre; - en la clase
Main
, cree una instancia de la clase Dog
, establezca el nombre usando setName()
y ejecute el método getName()
para obtener el nombre.
La solución al problema .
Automatización ¿Cuándo se necesita y cuándo no se necesita?
Necesitamos automatización en los siguientes casos:
- aplicación compleja con una gran cantidad de pantallas;
- gran arsenal de dispositivos;
- actualizaciones frecuentes;
- una gran cantidad de usuarios;
- la aplicación funciona en muchos países y mercados de aplicaciones;
- la velocidad de prueba es importante;
- Se necesitan pruebas de rendimiento.
Cuando no se necesita automatización:
- una o dos pantallas en la aplicación;
- la aplicación opera en un país, en un mercado;
- actualizaciones raras;
- pequeño número de usuarios;
- Los costos de automatización excederán el presupuesto.
Automatización: principios y medios.
Principios de automatización:
- Encuentra un objeto en la pantalla de la aplicación actual.
- Verifique su estado, asegúrese de que esté disponible.
- Realizar acciones con el objeto.
Clasificación de automatización:
- Herramientas de automatización que no necesitan acceso al código fuente (Webdriver, Appium).
- Herramientas de automatización que requieren acceso al código fuente (Espresso, KIF).
La automatización es, por supuesto, excelente, pero siempre debe recordar que no todo puede ser "automatizado".
Automatización con Appium
Appium es un servidor basado en el protocolo WebDriver (WebDriver es un marco para automatizar aplicaciones web). Appium acepta solicitudes del lado del cliente, las convierte y las transfiere al emulador o dispositivo.

Cuando se ejecuta, Appium le permite ver todas las solicitudes que se producen desde el cliente al servidor:


Aspecto de la configuración del sistema de entorno Appium:

Amigos, solo hablamos sobre la
primera parte del seminario web , por lo que recomendamos que definitivamente vean el video en la grabación para no perderse nada. También se hablará
sobre anotaciones en las pruebas, inicializando Appium para aplicaciones nativas, buscando elementos usando Appium en Android. Además, asegúrese de consultar la
segunda parte de la lección abierta, que brindará un conocimiento práctico más profundo en el campo de la automatización en general y Appium en particular.
Y, por supuesto, inscríbase en el curso
Mobile QA Engineer , que comienza muy pronto.