Android Tutorial de Teste de Aplicativos com Framework de Automação

⚡ Resumo Inteligente

Android Os testes de aplicativos verificam uma versão em um cenário de dispositivos fragmentado, combinando verificações de unidade, integração, operacionais e de sistema com estruturas de automação que são executadas em um dispositivo ou diretamente na JVM.

  • 🔘 Por que isso é importante: Android Funciona em inúmeras combinações de dispositivos e versões, portanto, defeitos de compatibilidade são quase certos.
  • ☑️ Quatro níveis de teste: Os testes de unidade, integração, operacionais e de sistema detectam cada um um tipo diferente de defeito.
  • Framework no dispositivo: O Android A estrutura de testes se baseia em JUnit e instrumentação.
  • 🧪 Alternativa à JVM: Sombras robóticas Android classes para que os conjuntos de programas sejam executados na JVM sem um dispositivo ou emulador.
  • 🛠️ Conjunto de ferramentas mais amplo: Espresso, Automator de IU e Appium Ampliar a cobertura além das classes integradas.
  • 📊 Mitos a evitar: O uso exclusivo de emuladores, alguns poucos aparelhos ou testes exploratórios de última hora podem deixar defeitos na produção.

Android Tutorial de teste de aplicativos abordando níveis de teste, frameworks de automação e cobertura de dispositivos.

Porque Android Testando?

Android é o maior sistema operacional do mundo. Ao mesmo tempo, Android está fragmentado: existem inúmeros dispositivos e Android versões com as quais seu aplicativo deve ser compatível.

Não importa quanto tempo você invista em design e implementação, erros são inevitáveis ​​e bugs aparecerão.

Android Estratégia de teste

Um correto Android A estratégia de teste deve incluir o seguinte:

  1. Teste unitário
  2. Teste de integração
  3. OperaTeste Nacional
  4. Teste do sistema

Testes unitários

Os testes unitários são conjuntos de programas projetados para verificar uma unidade atômica de código-fonte, como um método ou uma classe.

O Android A plataforma já vem pré-integrada com o JUnit Framework 3.0. É um framework de código aberto para automatizar Teste de UnidadeE permite que os desenvolvedores escrevam programas de teste de unidade eficazes.

Um complemento aos testes unitários são os testes de interface do usuário (UI). Eles abrangem os componentes da interface do usuário do seu aplicativo e garantem que ele retorne a saída correta para uma sequência de ações do usuário no dispositivo.

Ações comuns da interface do usuário em um Android aplicativos como tocar, digitar e deslizar

A forma mais comum de realizar testes de interface do usuário em um dispositivo é Android Instrumentação. Mas isso tem problemas de desempenho. Uma das melhores ferramentas para realizar testes de UI em Android is Robotium.

⚠️ Nota de versão: JUnit 3 classes como InstrumentaçãoTestCase foram descontinuados na API 24; os projetos atuais usam AndroidTeste X, Espresso e o UI Automator. Robotium Não teve nenhum lançamento desde 2016.

Testes de integração

In Teste de integração, todos os módulos testados unitariamente são combinados e verificados. Em Android Isso geralmente significa verificar a integração com componentes como Serviço, Atividade e Teste de Provedor de Conteúdo.

Tipos de teste de integração em Android Abrangendo testes de provedores de serviços, atividades e conteúdo.

Muitas estruturas de teste são usadas para realizar testes de integração para Android, como Troyd, Robolectric e Robotium.

Operatestes nacionais

OperaOs testes funcionais, também chamados de testes de aceitação, são testes de alto nível que verificam a integridade e a correção do aplicativo.

In Android, FitNesse É uma estrutura de código aberto que facilita a execução de testes operacionais na aplicação alvo.

Testes de sistema

In Teste do sistema o sistema é testado como um todo e a interação entre os componentes, software e hardware é verificada.

In Android, o teste do sistema normalmente inclui

  • Testes de GUI
  • Testes de usabilidade
  • Testes de performance
  • Testes de estresse

Na lista acima, Teste de Desempenho recebe mais foco. Você pode usar ferramentas como Tracavaliar realizar testes de desempenho em AndroidEsta ferramenta pode ajudá-lo a depurar sua aplicação e analisar seu desempenho. TracO eview agora está obsoleto em favor do Perfilador de CPU.

Operações Android Testes

As Android é fragmentado, os testes em muitos dispositivos são necessários e isso custa dinheiro. Automatizado Android Os testes ajudam a reduzir esses custos.

Benefícios da automação Android ensaio

  • Reduza o tempo de execução de casos de teste
  • Aumente a produtividade do seu processo de desenvolvimento
  • Detecção antecipada de bugs, economia de custos na manutenção de software
  • Encontre e corrija rapidamente os bugs na implementação
  • Garanta a qualidade do software

Estudaremos as 2 estruturas a seguir

  • Android Estrutura de teste
  • Estrutura de teste robolétrico

Android estrutura de teste

Uma das estruturas de teste padrão para Android aplicações é o Android estrutura de testes. Está bem integrada com o Android As ferramentas do SDK e sua arquitetura possuem três partes.

  1. O pacote de aplicação é a aplicação de destino que precisa ser testada.
  2. InstrumentationTestRunner é o Caso de teste Executor de testes que executa casos de teste no aplicativo de destino. Inclui:
    • Ferramentas de teste: Ferramentas SDK para criação de testes. Elas são integradas ao IDE ou executadas a partir da linha de comando.
    • Macaco Runner: Uma ferramenta que fornece APIs para escrever programas que controlam um Android dispositivo ou emulador fora de Android código.
  3. O pacote de testes é organizado em projetos de teste e segue uma convenção de nomenclatura. Se o aplicativo em teste tiver o nome de pacote “com.mydomain.myapp”, o pacote de testes deverá ser “com.mydomain.myapp.test”. O pacote de testes inclui 2 objetos:
    • Classes de casos de teste: Incluir métodos de teste a serem executados na aplicação de destino.
    • Objetos simulados: Inclui dados fictícios que serão usados ​​como entrada de amostra para casos de teste.

Android Classes de casos de teste

AndroidDiagrama de classes TestCase mostrando o JUnit e hierarquia de casos de teste de instrumentação

  1. O caso de teste inclui JUnit métodos para executar JUnit teste
  2. O TestSuite é usado para executar um conjunto de casos de teste.
  3. InstrumentationTestSuite é um conjunto de testes que injeta instrumentação em InstrumentationTestCase antes de executá-los.
  4. O InstrumentationTestRunner executa casos de teste no aplicativo de destino.
  5. AndroidTestCase estende JUnit Caso de teste com métodos para acessar recursos como o contexto da atividade.
  6. ApplicationTestCase verifica as classes do aplicativo em um ambiente controlado.
  7. O InstrumentationTestCase verifica uma funcionalidade ou comportamento específico, por exemplo, a saída da interface do usuário do aplicativo.
  8. ActivityTestCase é uma classe base que oferece suporte ao teste de atividades do aplicativo.
  9. ProviderTestCase é uma classe para testar um único ContentProvider.
  10. O ServiceTestCase testa classes de serviço em um ambiente de teste e oferece suporte ao ciclo de vida do serviço.
  11. O SingleLaunchActivityTestCase é usado para testar uma única Activity com um InstrumentationTestCase.
  12. Caso de teste da unidade de atividade É utilizado para testar uma única atividade isolada.
  13. Instrumentação de AtividadeTesteCaso2 estende o JUnit A classe TestCase conecta você ao aplicativo de destino por meio de instrumentação, permitindo que você acesse componentes da interface gráfica do usuário e envie eventos da interface do usuário, como pressionamentos de teclas ou toques na tela.

Abaixo está um exemplo de ActivityInstrumentationTestCase. Ele verifica a operação da interface do usuário de um aplicativo de calculadora e verifica a correção das saídas da interface do usuário.

Exemplo ActivityInstrumentationTestCase2 verificando a saída da interface do usuário da calculadora em Android

Estrutura de testes robolétricos

Testando usando o Android A criação e execução de testes com um dispositivo ou emulador é complexa. O processo é lento e exige muito esforço de desenvolvimento. Para solucionar esse problema, existe uma alternativa: o framework de testes Robolectric.

Robolectric permite que você execute Android Os testes são executados diretamente na JVM sem a necessidade de um dispositivo ou emulador.

Aulas de casos de teste robolétricos

O Robolectric pode executar as seguintes ações:

  • Registre-se e crie uma classe Shadow
  • Interceptar o carregamento de Android classe
  • Uso Javainsistir em sobrescrever os corpos dos métodos de Android classe
  • Vincular objeto Shadow a Android classe

Isso permite que o código em teste seja executado sem um Android ambiente.

Outras estruturas de teste

Além das estruturas de teste mencionadas acima, existem muitas outras, como:

Mitos de Android Testes

Muitas empresas desenvolvem Android Testes estratégias baseadas em equívocos comuns. Esta seção examina alguns mitos e realidades populares da Android teste.

Mito nº 1: Todos Android Os dispositivos são os mesmos, então testar em emuladores é suficiente.

Um aplicativo pode funcionar perfeitamente em emuladores, mas apresentar falhas durante a execução em alguns dispositivos reais.

Android Diálogo de erro do aplicativo exibido durante a execução em um dispositivo real.

Emuladores não são suficientes para seus testes em dispositivos móveis. Você precisa testar seu aplicativo em dispositivos reais.

Mito nº 2: Testar em alguns dispositivos comuns é suficiente.

A aparência do seu aplicativo varia de acordo com o dispositivo, pois o hardware, o tamanho da tela e a memória diferem. Teste em diversos dispositivos, versões de sistema operacional, redes de operadoras e locais.

Mito nº 3: Testes exploratórios imediatamente antes do lançamento são suficientes.

  • Na maioria dos testes, projetamos casos de teste e depois os executamos; no teste exploratório, o projeto e a execução acontecem simultaneamente.
  • Não há planejamento nem preparação, então o testador executa os testes que bem entender. Algumas funções são testadas repetidamente, enquanto outras nunca são testadas.

Mito nº 4: Se houver alguns erros no aplicativo, os usuários entenderão.

  • Se o aplicativo não funcionar e apresentar erros, os usuários irão desinstalá-lo.
  • Problemas de qualidade são o principal motivo para avaliações negativas em Google Jogar assim prejudica sua reputação e faz você perder a confiança dos clientes.

Portanto, é essencial ter um adequado Android Estratégia de testes implementada.

Melhor práticas em Android Testes

  • Os desenvolvedores de aplicativos devem criar os casos de teste ao mesmo tempo em que escrevem o código
  • Todos os casos de teste devem ser armazenados em um sistema de controle de versão, juntamente com o código-fonte.
  • Use integração contínua e execute testes sempre que o código for alterado
  • Evite depender apenas de emuladores e dispositivos com root; confirme os resultados em hardware real com um inspetor como o uiautomatorviewer

Perguntas Frequentes

Não. Os projetos modernos usam AndroidTeste X com JUnit 4 e AndroidJUnitCorredor. O JUnit As três classes de casos de teste descritas aqui foram descontinuadas na API 24 e permanecem apenas para conjuntos de testes legados.

O aprendizado de máquina corrige localizadores após uma alteração de layout, agrupa relatórios duplicados de falhas e ANRs e prevê quais testes uma alteração irá quebrar, para que um conjunto menor de testes seja executado por commit.

O Copilot gera os padrões comuns de onView e check a partir de um cenário descrito. Ele não tem como saber os identificadores ou o tempo de visualização, portanto, execute cada sugestão uma vez e ajuste os matchers primeiro.

Espresso Os testes são realizados dentro da sua própria aplicação, sendo rápidos e estáveis. O UI Automator transcende os limites da aplicação, sendo adequado para notificações, configurações e diálogos do sistema. Muitas suítes de automação utilizam ambos.

A API ActivityScenario em AndroidO teste X, geralmente realizado com uma ActivityScenarioRule, move uma atividade através de estados de ciclo de vida definidos sem estender uma classe de caso de teste obsoleta.

Comece com um celular de entrada, um de gama média e um modelo topo de linha recente, abrangendo duas ou três faixas de preço. Android versões, além de um tablet. Adicione execuções em nuvem para dispositivos antes do lançamento, em vez de comprar mais hardware.

Eles são executados na JVM da máquina de compilação com classes sombra em vez de um dispositivo real, portanto não há empacotamento, instalação ou inicialização de emulador. Isso os torna práticos em cada commit.

GoogleO conjunto atual de bibliotecas de teste. Ele inclui JUnit e extensões Truth, ActivityScenario, Espresso e o UI Automator por trás de um grupo de dependências que funciona em dispositivos, emuladores e Robolectric.

Resuma esta postagem com: