Robotium Tutorial: Android Framework de Teste com Exemplo

⚡ Resumo Inteligente

Robotium é um open-source Android Framework de automação de testes que controla aplicativos nativos e híbridos por meio de sua interface de usuário, permitindo que um testador crie scripts de cenários funcionais, de sistema e de aceitação que abrangem diversas áreas. Android actividades.

  • 🔘 Classe principal: Solo expõe os métodos de clique, pesquisa, arrastar e asserção que todos utilizam. Robotium chamadas de caso de teste.
  • ☑️ Compatível com caixa-preta: Os testes se vinculam aos componentes da interface do usuário em tempo de execução, portanto, é necessário um conhecimento mínimo do código-fonte do aplicativo.
  • ✅ Procedimento em quatro etapas: Elabore a especificação do teste, escreva o programa de teste, execute-o em um dispositivo e, em seguida, colete o resultado.
  • 🧪 Exemplo resolvido: Um olá completoAndroidA classe de teste verifica o texto visível, a atividade atual e o botão Iniciar.
  • 🛠️ Dois modos de execução: Execute os testes a partir da IDE ou de um terminal com o comando adb shell am instrument.
  • ⚙️ Andamento: Robotium A versão 5.6.3 continua sendo a última, portanto, novas Android Os projetos geralmente o combinam ou o substituem por Espresso.

Robotium Tutorial

O que é a Robotium?

Robotium é um Android Framework de testes que automatiza casos de teste para aplicações nativas e híbridas. Utilizando RobotiumUm desenvolvedor pode criar casos de teste de GUI automatizados e robustos para Android aplicações. Um desenvolvedor também pode escrever cenários de teste funcionais, de sistema e de aceitação que abrangem várias Android actividades.

Robotium Estrutura de teste

A norma Android A estrutura de testes apresenta as limitações listadas abaixo.

  • Incapaz de lidar com múltiplas atividades
  • O desempenho da execução do teste é lento
  • Os casos de teste são complexos e difíceis de implementar.

O Robotium A estrutura é a melhor escolha para realizar testes em um Android aplicação.

Robotium é um framework de código aberto e é considerado uma extensão do Android framework de testes. Usando RobotiumUm desenvolvedor pode criar casos de teste de GUI automatizados e robustos para Android aplicações. Além disso, um desenvolvedor pode escrever cenários de teste funcionais, de sistema e de aceitação que abrangem múltiplas aplicações. Android actividades.

A tabela abaixo resume os recursos avançados que diferenciam Robotium a partir da estrutura de instrumentação simples.

Recursos avançados de Robotium comparado com o padrão Android estrutura de instrumentação

Recursos avançados de Robotium

Robotium Classes de casos de teste

Robotium O pacote inclui um pequeno conjunto de classes para testes, e o exemplo do artigo importa o pacote legado. com.jayway.android.robotium.solo pacote. Essas classes suportam casos de teste que abrangem várias atividades, e Solo está integrado com ActivityInstrumentationTestCase2.

Observação: atual Robotium as versões expõem a mesma classe sob a versão mais curta. com.robotium.solo pacote, enquanto a coordenada do Maven permanecia com.jayway.android.robotium:robotium-soloAjuste a importação para corresponder à versão do arquivo JAR que você realmente adicionou ao projeto.

O diagrama abaixo mostra como a classe Solo se posiciona acima do caso de teste de instrumentação.

Classe Solo integrada com ActivityInstrumentationTestCase2 em um Robotium caso de teste

Integração de Robotium e ActivityInstrumentationTestCase2

Um testador pode escrever casos de teste sem conhecimento do projeto da aplicação, o que torna essa abordagem uma forma de... teste de caixa pretaEssa é uma vantagem excepcional em comparação com a planície. Android classes de casos de teste.

Como usar Robotium

Para utilizar o Robotium na sua Android Para realizar o projeto de teste, você precisa seguir os passos abaixo.

Etapas necessárias para adicionar e usar Robotium dentro de um Android projeto de teste

Como usar Robotium

Para garantir a qualidade do seu Android Para se candidatar, siga o procedimento de quatro etapas abaixo.

  • Elabore a especificação do teste.
  • Desenvolva o programa de testes.
  • Execute o caso de teste no dispositivo alvo.
  • Recolha o resultado do teste

O fluxograma abaixo coloca essas quatro etapas em ordem.

Fluxograma das quatro etapas Android procedimento de teste de aplicação

Android procedimento de teste de aplicação

ETAPA 1) Especificação de Teste de Projeto

Este é o primeiro passo para testar sua aplicação. Nesta etapa, você define o alvo a ser testado. Android A aplicação possui diversos alvos que precisam ser testados, como a interface do usuário, atividades, componentes e serviços. Definir claramente os alvos ajuda a alcançar uma ampla cobertura de testes.

  • Planeje os tipos de teste que devem ser realizados (teste unitário, teste funcional, teste de sistema).
  • Crie cada um caso de teste para cobertura máxima enquanto mantémping O número de casos de teste é pequeno. Quanto mais código você testar, maior a chance de detecção precoce de erros.

PASSO 2) Escreva o programa de teste

Esta seção orienta você na escrita de um Android programa de teste usando Android JUnit testes e RobotiumSuponha que você já tenha desenvolvido um Android programa chamado OláAndroidEste programa possui as funções descritas abaixo.

  • Exiba o texto "Olá mundo!" na tela.
  • Exibir um "Olá"Android mensagem exibida quando o usuário pressiona o botão “Iniciar”.

A captura de tela abaixo mostra o aplicativo em teste sendo executado em um dispositivo.

OláAndroid Aplicativo em teste exibindo o texto "Olá, mundo!" e o botão "Iniciar".

OláAndroid Formulário on line

Requerimentos do sistema

  • O Android A plataforma é fornecida com um sistema pré-integrado. JUnit 3 estrutura, que é o que ActivityInstrumentationTestCase2 Constrói.
  • Para criar um Android projeto de teste de EclipseSua máquina precisa de um motor funcionando. Android Instalação do SDK.
  • Instale o atual Android SDK da plataforma em vez de uma versão antiga fixada.

As capturas de tela neste guia passo a passo usam Eclipse com o plugin ADT, que era o conjunto de ferramentas padrão quando o exemplo foi escrito. Eclipse O ADT não é mais suportado, portanto, em uma máquina moderna você precisaria download Android Studio em vez disso, reutilize o mesmo código de teste dentro de um Gradle módulo.

Para o Robotium framework de testes, faça o download do Robotium biblioteca da Robotium página do projeto.

Crie uma Android Projeto de Teste

  • Clique em Arquivo -> Novo -> Outro
  • Escolha Android -> Android Teste o projeto conforme mostrado na figura abaixo e, em seguida, selecione Avançar.

Eclipse Assistente para Novo Projeto com Android Projeto de teste selecionado

Crie um novo Android projeto de teste

Escreva o nome do seu projeto de teste. De acordo com a convenção de nomenclatura, o projeto de teste deve ser chamado de “Olá”.AndroidTeste".

Eclipse diálogo com o projeto de teste chamado OláAndroidTeste seguindo a convenção de nomenclatura

Adicione o nome do projeto de teste com base na convenção de nomenclatura.

Selecione a aplicação de destino que será testada. Neste caso, é a aplicação Hello.AndroidEm seguida, clique em Concluir.

Eclipse Etapa do assistente selecionando OláAndroid como a aplicação alvo em teste

Selecione a aplicação alvo em teste.

Criar suítes de testes

Com base na sua especificação de teste, você agora cria conjuntos de testes para o seu programa de testes. Você pode escolher entre várias opções. teste de software frameworks. Este tutorial usa o padrão Android estrutura de teste ActivityInstrumentationTestCase2Para testar com Robotium, Adicione o Robotium arquivo de biblioteca para um libs diretório dentro da pasta do seu projeto.

Um caso de teste define o ambiente usado para executar vários testes. Para definir um caso de teste, siga a estrutura do programa abaixo.

  • Implemente uma subclasse de TestCase.
  • Defina variáveis ​​de instância que armazenem o estado do fixture.
  • Inicialize o estado do dispositivo sobrescrevendo o método setUp().
  • Limpe os dados após um teste sobrescrevendo o método tearDown().

O diagrama abaixo representa essa estrutura no programa de teste que você está prestes a escrever.

Estrutura de um Robotium Programa de teste mostrando a configuração, os métodos de teste e a finalização.

Estrutura do programa de teste

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Adicionando casos de teste

  • No mesmo pacote que o conjunto de testes, crie as classes TestCase.
  • Para testar uma determinada atividade, por exemplo, OláAndroid, crie um caso de teste que estenda ActivityInstrumentationTestCase2Android>.
  • Dentro dessa classe, o testador obtém a atividade em teste através do método getActivity().
  • Crie um teste para a atividade livremente, adicionando um método chamado “teste + nome do método original”.
  • Dentro do método de teste, o testador pode usar Android JUnit Funções para comparar o valor real com o valor esperado. Esses métodos são mostrados abaixo.

A tabela abaixo lista os métodos de asserção e interação mais frequentemente usados ​​nas duas estruturas.

Exemplos de métodos do Robotium Aula individual e Android estrutura de teste

Exemplos de métodos de Robotium e Android estrutura de teste

O conjunto de testes acima verifica se a interface gráfica do aplicativo exibe o texto "Olá, Mundo!" e contém um botão chamado "Iniciar".

ETAPA 3) Executar teste

Após concluir a escrita do seu programa de teste, execute-o seguindo os passos abaixo.

  • Conecte um Android Conecte o dispositivo ao seu PC ou inicie um emulador caso nenhum dispositivo físico esteja disponível.
  • Na sua IDE, clique com o botão direito do mouse no projeto de teste e escolha Executar como → Android Teste unitário.

A captura de tela abaixo mostra a execução do teste sendo iniciada a partir da IDE.

Lançando o Robotium programa de teste como um Android Teste unitário a partir da IDE

Executando o programa de teste

Além de executar o teste a partir da IDE, você pode executá-lo a partir da linha de comando. Neste programa de teste, o pacote de teste é com.example.helloandroid.testEm um terminal Linux, use o seguinte comando para executar todos os testes desse pacote.

$ adb shell am instrument -w -e package com.example.helloandroid.test

PASSO 4) Obtenha o resultado do teste

Após a execução do teste, você coleta os resultados.

Neste programa de teste, quatro métodos de teste são executados. Na execução abaixo, todos os casos de teste foram aprovados.

Resultado do teste mostrando todos os quatro Robotium casos de teste aprovados

Resultado do teste quando todos os casos de teste forem aprovados.

Se um caso de teste falhar, a saída será exibida, mostrando quais casos de teste falharam.

Lista de resultados dos testes Robotium casos de teste que falharam

Resultado do teste quando um caso de teste falha

fonte Code Exemplos

Este artigo inclui exemplos de código-fonte que ajudam você a acompanhar o tutorial com mais clareza e a assimilar os detalhes técnicos rapidamente.

Se você quer comparar Robotium Com relação às outras opções neste espaço, veja o teste de aplicativo móvel guia, o Appium tutorial e o resumo de ferramentas de teste de aplicativos móveis.

Perguntas Frequentes

Robotium A versão 5.6.3 continua sendo a última publicada e o desenvolvimento ativo foi interrompido há anos. O framework ainda funciona e o artefato ainda está disponível no Maven Central, mas novas Android projetos normalmente escolhem Espresso, o qual Google mantém.

Robotium É um framework de caixa preta que se vincula a widgets em tempo de execução e precisa de pouco conhecimento do código-fonte. Espresso is GoogleFerramenta de caixa branca que sincroniza com a thread da interface do usuário e espera acesso ao código do aplicativo.

Robotium Executa apenas uma aplicação por vez, não consegue lidar de forma confiável com Flash ou conteúdo web fora de um WebView, não oferece gravação integrada no JAR de código aberto e sua dependência de classes de instrumentação obsoletas complica a implementação moderna. Gradle constrói.

Declarar androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' no arquivo de compilação do módulo, ou remova o robotium-solo JAR para dentro libs e faça referência a ele como uma dependência de arquivo.

Sim. Travas deslizantes portáteis Robotium Os testes são testes de instrumentação comuns, portanto, o mesmo APK é executado em um emulador ou em um aparelho físico. O hardware real é preferível para verificações de gestos, sensores e desempenho, onde o tempo de resposta do emulador pode variar.

Robotium É adequado para cenários funcionais, de sistema e de aceitação do usuário no nível da interface do usuário. Não substitui os testes unitários, que são executados mais rapidamente na JVM, nem a análise mais ampla de cenários. tipos de testes de software Ainda é necessário um lançamento.

O aprendizado de máquina é usado para localizadores autorreparáveis ​​que sobrevivem a mudanças de layout, comparação visual que sinaliza regressões de renderização e detecção de testes instáveis ​​que classifica as repetições. As ferramentas reduzem a manutenção, mas um humano ainda decide qual comportamento importa.

Copiloto do GitHub Pode criar métodos de configuração, desmontagem e verificação do Solo a partir de uma classe de atividade. RevAnalise a sugestão com atenção, pois ela pode gerar importações de pacotes legados ou asserções que o aplicativo nunca satisfaz.

Resuma esta postagem com: