automação de testes de aceitação em sistemas web

28
Automação de Testes de Aceitação em Sistemas Web Rodrigo Veiga Apresentação originalmente exibida durante a disciplina INF2134 (Mestrado PUC-Rio)

Upload: rodrigo-veiga

Post on 19-Nov-2014

5.020 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 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)

Page 2: Automação de Testes de Aceitação em Sistemas Web

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

Page 3: Automação de Testes de Aceitação em Sistemas Web

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

Page 4: Automação de Testes de Aceitação em Sistemas Web

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

Page 5: Automação de Testes de Aceitação em Sistemas Web

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

Page 6: Automação de Testes de Aceitação em Sistemas Web

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

Page 7: Automação de Testes de Aceitação em Sistemas Web

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

Page 8: Automação de Testes de Aceitação em Sistemas Web

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

Page 9: Automação de Testes de Aceitação em Sistemas Web

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

Page 10: Automação de Testes de Aceitação em Sistemas Web

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

Page 11: Automação de Testes de Aceitação em Sistemas Web

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

Page 12: Automação de Testes de Aceitação em Sistemas Web

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

Page 13: Automação de Testes de Aceitação em Sistemas Web

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

Page 14: Automação de Testes de Aceitação em Sistemas Web

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

Page 15: Automação de Testes de Aceitação em Sistemas Web

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

Page 16: Automação de Testes de Aceitação em Sistemas Web

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

Page 17: Automação de Testes de Aceitação em Sistemas Web

Selenium

ou

INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB17 / 28

Page 18: Automação de Testes de Aceitação em Sistemas Web

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

Page 19: Automação de Testes de Aceitação em Sistemas Web

Selenium Exemplo (Livros On Line – pesquisa)

19 / 28

Page 20: Automação de Testes de Aceitação em Sistemas Web

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

Page 21: Automação de Testes de Aceitação em Sistemas Web

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

Page 22: Automação de Testes de Aceitação em Sistemas Web

Concordion

Como funciona a ferramenta Concordion

INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB22 / 28

Page 23: Automação de Testes de Aceitação em Sistemas Web

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

Page 24: Automação de Testes de Aceitação em Sistemas Web

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

Page 25: Automação de Testes de Aceitação em Sistemas Web

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

Page 26: Automação de Testes de Aceitação em Sistemas Web

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

Page 27: Automação de Testes de Aceitação em Sistemas Web

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

Page 28: Automação de Testes de Aceitação em Sistemas Web

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