Calabash Android Tutorial da Ferramenta de Teste

⚡ Resumo Inteligente

Calabash é uma estrutura de teste de aceitação de código aberto que simula ações reais da interface do usuário em Android e aplicativos iOS, usando linguagem simples. Cucumber cenários baseados em definições de passos em Ruby e um servidor de testes no dispositivo.

  • 🔸 Definição: Calabash Automatiza toques, entrada de texto e verificações em aplicativos móveis nativos e híbridos em dispositivos reais e emuladores.
  • ☑️ Conjunto de linguagens: Os cenários são escritos em arquivos de recursos Gherkin, e os métodos correspondentes residem em arquivos Ruby dentro de `step_definitions`.
  • ✅ Fundamentos do Transtorno Dismórfico Corporal (TDC): O Desenvolvimento Orientado a Comportamento (BDD) permite que proprietários de empresas, desenvolvedores e testadores cheguem a um acordo sobre o comportamento antes mesmo de qualquer script ser criado.
  • 🧪 Ordem de instalação: Java JDK, depois Ruby, depois Android Studio, em seguida, a gem calabash-android, verificada com um comando de versão.
  • 🛠️ Fluxo de execução: Assine o APK, compile o servidor de teste, conecte um dispositivo, consulte os localizadores e, em seguida, execute os arquivos de recursos.
  • 📊 Andamento: Calabash está arquivado e sem manutenção, então novos projetos geralmente optam por Appium, Espresso ou use o XCUITest.

Calabash Tutorial da ferramenta de teste para Android mostrando Cucumber Arquivos de funcionalidades que controlam um aplicativo móvel

O que é a Calabash?

Calabash é uma aceitação de código aberto Testes framework que permite escrever e executar testes para iOS e Android Apps.

É um framework de interface de usuário automatizado que permite escrever testes em Ruby usando Cucumber.

Calabash Funciona habilitando interações automáticas da interface do usuário em um aplicativo móvel, como pressionar botões, inserir texto, validar respostas, etc. Pode ser configurado para ser executado em diferentes dispositivos. Android e dispositivos iOS, que fornecem feedback e validações em tempo real.

⚠️ Nota de versão: Microsoft encerrou suas contribuições para Calabash após o iOS 11 final e Android 8 lançamentos, e o repositório calabash-android Agora se descreve como um projeto em busca de um mantenedor. O passo a passo abaixo foi mantido como estava, e as alternativas modernas são abordadas na última seção.

Porque Calabash Automação?

Antes de instalar qualquer coisa, é útil avaliar o que a estrutura oferece em comparação com o custo de manutenção.

Vantagens Desvantagens
Ajuda a aumentar o rendimento/produtividade. É necessária proficiência para escrever os scripts de teste de automação.
Melhor qualidade ou maior previsibilidade da qualidade A depuração do script de teste é um problema importante.
Maior robustez (consistência) de processos ou produtos. A manutenção do teste é cara no caso de métodos de reprodução.
Maior consistência da produção e redução de custos e despesas trabalhistas A manutenção dos arquivos de dados de teste será difícil se o script de teste testar mais telas

Calabash e BDD

  • Calabash is Desenvolvimento orientado para o comportamento (BDD)É o mesmo que Desenvolvimento Orientado a Testes (TDD)Mas, em vez de criar testes para descrever o formato das APIs, o comportamento da aplicação é especificado.
  • O BDD é um processo no qual múltiplas partes interessadas contribuem para criar um entendimento comum sobre o que deve ser construído.
  • O BDD é útil na construção do software certo e no design da perspectiva do proprietário da empresa.

O diagrama abaixo mostra como um Calabash O conjunto de funcionalidades é estruturado em camadas, desde o arquivo de recursos legível para a área de negócios no topo até a interação com o dispositivo na base.

Calabash Diagrama de camadas BDD mostrando arquivos de recursos, definições de etapas e a camada de automação do dispositivo.

Como instalar Calabash

