2. Globalcode – Open4education
Palestrante
Cristiano Caetano
cristiano.caetano@qualister.com.br
É certificado CBTS pela ALATS. Diretor técnico da Qualister com mais de 10 anos de
experiência, já trabalhou na área de qualidade e teste de software para grandes empresas
como Zero G, DELL e HP Invent. É colunista na área de Teste e Qualidade de software do
site linhadecodigo.com.br e autor dos livros "CVS: Controle de Versões e Desenvolvimento
Colaborativo de Software" e "Automação e Gerenciamento de Testes: Aumentando a
Produtividade com as Principais Soluções Open Source e Gratuitas". Participante ativo da
comunidade de teste de software brasileira, é o criador e mantenedor do portal TestExpert:
A sua comunidade gratuita de teste e qualidade de software (www.testexpert.com.br).
7. Globalcode – Open4education
Teste de software tradicional
Versão 1 Versão 2 Versão 3
A B A B
C
A B
C
D E
TESTES
TESTES
TESTES
DEFEITOS
REMANESCENTES
DEFEITOS
REMANESCENTES
DEFEITOS
REMANESCENTES
8. Globalcode – Open4education
Cultura predominante
No meu
computador
funcionou!
Não está
escrito no
requisito!
Ninguém pediu
para verificar
isso!
Compilou, tá
pronto!
Ninguém vai
digitar isso
nesse campo!
Esse erro não é
na tela que eu
estou
trabalhando!
Por que
testar?
Libera para o
cliente e vamos
ver o que
acontece!
9. Globalcode – Open4education
Cultura predominante
No meu
computador
funcionou!
Não está
escrito no
requisito!
Ninguém pediu
para verificar
isso!
Compilou, tá
pronto!
Ninguém vai
digitar isso
nesse campo!
Esse erro não é
na tela que eu
estou
trabalhando!
Por que
testar?
Libera para o
cliente e vamos
ver o que
acontece!
10. Globalcode – Open4education
Características do teste de software tradicional
É uma fase separada do desenvolvimento
É realizado por um equipe independente
Manual
Informal
Superficial
Enfoque apenas na interface gráfica
Ocorre no final de uma liberação ou no final do projeto
Última (ou única) peneira da qualidade
Os programadores desenvolvem e os testadores testam
Cultura: Nós X Eles
14. Globalcode – Open4education
Características do teste de software ágil
Teste faz parte do processo de desenvolvimento
Teste usado para complementar a documentação
Teste usado para compartilhar o conhecimento
Testes em todas as camadas da arquitetura (de
dentro para fora e de fora para dentro)
Os programadores testam, os testadores testam,
os usuários testam
Cultura: A qualidade é responsabilidade de todos
15. Globalcode – Open4education
Teste de software ágil
O teste para ser considerado ágil deve ser Freqüente e Automatizado
Versão 1 Versão 2 Versão 3
A B A B
C
A B
C
D E
TESTES
AUTOMATIZADOS
TESTES
AUTOMATIZADOS
TESTES
AUTOMATIZADOS
16. Globalcode – Open4education
Teste de software ágil
Por que é dado um grande enfoque em
automação de testes nas metodologias ágeis?
A automação oferece uma rede de segurança por
meio de regressões completas
A automação viabiliza ciclos curtos de entrega
A automação oferece feedback contínuo
A automação pode fazer parte de um ciclo de
integração contínua
A automação libera as pessoas para realizarem
tarefas mais criativas ao invés de terem que executar
testes manuais, enfadonhos e repetitivos
17. Globalcode – Open4education
Teste de software ágil
Grande parte práticas de teste/qualidade ágeis foram
criadas sob a perspectiva do desenvolvedor:
Testes unitários
Análise estática de código
Integração contínua
Programação em par
Refactoring
19. Globalcode – Open4education
Interface gráfica
Código/API’s
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
20. Globalcode – Open4education
Testes funcionais e de
aceitação automatizados
Testes unitários
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
21. Globalcode – Open4education
Testes unitários
Os desenvolvedores
testam
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
22. Globalcode – Open4education
Código/API: Testes unitários
http://xunitpatterns.com/Four%20Phase%20Test.html
Classe
Método(a, b, c): d
Setup
Exercise
Verify
Teardown
Mocks
24. Globalcode – Open4education
Testes funcionais
automatizados
Os testadores testam
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
27. Globalcode – Open4education
Testes de aceitação
automatizados
Os usuários testam
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
28. Globalcode – Open4education
Testes de aceitação
automatizados
Os usuários testam
Testando em camadas diferentes
Testes em todas as camadas da arquitetura (de dentro para fora e de
fora para dentro)
?
29. Globalcode – Open4education
Interface Gráfica: Keyword-Driven Tests
Testes automatizados desenvolvidos em tabelas
com o vocabulário de palavras-chave predefinidas
para as mais diversas ações ou operações de
negócio.
Tela Objeto Palavra-chave Valor
TelaDeLogin usuario digitar “Pedro”
TelaDeLogin senha digitar “1h5ks80”
TelaDeLogin botao clicar
TelaInicial Validar texto “Bem-vindo
Pedro”
31. Globalcode – Open4education
BDD
Dan North usando um utilitário chamado agiledox percebeu que os testes
unitários poderiam ser representados por meio do comportamento esperado
http://blog.objectmentor.com/articles/2008/11/27/the-truth-about-bdd
http://blog.dannorth.net/introducing-bdd/
32. Globalcode – Open4education
User Stories
– Como um (As a)
• Papel
– Eu quero (I want to)
• Ação
– Para que (So that)
• Valor/Benefício gerado pelo sistema
33. Globalcode – Open4education
Testes de aceitação
– Dado que (Given)
• Usado para determinar o estado do sistema antes da
execução do teste
– Quando (When)
• Usado para descrever as ações/interações com o sistema
(passos do teste)
– Então (Then)
• Usado para verificar o resultado esperado
35. Globalcode – Open4education
Documentação executável
Documentação executável
A convenção Given/When/Then permite a descrição do conceito de
input/process/output. Com formalidade suficiente é possível descrever os testes de
maneira que uma ferramenta possa interpretar e executá-los.
http://blog.dannorth.net/introducing-bdd/
http://en.wikipedia.org/wiki/Behavior_Driven_Development