2. Jeveaux
Desenvolvedor Java há 7++ anos
Administrador do PortalJava e ESJUG
Palestrante-Entusiasta-Evangelista Java
Entusiasta Rails, Python e Agile
Curioso e aprendendo Erlang =)
3. | Sobre o que vamos falar
● Introdução
● Bug
● Seja profissional
● O que são testes
● Preciso de testes? Por que? Garanta-se!
● TDD
● BDD
● Conclusões
15. | Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
16.
17. | Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Testes identificam as falhas antes delas
acontecerem
22. Bugs foram os insetos
nas válvulas do Eniac...
… e são os insetos no
vidro do carro
23. Bugs foram os insetos
Nas válvulas do Eniac...
Mas também são os muitos
problemas que somente os
usuários encontrarão
… e são os insetos no
vidro do carro
24. Bugs foram os insetos
Nas válvulas do Eniac...
Mas também são os muitos
problemas que somente os
usuários encontrarão
… ou os insetos no
vidro do carro
36. Depois eu testo...
… estou sem tempo
para testar agora...
...funcionou! Não mude
mais nada agora.
37. Depois eu testo...
Programadores profissionais
… estou sem tempo
escrevem testesagora...
para testar
...funcionou! Não mude
mais nada agora.
E ponto final!
[4]
39. | O é um teste?
Um teste é uma verificação feita sobre um
código ou fragmento de código para garantir
que uma determinada entrada produza,
sempre, uma saída esperada
51. | Testes Unitários
- Testam partes isoladas da solução
- Partes do código
- Simule as dependências (Mocks,
fixtures)
- Fundamental para TDD/BDD
52. | Testes de Aceitação
- Testam histórias/funcionalidades/caso
de uso
- Envolvem uma ou mais partes da
solução
53. | Testes de Integração
- Testam a integração da solução com
agentes externos
- Pode ser feito isolado ou com a solução
completa
- Geralmente não é muito praticado
60. | Como você se garante?
Bug Encontrado
Código alterado OK
61. | Como você se garante?
Bug Encontrado
Código alterado OK
62. | Como você se garante?
Bug Encontrado
Código alterado OK
BUG
ERRO
????
63. | Garanta-se nos testes
● Aplicações cobertas por bons testes propiciam:
● Facilidade de manutenção;
● Facilidade para inclusão de novos membros no time
de desenvolvimento;
● Redução de problemas e custos nas manutenções;
64. | Garanta-se nos testes
● Aplicações cobertas por bons testes propiciam:
● Facilidade de manutenção;
● Facilidade para inclusão de novos membros no time
de desenvolvimento;
● Redução de problemas e custos nas manutenções;
● Telefone silencioso nas madrugadas!
65. | Garanta-se nos testes
Bug Encontrado
Código alterado OK
OK
OK
OK
66. | Test Driven Development
refatore
Escreva código
Escreva um
que passe
Teste
no teste
67. | TDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
[10]
68. | Behaviour Driven Development
refatore
Escreva código
Escreva um
que passe
Teste
no teste
69. | BDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
72. | Conclusões
● Testes colaboram para o aumento da qualidade
dos sistemas
● Desenvolvedores ficam mais corajosos e confiantes
ao programar
● O software cresce de forma ordenada e com
qualidade de design
● O software se adapta com mais facilidade a
mudanças
73. | Conclusões
● Demora mais?
● No início é necessário escrever muitos testes
● Depois da inércia a suite de testes está pronta e escrevem-se menos
testes
● Certeza de que a implementação está funcionando
● Maioria dos bugs encontrados em tempo de desenvolvimento
● Bugs de produção são encontrados e corrigidos com muito mais
velocidade
● Então no fim das contas demora-se muito menos tempo e com muito
mais qualidade
[10]
74. | Conclusões
TDD ou BDD?
Não importa! Faça qualquer um
desde que faça direito