Calabash on Windows É necessário instalar quatro pré-requisitos na ordem correta. Conclua cada etapa completamente antes de iniciar a próxima, pois a gem calabash-android verifica a presença do Ruby e do... Android SDK durante a instalação.

Parte I) Instalar Java JDK – Consulte este guia – /instalar-java.html

Parte II) Baixe e instale Ruby.

Passo 1) Baixe o Ruby do URL https://rubyinstaller.org/downloads

Página de download do RubyInstaller listando as versões do Ruby disponíveis para Windows

Passo 2) Abra o arquivo .exe e siga as instruções na tela. Após a conclusão da instalação, você verá a seguinte tela. Clique em Concluir.

Tela de conclusão do assistente de configuração do Ruby com o botão Concluir destacado.

Inicie o prompt de comando com Ruby ativado Windows 10 e digite abaixo do comando.

ruby -v

O console exibe a versão do interpretador instalada, conforme mostrado abaixo.

Prompt de comando com Ruby exibindo o número da versão do Ruby instalada

Parte III) Baixe e instale Android

Etapa 1) Baixar Android Studio at https://developer.android.com/studio

Android Studio assistente de configuração em execução Windows Durante a instalação

Passo 2) Abra o arquivo .exe, siga as instruções na tela e conclua a instalação. Clique no botão Concluir quando terminar.

Android Studio Tela de instalação concluída com o botão Concluir

Parte IV) Instalar Calabash Android

Passo 1) No console, digite `gem install calabash-android`. A instalação será iniciada e levará algum tempo para ser concluída.

Saída do console durante a instalação da gem calabash-android e suas dependências.

Passo 2) Após a instalação, digite calabash-android version

Console confirmando a versão instalada da gem calabash-android

A estratégia inovadora da Calabash

Com a gem instalada, a próxima tarefa é localizar a pasta do framework e entender a estrutura básica que a acompanha.

Abra a pasta “calabash-android-0.9.0”. Ele reside no caminho C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Os nomes das pastas mudarão em sincronia com a versão ruby/calabash que você instalar em sua máquina.

Abra a pasta do esqueleto do recurso. Fique atento a esta estrutura básica.

Calabash Pasta de estrutura de recursos contendo os diretórios support e step_definitions.

  • O arquivo *.feature contém cenários que iremos automatizar.
  • O método usado pelo arquivo de recurso está escrito no arquivo *.rb dentro da pasta “step_definitions”.
  • Métodos comuns, configuração de ambiente, instalação de aplicativos e ganchos devem ser colocados na pasta “suporte”.

Renuncie e construa o aplicativo

  • Calabash-android resign *.apk
  • Calabash-Android build *.apk

A assinatura do desenvolvedor é substituída por uma chave de depuração para que o servidor de testes possa instrumentar o aplicativo, e a etapa de compilação gera esse servidor de testes, conforme mostra a saída do console abaixo.

Saída do console dos comandos calabash-android resign e build, gerando um servidor de teste.

Conecte o dispositivo ao sistema/Abra o emulador

Verifique o dispositivo conectado. Digite o comando

adb devices

A lista de dispositivos conectados deve ser exibida. Se o dispositivo estiver ausente, siga as etapas de depuração e emparelhamento USB em Guia de conexão ADB Resolve a maioria dos casos.

O comando adb devices lista um dispositivo anexado. Android dispositivo por número de série

Como Encontrar o Localizador de Elementos

  • Abra o console. Digite o comando.
    calabash-android console "APK Path"
    start_test_server_in_background
  • O comando acima inicia o aplicativo no dispositivo. Para encontrar o localizador de elemento, use o seguinte comando.
    query "*"

Isso exibirá todos os localizadores de elementos na tela atual. Os testadores que preferirem um inspetor visual podem verificar a mesma hierarquia com uiautomatorviewer.

Calabash Exibição no console da árvore de elementos consultada para a tela atual do aplicativo.

Calabash Estrutura do projeto e etapas predefinidas

Em vez de copiar a pasta gem manualmente, o framework pode gerar um projeto funcional para você. Executar o gerador dentro do diretório do seu projeto cria o projeto padrão. Cucumber layout que todo Calabash suíte espera.

calabash-android gen

A árvore gerada separa as três preocupações de um conjunto de ferramentas BDD:

  • características/ — os cenários do Pepino, um .recurso arquivo por jornada do usuário.
  • recursos/definições_de_etapas/ — os métodos Ruby que correspondem a cada linha Gherkin, incluindo o arquivo calabash_steps.rb incluído.
  • recursos/suporte/ — configuração do ambiente e os mecanismos que instalam, iniciam e encerram a aplicação em todos os cenários.

O arquivo calabash_steps.rb incluído é mais importante do que parece à primeira vista. Ele fornece um grande conjunto de passos em inglês prontos para uso, permitindo que um primeiro cenário pressione botões, insira texto e verifique strings visíveis antes mesmo de se escrever um único método personalizado. Passos personalizados só são necessários quando uma jornada se torna mais complexa do que essas frases predefinidas.

É importante conhecer duas configurações de nível de projeto logo de início. Por padrão, as capturas de tela são salvas no diretório de trabalho atual, e a variável de ambiente SCREENSHOT_PATH as redireciona para outro local, o que mantém os artefatos de compilação organizados em uma máquina compartilhada. A interação com diálogos do sistema ou outro aplicativo requer o backend UIAutomator2, iniciado com start_test_server_in_background(with_uiautomator: true).

Criando Novos Scripts

Abra o arquivo de recurso e as seguintes linhas

O arquivo de funcionalidade de login foi aberto em um editor, mostrando as etapas do cenário Gherkin.

Feature: Login feature
  Scenario: As a valid user I can log into my app
    When I press "Login"
    And I enter my username
    And I enter my password
    Then I see "Welcome to coolest app ever"

Abra o arquivo de definição de etapa e defina o método no arquivo *.rb.

Mapa de arquivos de definição de etapas Rubyping uma linha Gherkin para um Calabash consulta de elemento

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Execute o projeto de teste

Para executar o projeto de teste, use o comando abaixo

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Imprime cada etapa à medida que é executada, e uma execução bem-sucedida termina com o cenário e os totais de etapas mostrados aqui.

Calabash Saída de execução mostrando cada etapa do Gherkin sendo executada no dispositivo.

Calabash O console exibe um resumo dos cenários aprovados e a contagem de etapas após a execução.

comum Calabash Erros e como corrigi-los

A maioria das falhas na primeira execução decorre das regras de empacotamento e permissão das quais o servidor de teste depende, e não do cenário em si. A tabela abaixo relaciona os sintomas relatados com mais frequência às suas causas documentadas.

Sintoma Causa provável e solução
O aplicativo trava assim que um teste começa. O APK não possui a permissão android.permission.INTERNET, necessária para que o servidor de testes aceite comandos. Declare a permissão em AndroidManifest.xml e reconstrua.
Os botões e o texto não respondem aos toques. Nenhuma versão do SDK de destino foi declarada. Adicione uma entrada uses-sdk especificando o nível do SDK usado na compilação do aplicativo.
O servidor de teste não consegue se conectar ao aplicativo. O APK não foi assinado novamente com a chave de depuração. Execute o comando de assinatura e, em seguida, compile novamente antes de executar.
Nenhum dispositivo é listado em tempo de execução. A depuração USB está desativada ou o driver está faltando. Primeiro, verifique se o número de série aparece na saída do comando `adb devices`.
As etapas falham com um erro de etapa indefinida. A redação em Gherkin não corresponde a nenhuma expressão regular em step_definitions. Copie o trecho sugerido. Cucumber imprime e implementa.

Duas entradas no manifesto corrigem as duas primeiras linhas. Adicione-as antes de assinar novamente o APK.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

As falhas de tempo limite geralmente são ambientais, e não funcionais. Um emulador lento, a inicialização a frio de um aplicativo ou uma sincronização em segundo plano podem fazer com que uma tela ultrapasse o tempo limite definido em `wait_for`, portanto, aumente o tempo limite antes de reescrever uma etapa que estava correta.

Is Calabash Ainda em manutenção? Alternativas para testes modernos em dispositivos móveis

Calabash Não está mais sendo desenvolvido ativamente. Microsoft parou de contribuir após dar suporte à versão final do iOS 11 e Android O projeto já teve 8 versões lançadas e agora é uma base de código aberto arquivada, sem um mantenedor. Os conjuntos de testes existentes ainda funcionam em dispositivos mais antigos, mas é necessário iniciar um novo trabalho em uma estrutura com suporte.

Quadro Plataforma Melhor adequado para
Appium Android e iOS Suítes multiplataforma em Java, PythonRubi ou JavaScript, e o substituto mais próximo para um Calabash .
Espresso Android só Testes rápidos em processo escritos em Kotlin ou Java pelos próprios desenvolvedores do aplicativo.
Teste XCUIT Apenas iOS Nativo Xcode suítes, a sucessora apoiada da aposentada Framework UIAutomation.
Maestro e Desintoxicação Android e iOS Novos projetos de código aberto voltados para resistência a lascas de memória e aplicações React Native.

O próprio hábito BDD é transferido sem problemas. Os arquivos de recursos Gherkin permanecem exatamente como estão, e apenas os corpos de definição de etapas são alterados, porque Cucumber fica acima do driver, em vez de dentro dele. As equipes que migram geralmente mantêm os arquivos de recursos e reescrevem as etapas em Ruby com base neles. Appiume reutilizar o mesmo teste móvel matriz de dispositivos e teste de automação oleoduto que eles já executam.

Perguntas Frequentes

Sim. Uma gem separada, calabash-ios, controlava os aplicativos iOS através do mesmo Ruby e Cucumber camada. Compartilha o status de obsolescência do Android gem, portanto, o trabalho atual com iOS é melhor atendido pelo XCUITest ou Appium.

Os modelos de aprendizado de máquina agora reparam localizadores quebrados automaticamente, sinalizam cenários instáveis ​​comparando históricos de execução e agrupam relatórios de falhas para que os defeitos mais prejudiciais sejam identificados primeiro. A decisão sobre o que afirmar ainda cabe ao testador.

O Copilot lida bem com as partes repetitivas, como um bloco `wait_for` que envolve a execução.ping Uma consulta de elementos. Ela não consegue identificar os identificadores de elementos do seu aplicativo, portanto, trate cada etapa gerada como um rascunho para verificar com um resultado de consulta real.

Cucumber é o executor BDD genérico que lê Gherkin e chama métodos Ruby. Calabash é a biblioteca de automação móvel que esses métodos chamam. Cucumber decide o que será executado; Calabash Executa a operação de toque, a entrada de texto e a asserção.

Por padrão, as capturas de tela são salvas no diretório de trabalho atual, nomeadas sequencialmente a cada execução. Definir a variável de ambiente SCREENSHOT_PATH antes da execução redireciona as capturas para uma pasta escolhida, mantendo os artefatos de integração contínua separados do código-fonte.

Não. Calabash Instrumenta um APK compilado, e é por isso que a etapa de resignação existe. O acesso ao código-fonte ajuda a adicionar identificadores de elementos estáveis, mas a própria estrutura só precisa de uma versão que tenha permissão para resignar e instrumentar.

Sim. Como a execução consiste em uma única chamada de linha de comando, qualquer servidor de compilação pode invocá-la após a geração do APK. Jenkins Normalmente, a tarefa reinicia o APK, inicia um emulador, executa os recursos marcados e arquiva os relatórios.

Mantenha os arquivos de recursos Gherkin inalterados e reescreva apenas os corpos de definição de etapas em relação ao Appium cliente. As consultas de elementos tornam-se estratégias de localização, e os ganchos que instalaram o aplicativo tornam-se funcionalidades desejadas na configuração do driver.

Resuma esta postagem com: