System.out.println(\"Teste\");
Jevô
Paulo César M. Jeveaux
www.jeveaux.com
www.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 detectadas
em produção
[1]
| Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
| Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
| Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Testes identificam as falhas antes delas
acontecerem
| Bug
Bugs foram os insetos
nas válvulas do Eniac...
Bugs foram os insetos
nas válvulas do Eniac...
… e são os insetos no
vidro do carro
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
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
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, escreva
um teste que o detecte
Bugs vão existir. Sempre!
Não existe engenharia perfeita
Antes de corrigir um bug, escreva
um 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 tempo
para testar agora...
Depois eu testo...
… estou sem tempo
para testar agora...
...funcionou! Não mude
mais nada agora.
Depois eu testo...
Programadores profissionais
… estou sem tempo
escrevem testesagora...
para testar
...funcionou! Não mude
mais nada agora.
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 é O teste deve ser |
- Pontual - Simples
- Finito - Conciso
- Previsível - Legível
Unidade de código
Unidade de código
Parte da
solução
Unidade de código
Parte da
solução
Escrito pelo programador
Unidade de código
Parte da
Atualizados solução
Escrito pelo programador
| 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ão
Implementados
- 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?
Bug Encontrado
Código alterado OK
| Como você se garante?
Bug Encontrado
Código alterado OK
| Como você se garante?
Bug Encontrado
Código alterado OK
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
Bug Encontrado
Código alterado OK
OK
OK
OK
| Test Driven Development
refatore
Escreva código
Escreva um
que passe
Teste
no teste
| TDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
[10]
| Behaviour Driven Development
refatore
Escreva código
Escreva um
que passe
Teste
no teste
| BDD
● Escreva o teste antes da implementação
● Escreva somente código para passar no teste
● Escreva testes pequenos
| 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 um
desde que faça direito
1 comments
Comments 1 - 1 of 1 previous next Post a comment