Test Driven Development (TDD) Carlos Morais Desenvolvimento Dirigido por Testes
3 Leis do TDD Não implementar nada sem ter um teste falhando
3 Leis do TDD Não implementar nada sem ter um teste falhando Não escrever mais código de teste do que o suficiente para falhar
3 Leis do TDD Não implementar nada sem ter um teste falhando Não escrever mais código de teste do que o suficiente para falhar Não implementar nada além do suficiente para fazer os testes passarem
Ciclo do TDD
Testes devem ser Rápidos(Fast)
Testes devem ser Rápidos(Fast) Independentes (Independent)
Testes devem ser Rápidos(Fast) Independentes (Independent) Repetíveis (Repeatable)
Testes devem ser Rápidos(Fast) Independentes (Independent) Repetíveis (Repeatable) Auto-validáveis(Self- validating)
Testes devem ser Rápidos(Fast) Independentes (Independent) Repetíveis (Repeatable) Auto-validáveis(Self- validating) Oportunos(Timely)
Testes devem ser F Rápidos(Fast) I Independentes (Independent) R Repetíveis (Repeatable) S Auto-validáveis(Self- validating) T Oportunos(Timely)
Níveis de teste Aceitação Sistema como um todo funciona?
Níveis de teste Aceitação Sistema como um todo funciona? Integração Se comunica bem com sua vizinhança?
Níveis de teste Aceitação Sistema como um todo funciona? Integração Se comunica bem com sua vizinhança? Unidade Os objetos funcionam bem e são fáceis de manipular?
Feedback sobre qualidade
Ciclo estendido
Por que dublês? Objetos reais podem: Ser lentos
Por que dublês? Objetos reais podem: Ser lentos Gerar resultados não-determinísticos
Por que dublês? Objetos reais podem: Ser lentos Gerar resultados não-determinísticos Ter estados difíceis de reproduzir
Por que dublês? Objetos reais podem: Ser lentos Gerar resultados não-determinísticos Ter estados difíceis de reproduzir Produzir efeitos indesejáveis
Por que dublês? Objetos reais podem: Ser lentos Gerar resultados não-determinísticos Ter estados difíceis de reproduzir Produzir efeitos indesejáveis Precisar de muitas informações apenas para prepará-los para os testes
Por que dublês? Objetos reais podem: Ser lentos Gerar resultados não-determinísticos Ter estados difíceis de reproduzir Produzir efeitos indesejáveis Precisar de muitas informações apenas para prepará-los para os testes Ainda não existir
Tipos de dublê Dummy Nunca são chamados, preenchem lista de parâmetros.
Tipos de dublê Dummy Nunca são chamados, preenchem lista de parâmetros. Stub Alimenta sistema com entradas desejadas.
Tipos de dublê Dummy Nunca são chamados, preenchem lista de parâmetros. Stub Alimenta sistema com entradas desejadas. Fake Possuem implementação mais simples que objeto real.
Tipos de dublê Dummy Nunca são chamados, preenchem lista de parâmetros. Stub Alimenta sistema com entradas desejadas. Fake Possuem implementação mais simples que objeto real. Spy Proxy para objeto real que registra as chamadas.
Tipos de dublê Dummy Nunca são chamados, preenchem lista de parâmetros. Stub Alimenta sistema com entradas desejadas. Fake Possuem implementação mais simples que objeto real. Spy Proxy para objeto real que registra as chamadas. Mock Recebe expectativas e valida as chamadas recebidas.
Referências