Skip to content

Testes de integração

sergerehem edited this page Aug 13, 2012 · 9 revisions

Testes de Integração

Este tipo de teste serve para verificar o comportamento das operações que envolvem mais de um módulo. No caso do iOS queremos testar a interação entre a interface do usuário e o funcionamento interno.

Antes de realizar os testes de integração é muito importante que tenhamos testes unitários já feitos e cobrindo boa parte do código, pois queremos testar o funcionamento em macro.

Recomendo a leitura deste artigo, pois ele faz um levantamento de prós e contras de algumas alternativas de testes.

Ferramentas

Selecionamos as duas ferramentas que parecem ser as mais indicadas para uso: UIAutomation e Kif.

UIAutomation

Esta é a ferramenta da Apple, logo é a mais indicada. Ela funciona utilizando Javascript no programa Instruments;

Criamos os testes na pasta IntegrationTests/UIAutomation.

Abrimos o Instruments(pelo xcode em Xcode/Open developer tools) e escolhemos um novo projeto para iOS do tipo Automation. Selecionamos o target apontando para o caminho completo para o arquivo .app gerado pelo xcode. No meu caso ficou em:

/Users/robsonximenes/Library/Developer/Xcode/DerivedData/Quiz/Build/Products/Debug-iphonesimulator/Quiz.app

Pronto, com isto configurado devemos criar um script. Para isto basta clicar na parte de scripts em Add/Create. Clicando no script você verá na parte inferior um botão para gravar. Este botão irá iniciar o aplicativo e transformar cada ação em um código.

Depois que todas operações foram gravadas devemos refatorar o código e adicionar nossos testes.

#import "include/tune_up/tuneup.js"

var target = UIATarget.localTarget();
var app = target.frontMostApp(); 
var name = "Robgol Miserê da Bahia";
var email = "[email protected]";

test("Login", function(target, app) {
UIALogger.logMessage("Setting name");
var nameTextField = app.mainWindow().textFields()[0];
assertNotNull(nameTextField, "Couldnt find user name textField"); 
nameTextField.tap();
nameTextField.setValue(name);

UIALogger.logMessage("Setting email");
var emailTextField = app.mainWindow().textFields()[1];
assertNotNull(emailTextField, "Couldnt find email textField");
emailTextField.tap();
emailTextField.setValue(email);

UIALogger.logMessage("Submitting login data");
var loginButton = app.mainWindow().buttons()["Entrar"];
assertNotNull(loginButton, "Couldnt find login button");
loginButton.tap();

target.delay(3);

UIALogger.logMessage("Looking for user name in ranking view");
app.mainWindow().staticTexts()[name].tapWithOptions({tapOffset:{x:0.56, y:0.74}});

assertNotNull(app.mainWindow().staticTexts()[name], "Couldnt find user name");	
});

Percebam que na primeira linha há um import de um javascript. Esta biblioteca serve para facilitar a organização dos testes adicionando suporte a assertations.

Até o momento ainda não consegui integrar o Instruments com o xcode, por isso para testar é preciso abrir o Instruments e executar manualmente o teste.

Kif

Nesta ferramenta você desenvolve em Objective C, logo não há uma curva de aprendizado se for a mesma equipe de desenvolvimento e testes (o que considero o correto!). Uma grande vantagem desta ferramenta é que é possível utilizar um servidor de integração continua para executar os testes automaticamente.

Para começar vamos adicionar o projeto Kif ao nosso projeto Quiz. Utilizamos via terminal o seguinte script:

cd /path/to/Quiz
mkdir IntegrationTests/Kif
git clone https://github.com/square/KIF.git IntegrationTests/Kif

Já com o projeto baixado dentro do diretório indicado, navegue pelo Finder e arraste o KIF.xcodeproj para dentro do seu projeto no xcode.

Para executar os testes devemos criar um novo target apenas duplicando o target principal e o renomeando para Kif Integration Tests.

Agora vamos editar este target para que ele tenha referência do aplicativo e que utilize os recursos do Kif.

Para adicionar a biblioteca do Kif no build do app faça o seguinte:

Selecione o novo target depois vá na aba "Build Phases". Procure a seção "Link Binary With Libraries", e clique no botão "+". Selecione "libKIF.a" e clique em "Add".

....

Referências:

Clone this wiki locally