Upload
paulo-cesar-m-jeveaux
View
2.625
Download
5
Embed Size (px)
Citation preview
System.out.println("Teste");
JevôPaulo César M. Jeveaux
www.jeveaux.comwww.portaljava.com
Jeveaux
Desenvolvedor Java há 7++ anos
Administrador do PortalJava e ESJUG
Palestrante-Entusiasta-Evangelista Java
Entusiasta Rails, Python e Agile
Curioso e aprendendo Erlang =)
| 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
| Introdução
Desenvolvimento de software
| Introdução
Desenvolvimento de software
Falhas de Software
1/3 poderiam ser evitadas
[1]
1/3 poderiam ser evitadas
~50% são detectadasem produção
[1]
| Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
[1][2]
$$$$$$
[1][2]
$$$$$$
$$$$$$
[1][2]
60 bilhões ++prejuízo anual
$$$$$$
$$$$$$
$$$$$$
| Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
| Introdução
Desenvolvimento de softwareFalhas de SoftwareFalhas custam caro
Testes não evitam falhasTestes identificam as falhas antes delas
acontecerem
| Bug
Bugs foram os insetosnas válvulas do Eniac...
Bugs foram os insetosnas válvulas do Eniac...
… e são os insetos novidro do carro
Bugs foram os insetosNas válvulas do Eniac...
… e são os insetos novidro do carro
Mas também são os muitosproblemas que somente osusuários encontrarão
Bugs foram os insetosNas válvulas do Eniac...
… ou os insetos novidro do carro
Mas também são os muitosproblemas que somente osusuários encontrarão
Bugs vão existir. Sempre!
Bugs vão existir. Sempre!
Não existe engenharia perfeita
Bugs vão existir. Sempre!
Não existe engenharia perfeita
Antes de corrigir um bug, escrevaum teste que o detecte
Bugs vão existir. Sempre!
Não existe engenharia perfeita
Antes de corrigir um bug, escrevaum teste que o detecte
XP
???
Não esse, mas esse
Não esse, mas esse
www.extremeprogramming.org
| Garanta o que você faz seja profissional
Cliente:
Isso aqui não está funcionando!
Programador:
Mas hanm!? Aqui funciona.
Depois eu testo...
Depois eu testo...
… estou sem tempopara testar agora...
Depois eu testo...
… estou sem tempopara testar agora...
...funcionou! Não mudemais nada agora.
Depois eu testo...
… estou sem tempopara testar agora...
...funcionou! Não mudemais nada agora.
Programadores profissionaisescrevem testes
E ponto final!
[4]
| Mas o que são testes?
| 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
| O teste é
- Pontual
- Finito
- Previsível
| O teste é
- Pontual
- Finito
- Previsível
O teste deve ser |
- Simples
- Conciso
- Legível
Unidade de código
Unidade de código
Parte dasolução
Unidade de código
Parte dasolução
Escrito pelo programador
Unidade de código
Parte dasolução
Escrito pelo programador
Atualizados
Aceitação
Aceitação
Soluçãocompleta
Aceitação
Soluçãocompleta
Integração
Aceitação
Soluçãocompleta
Integração
Funcionais
Aceitação
Soluçãocompleta
Integração
Atualizados
Funcionais
| Testes Unitários
- Testam partes isoladas da solução
- Partes do código
- Simule as dependências (Mocks,
fixtures)
- Fundamental para TDD/BDD
| Testes de Aceitação
- Testam histórias/funcionalidades/caso
de uso
- Envolvem uma ou mais partes da
solução
| 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
| Mas eu preciso de testes?
SIM
SIM
Você:
- Deve verificar o código. Sempre!
- Deve garantir que os requisitos estãoImplementados
- Deve ter segurança para fazer alterar
Você:
- Precisa entregar rápido
- Precisa entregar com qualidade
- Precisa garantir a qualidade do que será entregue
| Como você se garante?
| Como você se garante?
Código alterado OK
Bug Encontrado
| Como você se garante?
Código alterado OK
Bug Encontrado
| Como você se garante?
Código alterado OK
Bug Encontrado
BUG
ERRO
????
| 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;
| 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!
| Garanta-se nos testes
Código alterado OK
Bug Encontrado
OK
OK
OK
| Test Driven Development
Escreva umTeste
Escreva códigoque passeno teste
refatore
| TDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
[10]
| Behaviour Driven Development
Escreva umTeste
Escreva códigoque passeno teste
refatore
| BDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
TDD? BDD? Copy&Paste?
TDD? BDD? Copy&Paste?
TDD
BDD
Código
Comportamento
| 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
| 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]
| Conclusões
TDD ou BDD?
Não importa! Faça qualquer umdesde que faça direito
Dúvidas?
já podem acordar
| Referências[1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm[2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd[3] - Caelum - http://blog.caelum.com.br/2006/09/08/voce-acredita-no-seu-codigo/[4] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/[5] – Marcos Pereira – http://marcospereira.wordpress.com/2007/11/27/desenvolvedores-odeiam-testar [6] – Wikipedia – http://en.wikipedia.org/wiki/Test-driven_development[7] - TDD - http://www.testdriven.com[8] - Brod - http://www.brod.com.br [9] – java.net - http://wiki.java.net/bin/view/People/SmellsToRefactorings [10] – Palestra Desenvolvimento Guiado por Testes (TDD) – Guilherme Chapiewski
System.out.println("Teste");
JevôPaulo César M. Jeveaux
www.jeveaux.comwww.portaljava.com