Olá pessoal! Na véspera do lançamento do curso Mobile QA Engineer, tivemos uma lição aberta tradicional. Havia tanta informação que o webinar durou dois dias ( dia 1 , dia 2 ). Na verdade, foi um intensivo controle de qualidade móvel de dois dias real, que será útil para todos que pretendem se tornar um profissional na direção de testes automatizados de aplicativos móveis no Android e iOS.
Professor - Dmitry Yarygin, engenheiro de teste de controle de qualidade com 8 anos de experiência, 5 dos quais
trabalhou em um contrato com o Google .
No webinar considerado:
- o que está testando em geral e por que a automação é necessária;
- noções básicas mínimas de Java para automação (variáveis, objetos, classes, OOP);
- O que é Webdriver e Appium;
- Como encontrar objetos em um aplicativo da Web usando vários localizadores;
- Automação de um aplicativo da Web (login no Facebook) usando Appium e um emulador Android, e muito mais.
A propósito, se você deseja obter o máximo de interatividade desses seminários on-line, instale os seguintes aplicativos antes de começar a assistir:
- Android Studio
- Appium Desktop .
Histórico e recursos dos testes móveis
Os testes móveis como uma classe apareceram por volta de 2007 - foi nessa época que o primeiro iPhone foi anunciado, o que mudou completamente todo o setor. Sim, os testes móveis existiam até 2007, mas as aplicações da época eram bastante simples e primitivas. Depois de 2007, o desenvolvimento no iOS e no Android se tornou especialmente ativo, e isso, por sua vez, não pôde deixar de afetar o teste.
Obviamente, o teste móvel tem suas próprias especificidades e difere do desktop:

Apesar da aparente simplicidade e do tamanho pequeno dos gadgets usados, no controle de qualidade para celular, você precisa cobrir muitas coisas com os testes (às vezes, existem ainda mais quando comparados aos testes em computadores). E quem disse que seria fácil?
Tipos de aplicativos móveis
Aplicativos móveis são:
- Nativo (nativo).
- Híbrido (híbrido).
- Aplicativos da Web (Web).
Agora observe o seguinte aplicativo:

E me diga, o que é: um aplicativo híbrido, nativo ou web?
A resposta é:Texto ocultoesta é uma aplicação web
Inicialmente, entende-se que o aplicativo da web é iniciado e opera no navegador, respectivamente, todos os elementos da interface são executados, como se costuma dizer, em um estilo da web.
Quanto aos aplicativos híbridos, trata-se essencialmente de uma tentativa de "amontoar" um aplicativo Web em um contêiner especial e executá-lo nesse contêiner, "embelezando" levemente a aparência de um nativo.
Exemplos de
aplicações híbridas :

Os aplicativos híbridos não diferem em particular na beleza: os botões ainda são baseados na Web, os links são exibidos no formato da Web etc.
Vejamos os recursos dos aplicativos híbridos:

E agora um exemplo de um aplicativo "nativo" da AppStore:

Preste atenção na qualidade da interface deste aplicativo e no fato de que todos os elementos parecem "nativos", porque a funcionalidade está totalmente integrada ao sistema operacional. Grosso modo, um aplicativo nativo é um aplicativo desenvolvido levando em consideração as tecnologias "nativas"; no nosso caso, é o Xcode para iOS.
Os principais parâmetros de aplicativos móveis
Os parâmetros são os seguintes:
- performance
- compatibilidade
- tela (voltas, modos),
- geolocalização
- modo offline
- interação do sistema de arquivos,
- trabalhar com contatos
- sincronização
- trabalhar com memória
- bateria.
Recursos de teste de aplicativos móveis
Agora, vamos nos familiarizar com os recursos de teste de aplicativos para dispositivos móveis:

Interação de testadores e desenvolvedores
Em princípio, a interação praticamente não difere da interação em um ambiente normal quando se trata de testes em desktops. Tudo o mesmo:
- o desenvolvedor cria nova funcionalidade;
- o testador testa recursos em vários dispositivos;
- conforme os bugs são encontrados, o testador cria relatórios de bugs e mostra as áreas com problemas do desenvolvedor;
- desenvolvedor corrige bugs;
- o desenvolvedor retorna o aplicativo para testes adicionais;
- se não houver nenhum problema, o aplicativo está pronto para lançamento.

OOP para o testador
E agora OOP em 5 minutos )). Portanto, se você planeja fazer testes automatizados, deve saber:
- classes, objetos, métodos;
- herança;
- strings, inteiros;
- polimorfismo;
- Matrizes
- redefinição / sobrecarga;
- construtores;
- interfaces.
Em poucas palavras e sem termos complexos, o OOP (programação orientada a objetos) é uma combinação de dados e código para processá-los em um objeto.
A herança é um mecanismo de linguagem que permite criar uma nova classe com base em uma existente.
Encapsulamento é um mecanismo de linguagem que restringe o acesso aos componentes de um objeto (variáveis e métodos) e os torna acessíveis somente dentro do objeto (privado). Em outras palavras, ocultando uma implementação de classe.
Polimorfismo é a capacidade de uma classe descendente de alterar a implementação da classe pai, mas preservando a interface.
Agora vamos passar da teoria para a
prática , o que o ajudará a entender o básico do POO.
Interativo
Primeiro de tudo, abra o
seguinte link . Temos o seguinte código Java no qual existem três classes principais:
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 é a classe principal necessária para executar outras classes. A classe
Animal lista atributos como idade e nome do animal. A classe
Cat herda todas as propriedades da classe
Animal (Cat extends Animal), mas substitui os métodos existentes para trabalhar com nossa classe.

Agora tente resolver o seguinte problema:
- faça a classe
Dog
, herdando a classe Animal
; - crie um método
getName()
na classe Dog
que exibe “Dog name is: [ ]”
; - crie um método
setName()
na classe Dog
que retorne o nome; - na classe
Main
, crie uma instância da classe Dog
, defina o nome usando setName()
e execute o método getName()
para obter o nome.
A solução para o problema .
Automação Quando é necessário e quando não é necessário?
Precisamos de automação nos seguintes casos:
- aplicação complexa com um grande número de telas;
- grande arsenal de dispositivos;
- atualizações frequentes;
- um grande número de usuários;
- o aplicativo funciona em muitos países e mercados de aplicativos;
- a velocidade de teste é importante;
- teste de desempenho é necessário.
Quando a automação não é necessária:
- uma ou duas telas no aplicativo;
- o aplicativo opera em um país, em um mercado;
- atualizações raras;
- pequeno número de usuários;
- os custos de automação excederão o orçamento.
Automação: princípios e meios
Princípios de automação:
- Encontre um objeto na tela atual do aplicativo.
- Verifique sua condição, verifique se está disponível.
- Execute ações com o objeto.
Classificação de automação:
- Ferramentas de automação que não precisam de acesso ao código fonte (Webdriver, Appium).
- Ferramentas de automação que requerem acesso ao código fonte (Espresso, KIF).
A automação é, obviamente, ótima, mas você deve sempre lembrar que nem tudo pode ser "automatizado".
Automação com Appium
Appium é um servidor baseado no protocolo WebDriver (WebDriver é uma estrutura para automatizar aplicativos da Web). O Appium aceita solicitações do lado do cliente, converte e as transfere para o emulador ou dispositivo.

Ao executar, o Appium permite ver todos os pedidos que ocorrem do cliente para o servidor:


Como é a configuração do sistema de ambiente Appium:

Amigos, falamos apenas sobre a
primeira parte do seminário on-line , por isso recomendamos que você definitivamente assista o vídeo na gravação para não perder nada. Também haverá conversas
sobre anotações em testes, inicializando o Appium para aplicativos nativos, procurando elementos usando o Appium no Android. Além disso, verifique a
segunda parte da lição aberta, que fornecerá conhecimentos práticos já mais profundos no campo da automação em geral e do Appium em particular.
E, é claro, inscreva-se no curso
Engenheiro de controle de qualidade móvel , que começa muito em breve!