BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Google Espresso: Automatizando os testes de UI do Android nas nuvens

Google Espresso: Automatizando os testes de UI do Android nas nuvens

Favoritos

O Google abriu o código fonte do Espresso, um framework de testes automatizado para Android que permite executar testes em máquinas x86 na nuvem, em um ambiente multi-thread, resolvendo os problemas de concorrência associados aos testes de UI.

Executar testes em dispositivos Android reais demanda muito tempo e é muito caro, devido ao grande número e variedade de dispositivos. Uma solução é executar testes em um emulador, um ambiente controlado que suporta diversas versões do SO, resoluções de tela e restrições de memória. Essa abordagem pode ajudar a encontrar muitos bugs no código, deixando o restante para os testes em dispositivos reais e para testadores humanos.

O problema com os emuladores é o seu tempo de execução, o gargalo de executar o Android em um emulador de CPU ARM. Para resolver este problema, o Google criou uma versão do Android que executa diretamente em hardware x86 e usa aceleração da VM. Outro gargalo é o tempo de inicialização do Android, que vem sendo resolvido mediante snapshots do SO e sua execução, oferecendo assim o SO desejado e configurações das aplicações em um curto espaço de tempo. Usando esta abordagem, o Google executou 82 milhões de testes Android em março deste ano.

Comparando os testes no Nexus 4 versus um emulador, temos um acréscimo de 65% de tempo no emulador, em comparação ao dispositivo real, para finalizar a execução do teste. Deste modo, parece que um bom emulador pode resolver o problema de testes automatizados. Mas ainda há outra pedra no caminho, os testes automatizados utilizam a API Instrumentation do Android, que executa as chamadas em threads diferentes da thread de UI. Então, testar a interface de usuário de forma automática pode trazer sérios problemas de concorrência, resultando na inconsistência e insegurança nos resultados dos testes.

A solução do Google para este problema é o Espresso, um framework de testes que permite executar testes de UI de forma segura em ambientes multi-thread, e remove muito código repetitivo associado à escrita dos testes. O Espresso trabalha com vários dispositivos móveis, incluindo telefones, TVs, óculos inteligentes etc, com diferentes resoluções de tela e espaços de memória, muitas versões da API e diferentes redes. De acordo com a equipe por trás do Espresso, a solução captura cerca de 99% dos bugs no Android e aplicações, deixando apenas alguns deles para os testes em dispositivos reais e para pessoas que são testadoras, reduzindo todo o esforço de teste.

Um exemplo de teste afirmando que uma view não é exibida, com o Espresso se assemelha ao que segue:

onView(withId(R.id.bottom_left)).check(matches(not(isDisplayed())));

Outros exemplos de testes podem ser encontrados aqui.

Neste momento o Espresso está na versão Developer Preview, e é oferecido no Google Code, mas a ideia é movê-lo para o Android SDK quando estiver suficientemente maduro e estável. O Espresso é usado pelo Google para testar mais de 30 de suas próprias aplicações, incluindo: G+, Maps e Drive.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT