Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📱 Appium Java Mobile Testing Architecture (iOS)

Appium iOS Setup Environment

Este repositório apresenta uma arquitetura de testes automatizados móveis robusta, corporativa e de alta performance voltada especificamente à plataforma nativa iOS. O projeto implementa de forma rigorosa o padrão de design estrutural Page Object Model (POM), garantindo o desacoplamento absoluto de seletores de interface, manutenibilidade ágil de scripts e mitigação sistemática de testes intermitentes (test flakiness) por meio de esperas lógicas e drivers isolados.

Toda a engenharia de qualidade aplicada neste ecossistema de código segue preceitos, documentações formais e artefatos de validação de software com o mesmo rigor metodológico exigido em laboratórios acadêmicos avançados de P&D (Pesquisa e Desenvolvimento).


🏗️ Estrutura e Práticas de Arquitetura

O código-fonte deste projeto foi projetado utilizando separação rígida de responsabilidades em camadas lógicas:

  • br.com.davi.core: Camada de infraestrutura e controle. Abstrai e gerencia de forma centralizada o ciclo de vida e inicialização estável do driver Appium (DriverFactory), encapsulando os ganchos de setup (@BeforeMethod) e encerramento seguro (@AfterMethod) para evitar vazamentos de memória e travamentos de sessão no Xcode.
  • br.com.davi.pages: Camada de representação gráfica. Encapsula estritamente a identidade dos componentes de interface (mapeados unicamente via chaves de acessibilidade) e as ações lógicas de cada tela (Page Objects). Esta camada blinda os scripts de teste contra mudanças futuras de layout.
  • br.com.davi.tests: Camada de negócios e validação. Contém os scripts puros de asserção funcional orquestrados sob a engine do TestNG. Nenhum arquivo desta pasta manipula seletores ou interações brutas de clique direta.

🛠️ Stack Tecnológica e Requisitos de Ambiente

O ecossistema foi projetado, validado e estressado localmente sob a seguinte infraestrutura de hardware e software corporativa:

  • Arquitetura de Hardware: Mac Mini (Apple Silicon / Linha M-Series).
  • Sistema Operacional: macOS Sequoia 15.6.1 ou superior.
  • IDEs Utilizadas: IntelliJ IDEA (desenvolvimento Java e gestão Maven) & Xcode (simuladores Apple e inspeção XCUITest).
  • Gerenciador de Dependências: Apache Maven.
  • Target Application: TheApp (by Appium Foundation) - Binário executável nativo simulado em iOS.

🚀 Guia de Configuração Passo a Passo do Ambiente (Do Zero)

Siga rigorosamente os comandos e passos abaixo na sua máquina local para preparar as variáveis do sistema e as engines de simulação necessárias para a execução bem-sucedida do projeto.

1. Instalação e Configuração do Xcode

O Xcode fornece as ferramentas de compilação gráfica nativas da Apple e o servidor de simulação de dispositivos para o sistema.

  1. Acesse a App Store oficial do seu macOS e realize o download/instalação do Xcode.
  2. Se o instalador apontar incompatibilidade, acesse System Settings ➔ Software Update e garanta que o seu sistema operacional esteja atualizado na versão mais recente permitida.
  3. Abra o Xcode pela primeira vez após o download para aceitar os termos de licença de uso do desenvolvedor e aguarde o download automático dos pacotes e runtimes adicionais do simulador da plataforma (Exemplo utilizado: iOS 18.6 Simulator).
  4. Para certificar-se de que a engine de simulação está respondendo sem travas no sistema, execute no terminal do seu Mac:
    open -a Simulator

2. Instalação do Gerenciador de Pacotes Homebrew

O Homebrew gerencia ferramentas e dependências de ambiente via linha de comando no macOS.

  1. Abra o terminal do Mac e cole o script de instalação oficial abaixo:
    /bin/bash -c "\$(curl -fsSL https://githubusercontent.com)"
  2. Após o término da instalação, você obrigatoriamente precisa injetar o Homebrew no perfil global do seu terminal para que o comando fique disponível. Execute os três comandos abaixo em sequência (Substitua <seu-usuario> pelo nome da sua pasta de usuário do Mac):
    echo >> /Users/<seu-usuario>/.zprofile
    echo 'eval "\$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<seu-usuario>/.zprofile
    eval "\$(/opt/homebrew/bin/brew shellenv)"
  3. Teste se a instalação foi bem-sucedida rodando:
    brew --version

3. Instalação e Gestão do Runtime do Node.js (via NVM)

O servidor central do Appium opera sobre uma base baseada em Node.js. O uso do NVM (Node Version Manager) previne conflitos de permissões no escopo de diretórios globais do Mac.

  1. Instale o utilitário do NVM utilizando o Homebrew instalado no passo anterior:
    brew install nvm
  2. Crie o diretório físico oculto de persistência do NVM e injete as variáveis de leitura no seu ambiente terminal rodando:
    mkdir ~/.nvm
    export NVM_DIR="\$HOME/.nvm"
    [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
  3. Verifique se o utilitário responde com a versão corrente:
    nvm -v
  4. Realize o download da versão estável LTS (Long-Term Support) do Node.js e amarre-a como o interpretador padrão global do sistema:
    nvm install --lts
    nvm alias default 'lts/*'
  5. Valide se tanto o interpretador Node quanto o gerenciador de pacotes NPM estão devidamente indexados no sistema executando:
    node -v  # Deve retornar v22.x ou superior
    npm -v   # Deve retornar v10.x ou superior

4. Instalação e Inicialização da Infraestrutura Appium 3.x

Com o ecossistema do Node.js/NPM devidamente isolado pelo NVM, podemos instalar o ecossistema de servidores do Appium sem o uso de comandos administrativos arriscados (evitando o uso de sudo).

  1. Instale o servidor do Appium de forma global no sistema através do gerenciador de pacotes do Node:
    npm install -g appium
  2. Após o término do download, confirme se os binários de orquestração do servidor foram indexados no sistema operacional rodando:
    appium -v
  3. O Appium opera em uma arquitetura modularizada, exigindo drivers específicos para interagir com cada sistema operacional. Realize a instalação do driver nativo XCUITest para comunicação direta com os simuladores e SDKs da Apple:
    appium driver install xcuitest
  4. Confirme se o driver foi registrado corretamente na sua máquina local executando o comando de listagem:
    appium driver list --installed

5. Dependências Complementares Interinas do macOS

Para que o driver do Appium (XCUITest) opere em conformidade com os simuladores Apple e consiga injetar scripts sem travas lógicas, o sistema operacional necessita de utilitários gráficos adicionais fornecidos via Homebrew.

  1. Instale o utilitário Carthage (gerenciador de dependências nativo que compila frameworks para iOS), o pacote FFmpeg (utilizado pelo Appium para captura de tela e gravação de vídeo das sessões de testes móveis em tempo real) e as ferramentas de build básicas:
    brew install carthage ffmpeg
  2. Instale o pacote utilitário de manipulação avançada de simuladores Apple mantido pela Wix (AppleSimUtils). Ele permite ao driver do Appium realizar o controle e boot dinâmico do simulador Xcode em segundo plano:
    brew tap wix/brew
    brew install applesimutils

6. Instalação do Utilitário de Diagnóstico (Appium Doctor)

Para assegurar de forma visual que nenhuma variável ou atalho do sistema operacional ficou quebrado, usamos a ferramenta oficial de auditoria de ambiente.

  1. Instale o pacote de diagnóstico global oficial da comunidade Appium:
    npm install -g @appium/doctor
  2. Execute a validação estrita focando nas dependências da infraestrutura da plataforma Apple:
    appium-doctor --ios
  3. Certifique-se de que os itens críticos de ambiente da seção iOS (como caminhos do Xcode, Xcode Command Line Tools e Homebrew) retornem com o ícone de sucesso verde. Caso algum item aponte falha, o próprio console exibirá a linha de comando exata necessária para a correção.

7. Configuração Rigorosa de Variáveis de Ambiente do Java (JDK 17)

O ecossistema Java requer a injeção explícita da variável de caminho global JAVA_HOME mapeando a raiz do OpenJDK para que o compilador Maven e a IDE consigam localizar as classes internas do projeto. No macOS Sequoia rodando em arquiteturas Apple Silicon, esse mapeamento deve ser feito no terminal Zsh.

  1. Instale a distribuição oficial do OpenJDK 17 na sua máquina local através do Homebrew:
    brew install openjdk@17
  2. Crie um link simbólico no sistema para permitir que o macOS reconheça essa versão instalada como um pacote de máquina virtual Java nativo padrão do sistema:
    sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
  3. Abra ou crie o arquivo de perfil do seu terminal em modo de edição de texto limpo para persistir as variáveis globais (use o editor integrado Nano):
    nano ~/.zshrc
  4. Navegue até o fim do arquivo aberto no terminal e cole exatamente as linhas abaixo. Elas usam um script utilitário interno da Apple (/usr/libexec/java_home) para identificar dinamicamente onde o OpenJDK 17 foi instalado na máquina e configuram o Maven Wrapper:
    # Configurações Globais de Variáveis de Ambiente Java e Maven
    export JAVA_HOME=\$(/usr/libexec/java_home -v 17)
    export M2_HOME=\$HOME/.m2
    export PATH=\(JAVA_HOME/bin:\)PATH
  5. Salve as alterações e feche o editor Nano teclando sequencialmente os atalhos de teclado: Ctrl + O (para gravar), Enter (para confirmar o nome do arquivo) e Ctrl + X (para sair do editor).
  6. Recarregue os scripts de ambiente do seu terminal atual na memória viva do sistema operacional sem precisar fechar a janela rodando:
    source ~/.zshrc
  7. Valide se a variável global está apontando para o endereço absoluto correto do OpenJDK executando:
    echo \$JAVA_HOME
  8. Certifique-se de que o interpretador do Java e o compilador do Java respondam com a versão correta instalada digitando:
    java -version
    javac -version

8. Configuração e Mapeamento Visual no Appium Inspector

Para realizar a engenharia reversa das telas e capturar as chaves de acessibilidade únicas (Accessibility IDs) dos elementos, utilizamos a interface gráfica do Appium Inspector de forma integrada com as capabilities modernas do Appium 2.x/3.x.

  1. Baixe e instale a versão mais recente do Appium Inspector para macOS.
  2. Inicie o servidor do Appium no terminal do seu Mac rodando o comando:
    appium
  3. Abra o aplicativo Appium Inspector na sua máquina.
  4. Na aba principal Desired Capabilities, procure pelo botão de alternância chamado JSON Representation (localizado logo acima do painel de chaves/valores) e cole exatamente o objeto estruturado abaixo. (Nota: Lembre-se de substituir a propriedade app para refletir o caminho absoluto onde o seu repositório local foi clonado na sua máquina):
    {
      "platformName": "iOS",
      "appium:automationName": "XCUITest",
      "appium:deviceName": "iPhone 16 Pro",
      "appium:platformVersion": "18.6",
      "appium:app": "/Users/<seu-usuario>/Desktop/appium-java-mobile-testing-architecture/apps/TheApp.app.zip",
      "appium:noReset": false
    }
  5. Clique no ícone de salvar (disquete) para reter esse template e, em seguida, clique no botão Start Session no canto inferior direito.
  6. O simulador do Xcode receberá a ordem de boot, abrirá o iPhone 16 Pro e carregará o binário do TheApp. A partir deste momento, você pode clicar em qualquer elemento gráfico na tela espelhada do Inspector para visualizar e copiar seus atributos nativos na barra lateral direita.

🚀 Execução da Suíte de Testes Fast-Track

Toda a suíte de testes pode ser disparada de forma limpa e automática via terminal sem a necessidade de configurações manuais adicionais dentro da IDE, fazendo uso exclusivo do script utilitário do Maven Wrapper contido na raiz do projeto.

1. Limpeza de Cache e Compilação dos Scripts

Antes de iniciar uma nova rodada de validação, limpe os rastros de compilações anteriores e valide a consistência das dependências injetadas executando:

./mvnw clean test-compile

(Nota: Caso o terminal do seu macOS aponte um erro de "Permission denied" ao tentar invocar o wrapper, conceda permissão de execução ao script executando o comando chmod +x mvnw e tente novamente).

2. Disparando os Testes em Tempo Real

Certifique-se de que o servidor do Appium está ativo no terminal (appium) e que o simulador do Xcode está aberto na sua tela. Em seguida, execute a ordem de disparo da suíte orquestrada pelo TestNG:

./mvnw test

Ao final do processo, o terminal exibirá o sumário completo de execução do TestNG (Passes: 1, Failures: 0, Skips: 0), garantindo a rastreabilidade e integridade da sua entrega.


📑 Artefatos e Rigor Acadêmico de Engenharia de Qualidade

Para compreender profundamente a modelagem científica de escopo, as equações de cobertura funcional de negócios e os métodos aplicados para mitigar as instabilidades de rede e hardware sob este ecossistema, consulte os documentos em Markdown detalhados localizados na pasta /docs:

About

Native iOS mobile testing architecture (Appium/XCUITest + Java). Project structured with rigorous scientific software engineering principles, applying the Page Object Model (POM) pattern, intelligent driver management, and test plan (IEEE 829).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages