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.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.