Automação de Testes de Aceitação em Sistemas Web
Upcoming SlideShare
Loading in...5
×
 

Automação de Testes de Aceitação em Sistemas Web

on

  • 4,812 views

 

Statistics

Views

Total Views
4,812
Views on SlideShare
4,763
Embed Views
49

Actions

Likes
0
Downloads
135
Comments
0

1 Embed 49

http://www.slideshare.net 49

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Automação de Testes de Aceitação em Sistemas Web Automação de Testes de Aceitação em Sistemas Web Presentation Transcript

    • 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  2 / 28 INF2134 - Teste e medição de software 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. 3 / 28 INF2134 - Teste e medição de software 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 4 / 28 INF2134 - Teste e medição de software 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  5 / 28 INF2134 - Teste e medição de software 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  6 / 28 INF2134 - Teste e medição de software 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? 7 / 28 INF2134 - Teste e medição de software 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… 8 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Sistema Web para Exemplo “Livros On Line”  Cadastro de Livros Pesquisa de Livros 9 / 28 INF2134 - Teste e medição de software 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 WEB 10 / 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.  11 / 28 INF2134 - Teste e medição de software 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  12 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Fit / Fitnesse Exemplo (Livros On Line – pesquisa)  pacote.exemplo.PesquisaLivrosTestFixture termoPesquisado pesquisar? “Gabriela, Cravo e “Gabriela, Cravo e Canela” Canela” “Machado de Assis” “Vidas Secas” “Vidas Secas” 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”. 13 / 28 INF2134 - Teste e medição de software 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 = quot;quot;; List livros = Facade.obterLivros(termoPesquisado); if (livro != null && !livro.isEmpty()) { titulo = livro.get(0).getTitulo(); } return titulo; } } 14 / 28 INF2134 - Teste e medição de software 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)  15 / 28 INF2134 - Teste e medição de software 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 IDE Selenium Remote Control Selenium Suite Selenium Grid 16 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Selenium ou 17 / 28 INF2134 - Teste e medição de software 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) 18 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Selenium Exemplo (Livros On Line – pesquisa)  19 / 28
    • Selenium Exemplo (“Selenesse” ou Java)  <!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Strict//ENquot; quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtdquot;> <html xmlns=quot;http://www.w3.org/1999/xhtmlquot; xml:lang=quot;enquot; lang=quot;enquot;> <head profile=quot;http://selenium-ide.openqa.org/profiles/test-casequot;> <meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=UTF-8quot; /> <link rel=quot;selenium.basequot; href=quot;quot; /> <title>New Test</title> </head> <body> <table cellpadding=quot;1quot; cellspacing=quot;1quot; border=quot;1quot;> <thead> <tr><td rowspan=quot;1quot; colspan=quot;3quot;>New Test</td></tr> </thead><tbody> <tr> <td>open</td> public class NewTest extends SeleneseTestCase { <td>/books/search</td> public void setUp() throws Exception { <td></td> </tr> setUp(quot;http://localhost:8080/quot;, quot;*chromequot;); } <tr> public void testNew() throws Exception { <td>type</td> <td>query</td> selenium.open(quot;/books/searchquot;); <td>Livro 1</td> </tr> selenium.type(quot;queryquot;, quot;Livro 1quot;); <tr> selenium.click(quot;quot;); <td>clickAndWait</td> <td></td> selenium.waitForPageToLoad(quot;30000quot;); <td></td> verifyEquals(quot;Livro 1quot;, </tr> <tr> selenium.getText(quot;livrosquot;)); }} <td>verifyText</td> <td>livros</td> <td>Livro 1</td> </tr> </tbody></table> </body> </html> 20 / 28 INF2134 - Teste e medição de software 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 21 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Concordion Como funciona a ferramenta Concordion 22 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
    • Concordion Exemplo (Livros On Line – pesquisa)  <html xmlns:concordion=quot;http://www.concordion.org/2007/concordionquot;> Historia #1 <body> … <h1>Pesquisa de Livros</h1> <p> Critérios de Aceitação: Um usuário entra com um valor que corresponda ao menos a um Um usuário entra com um valor autor ou título de algum livro cadastrado e a pesquisa exibe o mesmo no seu resultado. que corresponda ao menos a um </p> autor ou título de algum livro <p> instrumentação Um usuário entra com um valor que não corresponda a nenhum autor ou cadastrado e a pesquisa exibe o livro cadastrado e nenhum livro é encontrado no resultado da pesquisa. mesmo no seu resultado. </p> <div class=quot;exemploquot;> <h3>Exemplo</h3> <p> Um usuário entra com um valor Nome do livro pesquisado que não corresponda a nenhum <span concordion:execute=quot;#result = pesquisar(#TEXT)quot;>Livro 1</span> autor ou livro cadastrado e <span concordion:assertEquals=quot;#resultquot;>Livro 1</span> nenhum livro é encontrado no <span concordion:execute=quot;#result = pesquisar(#TEXT)quot;>Livro nao cadastrado</span> resultado da pesquisa. <span concordion:assertEquals=quot;#resultquot;></span> </p> </div> </body> </html> 23 / 28 INF2134 - Teste e medição de software 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 = quot;quot;; List livros = Facade.obterLivros(termoPesquisado); if (livro != null && !livro.isEmpty()) { titulo = livro.get(0).getTitulo(); } return titulo; } } 24 / 28 INF2134 - Teste e medição de software 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  25 / 28 INF2134 - Teste e medição de software 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? 26 / 28 INF2134 - Teste e medição de software 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/  27 / 28 INF2134 - Teste e medição de software 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 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB