Testes de Software 1 A U L A 0 3 – F E R R A M E N TA S D E A U T O M A Ç Ã O D E T E S T E S Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Conteúdo Programático – Aula 03 2 O que é automação de testes? Conceitos de automação de teste Ferramentas de Teste Principais dicas para automação Automação de testes de aceitação – EasyAccept e JUnit Automação de testes de cobertura – EmmaCoverage Ferramenta para verificação estática de código – FindBugs Considerações Finais Referências Anne Caroline O. Rocha – Tester Certified – NTI|UFPB O que é automação de testes? 3 É uma maneira de realizar testes utilizando alguma ferramenta para automatizar determinadas atividades que são realizadas manualmente. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Conceitos de automação de teste 4 Script de Teste Arquivo que compõe os passos do caso de teste a serem executados sobre o sistema. Gravador ou “Recorder” Grava na forma de uma linguagem própria passos da execução dos testes manuais. Executor de teste ou “Playback” Recurso das ferramentas para re-executar tudo o que foi gravado no script de teste. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Ferramentas de Teste 5 Ferramenta de planejamento de testes • TestLink Carga e Performance • JMeter Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Ferramenta de testes funcionais • Selenium • Badboy Ferramentas de Teste 6 Code Coverage • Emma Coverage Teste de Unidade • JUnit Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Teste de Aceitação • EasyAccept Verificação Estática • FindBugs Principais dicas para automação 7 Crie os casos de teste para depois automatizar Não pense em automatizar tudo Automatize o que é prioridade Ferramentas têm que se adaptar às novas interfaces Automação requer experiência na ferramenta Inicie a automação o quanto antes no projet Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Testes de Software 8 A U L A 0 3 – T U T O R I A L PA R A F E R R A M E N TA E A S YA C C E P T O EasyAccept 9 1. EasyAccept é uma ferramenta que ajuda a criar testes de aceitação de forma fácil e rápida. 2. Possibilita que clientes e os desenvolvedores de software possam se comunicar de forma mais clara. 3. É uma ferramenta OpenSource 4. O EasyAccept pode ser utilizado para testar sistemas em Java ou em Python. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB O EasyAccept 10 [EasyAccept,2011] Resultado do Teste Usuário Comando Façade Resultado Método Resultado Script de Teste Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Sistema a ser testado EasyAccept - Sintaxe do Script de Teste 11 Comandos: Comando sem retorno createUser userID=1 name=“Joana Mendes" birthday=4/2/1960 Comando expect expect “Joana Mendes " getUserName userID=1 Adicionar valor em uma variável Id1=getUserName userID=1 Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB EasyAccept - Sintaxe do Script de Teste 12 Comandos: Comando equalFiles c:/relatorio1.txt c:/relatorio2.txt Comando expectError expectError “Data inválida." createUser name="Joana Mendes" birthday=30/2/1960 Comando quit equalFiles Sair do EasyAccept Comentário: # no início do comando Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB EasyAccept – Tipos de dados do script 13 Tipos de dados: String – “Texto” Boolean – true, false Char - “a” Int – 1, 2… Double – 35,00 Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 1 14 1. 2. 3. 4. Abrir o Eclipse Criar um novo projeto Java Denominar “EasyAcceptProject” Clicar em Finish Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 2 15 1. 2. 3. Criar a pasta ‘lib’ Adicionar o arquivo ‘easyaccept.jar’ nesta pasta Clicar com botão direito no arquivo e escolher Build Path > Add to Build Path Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 3 16 1. 2. Criar a pasta ‘teste_aceitacao’ Adicionar o arquivo ‘us1.txt’ nesta pasta Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 4 17 1. 2. Criar o package ‘monopoly’. Criar uma Façade para o sistema denominada ‘GameFacade’. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 5 18 1. Na classe GameFacade.java, adicionar o método ‘main’ abaixo, para executar o teste do EasyAccept. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 6 19 1. Abrir o arquivo ‘us1.txt’ e verificar que todas as linhas estão comentadas. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 7 20 Abrir a classe GameFacade e executar. 1. Caso a classe esteja com erro de compilação, adicionar: I. import easyaccept.EasyAccept; Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 8 21 Após executar, o sistema abre o console com o texto: 1. I. 2. Test file teste_aceitacao/us1.txt: 0 tests OK Isso indica que nenhum teste foi executado. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 9 22 1. Abrir o arquivo ‘us1.txt’ e tirar o comentário do primeiro comando. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 10 23 Executar novamente a classe GameFacade.java. 1. 1. Desta vez o teste apresenta 1 erro. 2. Após o erro, tentar tirar o defeito do sistema, implementando o que for necessário para o teste passar. Em seguida, executar o teste e verificar se o erro foi corrigido. Se tiver, tirar o comentário do próximo comando em ‘us1.txt’ Executar novamente o teste. Seguir esta sequência de passos até o final do script. 3. 4. 5. 6. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Passo 11 24 Para que o primeiro comando passe no teste basta implementar a assinatura do método para o primeiro comando. 1. 1. Executar novamente o teste. Apenas valores primitivos ou String Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB JUnit x EmmaCoverage 25 1. 2. 3. 4. Crie o pacote teste_unidade Adicione a classe GameTest.java neste pacote Configure o Build para o JUnit3 Execute o teste de unidade via JUnit Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB JUnit x EmmaCoverage 26 Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Teste de Aceitação x Unidade 27 Verificação – Teste de Aceitação 1. O sistema faz o que o cliente espera que ele faça. Validação – Teste de Unidade 2. O sistema foi construído de forma correta. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Testes de Software 28 A U L A 0 3 – T U T O R I A L PA R A F E R R A M E N TA E M M A C O V E R A G E Executando o EmmaCoverage 29 1. 2. 3. Instalar o plugin para Eclipse do EmmaCoverage. Abrir o projeto EmmaCoverageProject no eclipse Na pasta src/teste_unidade executar a classe ‘GameTest’ usando o botão do EmmaCoverage Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o EmmaCoverage 30 1. Observar o percentual em que os testes abrangem o código. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o EmmaCoverage 31 1. Pode-se supor que não há um caso de teste para a exceção StringInvalidException. 2. Na classe GameTest, no método testCreateGame() Remover as { } Adicionar Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o EmmaCoverage 32 1. Executar a classe GameTest via o EmmaCoverage. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Testes de Software 33 A U L A 0 3 – T U T O R I A L PA R A F E R R A M E N TA F I N D B U G S FindBugs 34 É uma ferramenta para encontrar bugs em sistemas desenvolvidos em Java. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB FindBugs – Categorias dos Bugs 35 Bad Practice • Métodos deveriam iniciar com letra minúscula. • Nomes de métodos muito confusos. Correctness • Chamada de método com argumento nulo. • Método ‘equals()’ sempre retorna true. Malicious code vulnerability • Campo deveria ser protected em vez de static, pois pode ser alvo de código malicioso. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB FindBugs – Categorias dos Bugs 36 Performance Security Dodgy • Método aloca um objeto apenas para recuperar a classe do objeto. • O código acessa o BD sem usar uma senha. • Classe implementa a mesma interface da superclasse. • Campo não inicializado no construtor. Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o FindBugs 37 1. 2. 3. Instalar o plugin para Eclipse do FindBugs. Abrir o projeto FindBugsProject no eclipse Com o botão direito clicar na opção Find Bugs Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o FindBugs 38 1. Abrir o FindBugs Console 2. Abrir o ambiente do FindBugs Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o FindBugs 39 Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o FindBugs 40 1. Tirar o comentário no construtor da classe Game() 2. Executar novamente o FindBugs Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Executando o FindBugs 41 Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Referências 42 [Delamaro, 2007] Delamaro, M., Maldonado, J. C., Jino, M. “Introdução ao Teste de Software”. Ed. Elsevier, Rio de Janeiro, 2007. [GTSW] Grupo de Testadores de Software - http://gtsw.blogspot.com Acessado em Maio/2011. [Molinari, 2008] Molinari, L. “Testes Funcionais de Software”. 1ª Edição, Ed. Visual Books. Florianópolis, 2008. [Molinari, 2010] Molinari, L. “Inovação e Automação de Testes de Software”. 1ª Edição, Ed. Érica. São Paulo, 2010. [EasyAccept, 2011] Jacques Sauvé, Osório, Walfredo Cirne. EasyAccept - Ferramenta para Testes de Aceitação – Java e Python. Disponível em: http://easyaccept.sourceforge.net/ [EmmaCoverage, 2011] EmmaCoverage - Ferramenta para Testes de Cobertura – Java. Disponível em: http://emma.sourceforge.net/downloads.html [FindBugs, 2011] Bill Pugh. FindBugs - Ferramenta para Verificação Estática – Java. Disponível em: http://findbugs.sourceforge.net/downloads.html Anne Caroline O. Rocha – Tester Certified – NTI|UFPB