Blog > Introdução ao Robotium

28/jul

Existem diversos frameworks de automação para Android. Entre os que estão em destaque existe o Robotium que tem uma API muito clara e objetiva, além de proporcionar a criação e execução de testes quando possuímos ou não acesso ao código-fonte da aplicação. Neste artigo aprenderemos em que consiste este framework e pequenos exemplos de código.

O que é Robotium?

É um framework de automação de teste para a plataforma Android que suporta aplicações híbridas e nativas.

Tem seu foco em testes Black Box para Android onde qualquer testador, sem o conhecimento internos dos elementos, pode escrever scripts automatizados para testes funcionais e aceitação. Ele também faz testes White Box.

Para entendermos melhor como ele funciona e como podemos utilizá-lo, vamos aprender primeiro sobre White e Black Box Testing com o Robotium. Mas antes disso vamos ver o que ele suporta.

Aderência do Robotium para aplicações Android

Suporte a API

O suporte inicial do Robotium para aplicações Android é da API 8 em diante, ou seja, qualquer app desenvolvida em versões anteriores a esta API não será aderente. Para conhecer as diferentes versões de API consulte este link.

JUnit

O Android Test Framework suporta JUnit3, e com Robotium a mesma versão é mantida. Isso em parte é ruim porque não nos traz facilidades como a do Data Driven através da anotação @Parameters do JUnit4.

Há um projeto experimental chamado Robotium Remote Control que suporta JUnit4.

Instalação e configuração

Não é necessário fazer uma instalação do Robotium. Ele é um arquivo .jar que deve ser colocado no classpath da aplicação, através do Maven ou baixando e adicionando o arquivo .jar na sua IDE de desenvolvimento favorita.

Consigo executar os testes em dispositivos virtuais (AVD) e reais?

Sim. Tanto dispositivos reais quanto virtuais podem ser utilizados para a execução dos testes, sendo os dispositivos reais mais rápidos nesta execução.

Em dispositivos reais nenhuma configuração é necessária (como root, por exemplo), o Robotium faz todo o trabalho de instalação/atualização/remoção da app no dispositivo.

É possível acessar o painel de controle ou configurações do Android?

Não. Itens como GPS, WI-FI, 3G não podem ser automatizados pelo Robotium. Há outras formas de poder ligar/desligar estes recursos externamente.

Com o Robotium é possível...

  • Estar aplicações Android nativas e híbridas
  • Requer um mínimo de conhecimento da app alvo dos testes
  • Trabalhar com múltiplas apps automaticamente
  • Escrever scripts automatizados de forma rápida
  • Entender melhor o scripts automatizado, uma vez que dispõe de comandos mas legíveis
  • Execução mais rápida em comparação com o Android Testing Framework
  • Integrar o código com ferramentas de build como Maven, Gradle ou Ant para execução em integração contínua

Funcionalidades “extras”

O Robotium possui, fora a interação com os elementos/componentes Android, outras funcionalidades:

  • Captura de Screenshot: isso só pode ser feito se existir uma permissão de escrita no app alvo dos testes e, se o dispositivo for virtual, possuir um SDCard montado. As screenshots ficarão na pasta /srcard/Robotium-Screenshots
  • Suporte a aplicações híbridas: desde a versão 4.0 do Robotium é possível interagir com elementos web (dentro de WebvViews).
  • Testes em aplicativos pré-instalados: é possível testes aplicativos que já estejam instalados na plataforma Android. Isso é comum em ROMs customizada. Para tal é necessário que o smartphone esteja em root (desbloqueado)

Antes do White e Black Box Testing com o Robotium

Toda aplicação mobile inicia numa tela certo? E é nesta tela que também iniciaremos a automação com o Robotium. Só que é necessário 3 passos para iniciarmos:

  • O script de teste (classe) deve estender ActivityInstrumentationTestCase2 "tipando" a Main Activity
  • Criar um construtor dando um super na Main Activity
  • Instanciar o Robotium como pré-condição (setup) passando a instrumentação e activity
  • Fechar todas as telas (activities) como pós condição (tearDown)

Isso é uma receita de bolo para ambos os métodos: White ou BlackBox Testing

White Box Testing com Robotium

Os testes tipo White Box no Robotium são aqueles em que temos acesso ao código-fonte. O projeto de teste automatizado no Android, um Android Test Project, é ligado diretamente ao projeto da app. Isso nos dá acesso aos IDs internos de cada elemento.

Primeiro é necessário saber qual o ID do elemento que iremos interagir. Como no White Box precisamos ter acesso ao código-fonte da app, basta abrir a activity (tela) e visualizar o seu ID.

No código abaixo mostra a a interação com uma caixa de texto, onde a mesma é localizada pelo ID interno (como mostra a imagem anterior), garantindo que é aquela caixa de texto que iremos preencher.

Em diversos métodos do Robotium é possível passar como parâmetro o elemento da app.

Black Box Testing com Robotium

A diferença em relação ao White-Box Testing é que não temos o acesso ao código-fonte da aplicação. Logo é necessário uma série de ações para efetuar este tipo de teste:

  • Instalar o .apk (aplicação) no dispositivo real ou virtual (avd)
  • Assinar a app em mode debug
  • Descobrir o pacote + classe principal (Main Activity)
  • Iniciar a app de forma estática carregando a Main Activity

Neste caso, como não termos o acesso ao código-fonte o Robotium dispõe de métodos para encontrar o elemento em forma posicional.

Este método não é em relação as coordenadas X e Y da tela, e sim pela quantidade de elementos na tela para aquela interação.

Exemplo: Na tela abaixo temos 3 campos tipo EditText (caixa de texto)

Para interagir com eles é adotada a seguinte forma: o primeiro elemento deste tipo na tela tem como identificador o número zero (0), o segundo um (1) e o terceiro três (3), pois a contagem do Robotium inicia em zero.

Com isso basta passar como parâmetro, na função enterText, a posição do elemento que iremos preencher.

Conclusão

Neste artigo explicamos um pouco o que é o Robotium e como criar testes de duas formas: com ou sem acesso ao código-fonte. Visualizamos que o código é muito simples e claro, facilitando o entendimento e diminuindo a curva de aprendizado para automatizar aplicações Android.

POSTS RELACIONADOS

AGENDA

CURSOS RELACIONADOS