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

2.849 visualizações

Publicada em

Publicada em: Tecnologia, Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
2.849
No SlideShare
0
A partir de incorporações
0
Número de incorporações
51
Ações
Compartilhamentos
0
Downloads
157
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Automação de Testes de Aceitação em Sistemas Web Rodrigo Veiga Apresentação originalmente exibida durante a disciplina INF2134 (Mestrado PUC-Rio)
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. Selenium ou 17 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB
  18. 18. 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
  19. 19. Selenium Exemplo (Livros On Line – pesquisa)  19 / 28
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 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 / 28 INF2134 - Teste e medição de software Automação de Testes de Aceitação em Sistemas WEB

×