1. O documento discute testes de software, incluindo testes unitários, de integração, de transição de estado, de valor limite e de caminho.
2. É apresentado o framework JUnit para testes unitários e o conceito de TDD (Desenvolvimento Dirigido por Testes).
3. São discutidos testes de aceitação, incluindo seus objetivos, como escrevê-los e a ferramenta Selenium para automação de testes.
28. Testes de aceitação
Como?
• Idealmente escritos antes do desenvolvimento
• Idealmente Automatizados
• Garantem que o código faz exatamente o que
se propõe a fazer
47. Test Suite
<html>
<head>
<title>My Application Test Suite</title>
</head>
<body>
<table>
<tr><td><b>Suite Of Tests</b></td></tr>
<tr><td><a href=quot;./TestLogin.htmlquot;>Test Login</a></td></tr>
<tr><td><a href=quot;./TestFormEntry.htmlquot;>Test Form Entry</a></td></tr>
<tr><td><a href=quot;./TestFormSave.htmlquot;>Test Form Save</a></td></tr>
</table>
</body>
</html>
48. Exercício V
Integrar Testes numa
suite de testes de aceitação
49. Exercício V
Construir testes de aceitação
Na página principal, devem haver links para outros serviços
do google: orkut, email, Imagens e Mapas
Na pagina de Busca avançada, selecionar o idioma Ingles e
buscar por “linux” deve retornar a pagina da wikipedia em
inglês como primeiro item da busca
Uma consulta que não apresenta resultados deve
apresentar uma mensagem de indicação
67. Test Cases
Qualidades
Fácil de ler
- Não há lugar para enrolação!
68. Test Cases
Qualidades
Fácil de ler
- Não há lugar para enrolação!
Rápido de encontrar o resultado esperado
- Interpretação em poucos segundos
69. Test Cases
Qualidades
Fácil de ler
- Não há lugar para enrolação!
Rápido de encontrar o resultado esperado
- Interpretação em poucos segundos
Autoexplicativos
- Não necessitam da especificação completa do sistma
70. Test Cases
Qualidades
Fácil de ler
- Não há lugar para enrolação!
Rápido de encontrar o resultado esperado
- Interpretação em poucos segundos
Autoexplicativos
- Não necessitam da especificação completa do sistma
Curtos
- Elimine todos os desperdícios!
71. Easy to Test Language
- Seja imperativo
quot;clique no botãoquot;, quot;vá ao item 1quot;
- Seja direto e simples, porém não simplório
- Use nomes exatos e consistentes para campos,
não seja genérico
- Entre 10 e 15 passos
- Siga convenções de nomes
- Se não existem convenções, CRIE-AS!!!
72. Atributos Comuns
• Identificador
• Descricao
• Prioridade
• Pre-condição
• Dependências
• Entradas
• Instruções de utilização
• Resultados esperados
• Resultado Atual
• Pós-condições
• Resultado (passou/falhou)
• Número da versao
76. Linhas Gerais
Escrever testes juntamente com os requisitos
Descrevem o atual requisito
Siga um padrão, facilite a comunicação
77. Linhas Gerais
Escrever testes juntamente com os requisitos
Descrevem o atual requisito
Siga um padrão, facilite a comunicação
Priorize seus testes por valor de negócio
78. Linhas Gerais
Escrever testes juntamente com os requisitos
Descrevem o atual requisito
Siga um padrão, facilite a comunicação
Priorize seus testes por valor de negócio
Agrupe testes por domínio
79. Linhas Gerais
Escrever testes juntamente com os requisitos
Descrevem o atual requisito
Siga um padrão, facilite a comunicação
Priorize seus testes por valor de negócio
Agrupe testes por domínio
Foque no valor! Foque no resultado!
81. Pratique!!
A prática leva à perfeição
Priorize!
Remova
desperdícios!
82. Pratique!!
A prática leva à perfeição
Priorize!
Remova
desperdícios!
Se possível,
automatize!
Seja preguiçoso!
83. Exercício VI
Sistema de Vendas
Construir testes de aceitação
para módulo Fazer Pedido
http://www.consiste.dimap.ufrn.br/~andre/casouso/
84. Exercício VI
Fazer Pedido - versão 4
Atores
Cliente
Pré-condição:
O usuário deve ter feito quot;log-inquot; e obtido autorização
do sistema
Pós-condição:
O pedido deve ter sido gravado no sistema e marcado
como confirmado.
Applying Use Cases: A Pratical Guidequot;, Geri Schneider & Jason Winters, Addison-Wesley, 1998.
85. Fazer Pedido - versão 4
Fluxo de eventos primário:
1.
O caso de uso começa quando po cliente seleciona quot;fazer pedidoquot;.
2.
O cliente fornece seu nome e endereço.
3.
Se o cliente fornece apenas o CEP, o sistema coloca automaticamente o a cidade e o
estado.
4.
Enquanto o cliente quiser pedir itens faça
1.
O cliente fornece código do produto
2.
O sistema fornece as descrição e preço do produto
3.
O sistema atualiza o valor total
5.
O cliente fornece as informações sobre cartão de crédito.
6.
O cliente submete os dados ao sistema.
7.
O sistema verifica as informações fornecidas, marca o pedido como quot;pendentequot; e envia as
informações de pagamento para o sistema de contabilidade e pagamento.
8.
Quando o pagamento é confirmado, o pedido é marcado como quot;confirmadoquot; e o número
de pedido (NP) é dado ao cliente.
Fluxo de eventos secundário:
A qualquer momento antes de submeter, o cliente pode selecionar cancelar. O pedido não é
gravado e o caso de uso termina.
No passo 7, se alguma informação estiver correta, o sistema pede ao cliente para corrigir a
informação.
Applying Use Cases: A Pratical Guidequot;, Geri Schneider & Jason Winters, Addison-Wesley, 1998.
88. Por que planejar?
Finalidade:
• Localizar e documentar defeitos na qualidade do
software.
• Avisar de forma geral sobre a qualidade
observada no software.
• Validar as suposições feitas nas especificações
de design e requisito através de demonstração
concreta.
• Validar as funções do software conforme
projetadas.
• Verificar se os requisitos foram implementados
de forma adequada.
103. Template
Interação Homem-Computador
• descrição,
• objetivos,
• métodos,
• objetos a serem testados,
• eventos a serem testados,
• verificação dos testes,
• ferramentas de teste.
104. Template
Testes Funcionais
• objetivos,
• métodos,
• funções a serem testadas,
• projeto de dados para testes,
• construção dos dados de teste,
• verficação do teste,
• ferramentas de teste
105. Template
Testes de regressão
•Objetivos
• O que não funciona mais e o que
continua funcionando na nova versão
• Dados para teste
• quais casos serão reutilizados
• Execução dos testes
• Ferramentas de teste
106. Template
Testes de desempenho
• Objetivos
• Métodos de teste
• Monousuário
• Multiusuário
• Criação dos dados de teste
• Verficação do teste
• Ferramentas de teste
107. Template
Testes de aceitação
• Objetivos
•Cenários de negócio a serem
testados
• Projeto dos casos de teste
• Métodos de teste
• Verficação do teste
• Ferramentas de teste
108. Template
Testes de Sistema
• Objetivos
• cenários de negócio a serem testados
• Projeto dos casos de teste
• Métodos de teste
• Verficação do teste
• Ferramentas de teste
110. Documentar um Bug
•
Seja preciso
•
Seja claro - explique de forma que outros
possam reproduzir o erro
•
Um bug por relatório
•
Nenhum bug é simples o suficiente para não
ser registrado
•
Separe claramente fatos de especulações
•
Um printscreen vale mais que mil parágrafos
112. Documentar um Bug
“Eu estava usando o sistema e então ele deu pau”
-> Abra o sistema e vá ao item quot;Arquivo > Novoquot;
-> Desenhe uma Reta
-> Vá até a função quot;Salvar Como...quot; e salve o arquivo
-> Tente abrir o arquivo novo
-> Verifique a mensagem de erro
125. Modelo Kano
2 Perguntas:
O que você acha de ter uma
Funcional cerveja de graça no quarto de
hotel todos os dias?
http://www.acarlos.com.br/blog/
126. Modelo Kano
2 Perguntas:
O que você acha de ter uma
Funcional cerveja de graça no quarto de
hotel todos os dias?
Chegar em um hotel que não
DysFunctional tem cerveja grátis, o que você
acha?
http://www.acarlos.com.br/blog/
127. Modelo Kano
DysFunction Question
Live with
Neutral
Expect
Dislike
Like
M - Mandatory
L - Linear
Like Q E E E L
Functional Question
E - Exciter
Expect R I I I M
Q - Questionable
Neutral R I I I M R - Reverse
I - Indifferent
Live with R I I I M
Dislike R R R R Q