3. Quem sou eu
- Zup, CTBC, Kyros
- 9 anos de desenvolvimento de software
- 5 anos desenvolvendo com testes
automatizados, TDD, métodos ágeis
4. Definições
- Teste automatizado é um software que
executa seu código e verifica se ele funciona
como esperado
- TDD é uma maneira de se escrever testes
automatizados onde cada teste é escrito
antes de se escrever o código
7. Feedback imediato
- O código que você acabou de escrever
funciona?
- Bugs com vida curta
8. Evita regressões
- Garante que uma mudança futura não irá
quebrar o código
- Facilita a evolução do sistema
- Confiança
9. Design
- Os testes "forçam" um bom design
- É muito dificil testar um código ruim
10. Refactoring
- Melhorar/Limpar o código sem alterar o seu
comportamento
- Sem testes, refactoring é um tiro no escuro
- Sem refatoring seu software apodrece
17. Tipos de Teste
- Testes Unitarios
- Testes de Integração
- Testes de Aceitação
18. Como começar
- Problemas de DOJO
- API Rest, Aplicação Web simples
- Novas funcionalidades
- Novo projeto
- Ping pong pair programming
19. Corrigindo bugs usando
testes
1. Escreva um teste que reproduz o bug
2. Corrija o bug
3. Refatore o código para que outro bugs não
acontecam
4. Nunca mais se preocupe com esse bug
Já teve medo de mexer em um código?
Já mexeu em um código e quando foi pra produção descobriu que outra coisa nada a ver com a alteração quebrou?
Já viu uma coisa que podia ser melhorada em um código, mas não melhorou pq teve medo de quebrar alguma coisa?
Alguns programadores bem antigos dizem que já faziam TDD desde sempre, mas que 'redescobriu' a técnica foi o Kent Beck.
Com a pupularização das metodologias ágeis, TDD e testes em geral se tornaram mais conhecidos.
Na minha opinião, o Rails ajudou muito nessa popularização, porque desde as primeiras versões teve um suporte de primeira linha para testes.
Vc não precisa subir o ambiente completo pra testar o que acabou de codificar
Se o seu teste te mostra um bug, é mais facil encontrar e corrigir
Para conseguir testar um pedaço do código isoladamente ele obrigatoriamente terá que ser mais coeso e menos acoplado
O teste é o primeiro cliente o seu código
Você sabe que um software está apodrecendo quando cada nova alteração leva mais tempo para ser feita que a anterior, até chegar ao extremo de impedr qualquer nova funcionalidade
Write a test
Simplest thing that could possibly work
Remove duplication/Refactor
Make it work
Make it good
Make it fast
The key is to test the areas that you are most worried about going wrong. That way you get the most benefit for your testing effort.
– Martin Fowler, Refactoring
Médico Obstetra Hungaro que pregava que a prática de lavar as mãos antes de examinar as pacientes diminiuiria a ocorrencia de Infeção puerperal.
Isso pode parecer ridiculo hoje, mas na época não existia estudos que comprovassem a eficacia de lavar as mãos, e a maioria dos médicos discordava e não fazia. Atualmente nem se discute mais isso e lavar as mãos é uma prática comum dos médicos.
Ubcle Bob acredita que o mesmo acontecerá em relacão ao TDD e o desenvolvimeto de software.