Testes de Software - nti.ufpb.brcaroline/curso/Aula03-Curso de Testes de Software... · Testes de...
Transcript of Testes de Software - nti.ufpb.brcaroline/curso/Aula03-Curso de Testes de Software... · Testes de...
Testes de Software1
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
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
� 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
O que é automação de testes?
3
É uma maneira de realizar testes utilizando alguma ferramenta para
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
utilizando alguma ferramenta para automatizar determinadas
atividades que são realizadas manualmente.
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”
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
� 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.
Ferramentas de Teste
5
Ferramenta de planejamento de
testes
Carga e Performance
Ferramenta de testes funcionais
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
• TestLink • JMeter • Selenium
• Badboy
Ferramentas de Teste
6
Code Coverage
• Emma
Teste de Unidade
• JUnit
Teste de Aceitação
• EasyAccept
Verificação Estática
• FindBugs
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
• Emma Coverage
• JUnit • EasyAccept • FindBugs
Principais dicas para automação
7
Crie os casos de teste para depois
automatizar
Não pense em automatizar tudo
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
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
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.
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
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.
O EasyAccept
10
Usuário
Resultado do Teste
Comando
[EasyAccept,2011]
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Façade
Sistema a ser testado
Usuário
Script de Teste
Comando
Método
Resultado
Resultado
EasyAccept - Sintaxe do Script de Teste
11
� Comandos:
� Comando sem retorno
� createUser userID=1 name=“Joana Mendes" birthday=4/2/1960
� Comando expect
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
� Comando expect
� expect “Joana Mendes " getUserName userID=1
� Adicionar valor em uma variável
� Id1=getUserName userID=1
EasyAccept - Sintaxe do Script de Teste
12
� Comandos:� Comando equalFiles
� equalFiles c:/relatorio1.txt c:/relatorio2.txt
� Comando expectErrorexpectError “Data inválida." createUser name="Joana Mendes"
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
� expectError “Data inválida." createUser name="Joana Mendes" birthday=30/2/1960
� Comando quit� Sair do EasyAccept
� Comentário: # no início do comando
EasyAccept – Tipos de dados do script
13
� Tipos de dados:
� String – “Texto”
� Boolean – true, false
� Char - “a”
� Int – 1, 2…
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
� Int – 1, 2…
� Double – 35,00
Passo 1
14
1. Abrir o Eclipse
2. Criar um novo projeto Java
3. Denominar “EasyAcceptProject”
4. Clicar em Finish
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Passo 2
15
1. Criar a pasta ‘lib’
2. Adicionar o arquivo ‘easyaccept.jar’ nesta pasta
3. 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. Criar a pasta ‘teste_aceitacao’
2. Adicionar o arquivo ‘us1.txt’ nesta pasta
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Passo 4
17
1. Criar o package ‘monopoly’.
2. 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
1. Abrir a classe GameFacade e executar.
I. Caso a classe esteja com erro de compilação, adicionar:
� import easyaccept.EasyAccept;
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Passo 8
21
1. Após executar, o sistema abre o console com o texto:
I. Test file teste_aceitacao/us1.txt: 0 tests OK
2. 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
1. Executar novamente a classe GameFacade.java.
1. Desta vez o teste apresenta 1 erro.
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
2. Após o erro, tentar tirar o defeito do sistema, implementando o que for necessário para o teste passar.
3. Em seguida, executar o teste e verificar se o erro foi corrigido.
4. Se tiver, tirar o comentário do próximo comando em ‘us1.txt’
5. Executar novamente o teste.
6. Seguir esta sequência de passos até o final do script.
Passo 11
24
1. Para que o primeiro comando passe no teste basta implementar a assinatura do método para o primeiro comando.
1. Executar novamente o teste.
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Apenas valores primitivos ou String
JUnit x EmmaCoverage
25
1. Crie o pacote teste_unidade
2. Adicione a classe GameTest.java neste pacote
3. Configure o Build para o JUnit3
4. Execute o teste de unidade via JUnit
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Teste de Aceitação x Unidade
27
1. Verificação – Teste de Aceitação
� O sistema faz o que o cliente espera que ele faça.
2. Validação – Teste de Unidade
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
2. Validação – Teste de Unidade
� O sistema foi construído de forma correta.
28
Testes de Software
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. Instalar o plugin para Eclipse do EmmaCoverage.
2. Abrir o projeto EmmaCoverageProject no eclipse
3. 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()
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
2. Na classe GameTest, no método testCreateGame()
Remover as { }
Adicionar
Executando o EmmaCoverage
32
1. Executar a classe GameTest via o EmmaCoverage.
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
FindBugs
34
É uma ferramenta para encontrar bugs em
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
É uma ferramenta para encontrar bugs em sistemas desenvolvidos em Java.
FindBugs – Categorias dos Bugs
35
• Métodos deveriam iniciar com letra minúscula.
• Nomes de métodos muito confusos.Bad Practice
• Chamada de método com argumento nulo.
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
• Chamada de método com argumento nulo.
• Método ‘equals()’ sempre retorna true.Correctness
• Campo deveria ser protected em vez de static, pois pode ser alvo de código malicioso.
Malicious codevulnerability
FindBugs – Categorias dos Bugs
36
• Método aloca um objeto apenas para recuperar a classe do objeto.
Performance
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
• O código acessa o BD sem usar uma senha.Security
• Classe implementa a mesma interface da superclasse.
• Campo não inicializado no construtor.Dodgy
Executando o FindBugs
37
1. Instalar o pluginpara Eclipse do FindBugs.
2. Abrir o projeto FindBugsProject
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
FindBugsProjectno eclipse
3. Com o botão direito clicar na opção Find Bugs
Executando o FindBugs
38
1. Abrir o FindBugs Console
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
2. Abrir o ambiente do FindBugs
Executando o FindBugs
40
1. Tirar o comentário no construtor da classe Game()
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
2. Executar novamente o FindBugs
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,
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
� [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