BT

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

por Abel Avram , traduzido por Rafael Sakurai em 06 Nov 2013 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT