Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC-2014-POA
Automação de Testes de Aceitação em Sistemas Web
-
Upload
rodrigo-veiga -
Category
Technology
-
view
5.020 -
download
0
description
Transcript of Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
Rodrigo Veiga
Apresentação originalmente exibida durante a disciplina INF2134 (Mestrado PUC-Rio)
Agenda Motivação O que é um Teste de Aceitação
Histórico Tipos
Porque automatizar? Problemas enfrentados na automação Como automatizar
Ferramentas atualmente disponíveis (web) Apresentação de um exemplo web Análise de Ferramentas disponíveis
Conclusão
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB2 / 28
Motivação Área de estudo recente e pouco explorada no país.
Relação direta com a qualidade percebida pelo cliente.
Compartilhar experiências adquiridas utilizando práticas de automação.
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB3 / 28
O que é um Teste de Aceitação? Técnica para verificar a conformidade de uma
história ou funcionalidade em relação à expectativa do cliente
(User) Acceptance Test, Customer Test ou Story Test
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB4 / 28
O que é um Teste de Aceitação Histórico
Década de 1970 Testes de acessibilidade. Estudos de tolerância a falhas em software
Práticas XP Ênfase em automação desde a década de 90
Tipos existentes User Acceptance Test Contract / Regulation Acceptance Test Alpha / Beta Acceptance Test
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB5 / 28
Porque automatizar? “Testar é chato” “Ninguém gosta de testar” “Deixa o estagiário fazer…” “Ah, isso é tão fácil que nem precisa testar”
Tornar o teste mais assertivo Tornar o teste mais frequente Possibilitar fazer regressão com baixo custo direto Proporcionar Repetibilidade Maior confiabilidade no código: diminuir custo de mudanças Resposta mais rápida a falhas, mais produtividade
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB6 / 28
Problemas enfrentados Dificuldade de aprendizado. Mudança de cultura do corpo técnico. Custo de desenvolvimento imediato é alto e muitas
vezes não é aceito. Dificuldade para gerenciar a expectativa sobre os
resultados Não elimina a necessidade de testes manuais Dificuldade de aplicação em código “legado”. Quem deve fazer os casos de teste? É necessário caso
de teste? Ou o script o substitui?
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB7 / 28
Como automatizar? Idéia Básica:
Identificar critérios de aceitação para seus requisitos, formatando-os de forma a serem “executáveis”, de acordo com a ferramenta que você está trabalhando.
Ferramentas disponíveis (Plataforma Web) Arbiter, Concordion, Fit (Fitnesse), Selenium, RFT,
SilkTest, STIQ, TestComplete, Twist, Watir, WebTest, Zibreve…
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB8 / 28
Sistema Web para Exemplo “Livros On Line”
Pesquisa de Livros
Cadastro de Livros
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB9 / 28
Como automatizar? “Livros On Line”
Abordagem “Ágil”
História #1: Pesquisa de Livros Eu, usuário, quero pesquisar um livro informando o nome do
autor ou do título do livro.
Critérios de Aceitação: Um usuário entra com um valor que corresponda ao menos
a um autor ou título de algum livro cadastrado e a pesquisa exibe o mesmo no seu resultado.
Um usuário entra com um valor que não corresponda a nenhum autor ou livro cadastrado e nenhum livro é encontrado no resultado da pesquisa.
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB10 / 28
Fit/ Fitnesse O que é?
Fit “framework open-source para automação de testes de
aceitação cuja idéia principal é integrar o trabalho de clientes, analista, testadores e desenvolvedores”
Fitnesse “Um Wiki, um servidor web, uma ferramenta de testes” Facilita a entrada de dados no formato aceito pelo Fit. Ajuda a organizar os casos de teste.
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB11 / 28
Fit / Fitnesse Como funcionam
Fit: Clientes escrevem exemplos de como seu software deve funcionar,
formatados em tabelas e salvos como HTML (usando planilhas, por exemplo). Esses exemplos são então conectados com o software através das Fixtures (hotspots do framework que devem ser instanciados, um para cada teste) e checados automaticamente pelo framework
Fitnesse: complementa o Fit, facilitando a entrada das informações no formato de
tabela, através de uma interface semelhante a uma Wiki.
Instalação Fit e Fitnesse: Requerem JDK 1.5 instalado Colocar o Fit dentro do seu projeto e rodar um jar usando a jvm
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB12 / 28
Fit / Fitnesse Exemplo (Livros On Line – pesquisa)
Ou seja, se pesquisarmos por “Gabriela, Cravo e Canela”, o retorno deve ser um livro com o título mesmo título. Já se pesquisarmos por “Machado de Assis”, o retorno deve ser vazio.
A tabela executa diretamente o código a seguir (a referência é feita por nomes) Você diz para o Fitnesse onde entronar o código através de um “ClassPath”.
pacote.exemplo.PesquisaLivrosTestFixture
termoPesquisado pesquisar?
“Gabriela, Cravo e Canela”
“Gabriela, Cravo e Canela”
“Machado de Assis”
“Vidas Secas” “Vidas Secas”
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB13 / 28
Fit / Fitnesse Exemplo (Livros On Line – pesquisa)
Código
public class PesquisarLivrosTestFixture extends ColumnFixture { public String termoPesquisado;
public boolean pesquisar() { String titulo = "";
List livros = Facade.obterLivros(termoPesquisado); if (livro != null && !livro.isEmpty()) { titulo = livro.get(0).getTitulo(); } return titulo; }}
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB14 / 28
Fit / Fitnesse Linguagens de programação suportadas
Atualmente: Java, C++, Python, Ruby, Delphi, C# Extensível?
Sim Podem ser criadas novas Fixtures, facilitando a interpretação das
tabelas.
Integração Contínua? Através de outras ferramentas relacionadas (AntFit)
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB15 / 28
Selenium O que é?
Suíte de ferramentas open-source que auxiliam na execução de “testes de sistema” a partir da camada de apresentação de um sistema Web
Selenium Suite
Selenium IDE Selenium Remote Control
Selenium Grid
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB16 / 28
Selenium
ou
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB17 / 28
Selenium Instalação
Selenium IDE: Mozilla Firefox add-on Selenium Remote Control: rodar um build do pacote
na linguagem desejada Selenium Grid: rodar um build do pacote (requer jdk e
ANT) Linguagens de programação suportadas
“Selenesse”, Java, C#, Python, Ruby, Perl, PHP Integração Contínua?
Sim, usando o ANT (disponibiliza tasks para acionar o RC)
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB18 / 28
Selenium Exemplo (Livros On Line – pesquisa)
19 / 28
Selenium Exemplo (“Selenesse” ou Java)
public class NewTest extends SeleneseTestCase {public void setUp() throws Exception {setUp("http://localhost:8080/", "*chrome"); }public void testNew() throws Exception {selenium.open("/books/search");selenium.type("query", "Livro 1");selenium.click("");selenium.waitForPageToLoad("30000");verifyEquals("Livro 1", selenium.getText("livros")); }}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://selenium-ide.openqa.org/profiles/test-case"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="selenium.base" href="" /><title>New Test</title></head><body><table cellpadding="1" cellspacing="1" border="1"><thead><tr><td rowspan="1" colspan="3">New Test</td></tr></thead><tbody><tr>
<td>open</td><td>/books/search</td><td></td>
</tr><tr>
<td>type</td><td>query</td><td>Livro 1</td>
</tr><tr>
<td>clickAndWait</td><td></td><td></td>
</tr><tr>
<td>verifyText</td><td>livros</td><td>Livro 1</td>
</tr></tbody></table></body></html>
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB20 / 28
Concordion O que é?
Ferramenta open-source de teste de aceitação também baseada em colaboração entre clientes e desenvolvedores
Como funciona? Especificações são escritas em formato HTML Desenvolvedores “instrumentam” o HTML, com “comandos”
necessários para uma validação Fixtures (extensões de Junit Test Cases, não ligadas ao Fit)
processam os “comandos” presentes na especificação instrumentada
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB21 / 28
Concordion
Como funciona a ferramenta Concordion
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB22 / 28
Concordion Exemplo (Livros On Line – pesquisa)
Historia #1…Critérios de Aceitação:Um usuário entra com um valor que corresponda ao menos a um autor ou título de algum livro cadastrado e a pesquisa exibe o mesmo no seu resultado.
Um usuário entra com um valor que não corresponda a nenhum autor ou livro cadastrado e nenhum livro é encontrado no resultado da pesquisa.
<html xmlns:concordion="http://www.concordion.org/2007/concordion"> <body> <h1>Pesquisa de Livros</h1> <p> Um usuário entra com um valor que corresponda ao menos a um autor ou título de algum livro cadastrado e a pesquisa exibe o mesmo no seu resultado. </p> <p> Um usuário entra com um valor que não corresponda a nenhum autor ou livro cadastrado e nenhum livro é encontrado no resultado da pesquisa. </p> <div class="exemplo"> <h3>Exemplo</h3> <p> Nome do livro pesquisado <span concordion:execute="#result = pesquisar(#TEXT)">Livro 1</span> <span concordion:assertEquals="#result">Livro 1</span> <span concordion:execute="#result = pesquisar(#TEXT)">Livro nao cadastrado</span> <span concordion:assertEquals="#result"></span> </p> </div> </body></html>
instrumentação
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB23 / 28
Concordion Exemplo (Livros On Line – pesquisa)
Código
public class PesquisaLivrosTest extends ConcordionTestCase {
public Result pesquisar(String termo) { String titulo = "";
List livros = Facade.obterLivros(termoPesquisado); if (livro != null && !livro.isEmpty()) { titulo = livro.get(0).getTitulo(); } return titulo;
}
}
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB24 / 28
Concordion Instalação
Rodar um jar (requer jdk, junit) Linguagens de Programação suportadas
Java Integração Contínua?
Sim: através do ANT
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB25 / 28
Conclusão Fit / Fitnesse
Foco na colaboração com cliente Dificuldade para testar camada de apresentação
Selenium Gravação dos testes de forma visual (Firefox) Exige conhecimento de HTML / DOM para criar testes eficazes
Concordion Foco na colaboração com o cliente Exige um passo a mais de instrumentação, que requer conhecimento
de html e da api do Concordion Restrito a Java (por enquanto)
Perguntas?
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB26 / 28
Referência Bibliográfica Fit: http://fit.c2.com
Fitnesse; http://fitnesse.org, http://fitnesse.info
Concordion; http://www.concordion.org
Rational Functional Tester;
http://www-01.ibm.com/software/awdtools/tester/functional/
Twist; http://studios.thoughtworks.com/twist-agile-test-automation
Selenium; http://selenium.openqa.org
Selenium RC; http://selenium-rc.openqa.org
StoryTestIQ (STIQ); http://storytestiq.solutionsiq.com/wiki/Main_Page
Zibreve; http://www.zibreve.com
Arbiter; http://arbiter.sourceforge.net/
INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB27 / 28
Referência Bibliográfica Beck, K.; Test-Driven Development by Example; New York, NY: Addison-
Wesley; 2003 Mugridge R., Cunningham W.; Fit for Developing Software: Framework for
Integrated Tests: Prentice Hall; 2005 Fewster, M.; Graham, D.; Software Test Automation; Addison-Wesley; 1999 Koskela, L; Test Driven: TDD and Acceptance TDD for Java Developers;
Manning Publications; 2007 Koomen, Tim; Pol, Martin; Test Process Improvement: A step-by-step guide
to structured testing; ACM Press; 1999 Black, Rex; Pragmatic Software Testing: Becoming an Effective and
Efficient Test Professio$nal; 2007 B. Randell, System structure for software fault tolerance; ACM; 1975, Los
Angeles, CA
28 / 28INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB