Padrões para Desenvolvimentode Software Guiado por Testes     Tech Talk Coquelux             Mantra      Vermelho/verde/re...
"TDD é uma forma de administrar o  medo durante a programação"Quanto mais estresse voce sentir,       menos vai testar. Qu...
Questão Porque conhecer Padrõespara TDD, o que vai ajudar?
Padrões para TDD ajudam a     responder as perguntas:- O que queremos dizer comtestar?- Quanto testamos?- Como escolhemos ...
Testes isolados "Faça testes tão rapidos de executar que    possa roda-los sozinho e roda-los             frequentemente""...
Lista de testesAntes de começar, escreva uma lista de todos os testes que sabe que tera que               escrever.Se eu c...
Teste primeiro Quando voce deveria escrever seus             testes?Antes de escrever o codigo que vai ser              te...
A asserção deve vir primeiro        (Assert first)Quando eu deveria escrever as asserções?     Escreva-as primeiro pensand...
Dados de teste      (Test data)Use dados que façam os testes    faceis de ler e seguir.A alternativa mais indicada paraDad...
Padrões de Barra Vermelhaquando e onde escreve e para de escrever testes              - One Step Test                 - St...
Teste de aprendizado    (Learning test)Quando voce escreve testes parasoftware produzido externamente?Antes da primeira ve...
Teste de regressão      (Regression test)   Qual a primeira coisa que voce faz    quando um defeito é informado?Escreva o ...
Faça de novo (Do Over)   O que voce faz quando se sente              perdido?Jogue o codigo fora e comece de novo.
Padrões de Testesão tecnicas mais detalhadas para escrever testes            - Teste filho (child test)      - Objeto simu...
Objeto Simulado (Mock         Object)  Como voce testa um objeto que se   baseia em um recurso caro ou           complicad...
String de registro (Log String) Como você testa se a sequencia em queas mensagens são chamadas esta correta?Mantenha um re...
Modelo de teste de acidentes  Como voce testa codigo de erro que  provavelmente sera pouco invocado?   Invoque-o de qualqu...
Teste quebrado   Como voce deixa uma sessão deprogramação quando esta programando             sozinho?    Deixe o ultimo t...
Padrões de Barra Verdepadrões para fazer o codigo funcionar    - Fazer de conta (Fake it)    - Triangular (Triangulate)- I...
Fazer de conta (Fake it)Qual é sua primeira implementação uma vez   que tem um teste que não funciona?  Retorne uma consta...
TriangularComo você conduz abstração com testes de       forma mais conservadora?Abstraia apenas quando tiver dois ou mais...
Padrões xUnit xUnit frameworks     - Assertion       - Fixture - Fixture externa   - Test method  - Exception test       A...
Asserção   Como voce verifica que os testes     funcionaram corretamente?  Escreva expressões booleanas queautomatizem seu...
Fixture     Como voce cria objetos comuns     necessarios para varios testes?Converta as variaveis locais nos testes em   ...
Fixture externaComo voce libera recursos externos na               fixture? Sobrescreva tearDown() e libere os            ...
Metodo de testeComo voce representa um unico caso de               teste?Como um metodo cujo nome começa com              ...
Teste de exceção    Como voce testa exceções inesperadas?   Pegue exceções esperadas e ignore-as,falhando apenas se a exce...
Todos os testes    Como rodar todos os testes juntos?Faça uma suite de todas as suites de testes,agregando os pacotes de t...
O Programador Sem Medo"São os testes de unidade que mantem seus codigos flexiveis, reutilizaveis e passiveis demanutenção....
Referencias    Test Driven Development: By        Example - Kent Beck   Clean Code - Robert C. MartinA Relação Entre TDD e...
Padrões para Desenvolvimento de Software Guiado por Testes
Upcoming SlideShare
Loading in …5
×

Padrões para Desenvolvimento de Software Guiado por Testes

880 views
794 views

Published on

Padrões para Desenvolvimento de Software Guiado por Testes.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
880
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Padrões para Desenvolvimento de Software Guiado por Testes

  1. 1. Padrões para Desenvolvimentode Software Guiado por Testes Tech Talk Coquelux Mantra Vermelho/verde/refatorar Everton Rodrigues
  2. 2. "TDD é uma forma de administrar o medo durante a programação"Quanto mais estresse voce sentir, menos vai testar. Quanto menos voce testar, mais erros vai acontecer. Quanto mais erros voce cometer, mais estresse vai sentir.
  3. 3. Questão Porque conhecer Padrõespara TDD, o que vai ajudar?
  4. 4. Padrões para TDD ajudam a responder as perguntas:- O que queremos dizer comtestar?- Quanto testamos?- Como escolhemos que logicatestar?- Como escolhemos quais dadostestar?
  5. 5. Testes isolados "Faça testes tão rapidos de executar que possa roda-los sozinho e roda-los frequentemente""Busque testes em pequena escala em vez de buscar na aplicação inteira"
  6. 6. Lista de testesAntes de começar, escreva uma lista de todos os testes que sabe que tera que escrever.Se eu conseguir pensar em um teste que pode não funcionar, faze-lo funcionar émais importante que liberar meu codigo.
  7. 7. Teste primeiro Quando voce deveria escrever seus testes?Antes de escrever o codigo que vai ser testado.
  8. 8. A asserção deve vir primeiro (Assert first)Quando eu deveria escrever as asserções? Escreva-as primeiro pensando: Qual é a resposta certa? Como eu vou verificar? Ex: assertTrue, assertEquals. testIfRunBackup, testIfExportArchive
  9. 9. Dados de teste (Test data)Use dados que façam os testes faceis de ler e seguir.A alternativa mais indicada paraDados de teste é o uso de Dados realistas.
  10. 10. Padrões de Barra Vermelhaquando e onde escreve e para de escrever testes - One Step Test - Starter Test - Explanation Test - Learning Test - Another Test - Regression Test - Break (Pausa) - Do Over (Faça de novo) - Cheap Desk, Nice Chair
  11. 11. Teste de aprendizado (Learning test)Quando voce escreve testes parasoftware produzido externamente?Antes da primeira vez que você vai usar algum componente deste pacote externo.Ex: escreva um teste que verifica se a API funciona.
  12. 12. Teste de regressão (Regression test) Qual a primeira coisa que voce faz quando um defeito é informado?Escreva o menor teste possivel que falhee que, uma vez rodado, sera refatorado.
  13. 13. Faça de novo (Do Over) O que voce faz quando se sente perdido?Jogue o codigo fora e comece de novo.
  14. 14. Padrões de Testesão tecnicas mais detalhadas para escrever testes - Teste filho (child test) - Objeto simulado (mock object) - Autodesvio (self shunt) - String de registro (log string) - Modelo de teste de acidentes - Teste quebrado (broken test) - Check-in limpo (clean check-in)
  15. 15. Objeto Simulado (Mock Object) Como voce testa um objeto que se baseia em um recurso caro ou complicado?Crie uma versão faz de conta do recurso que responde com constantes. Ex: mockar o database
  16. 16. String de registro (Log String) Como você testa se a sequencia em queas mensagens são chamadas esta correta?Mantenha um registro em um string (log) e, quando uma mensagem for chamada, acrescente-a à string. Ex: conectou selecionou alterou desconectou
  17. 17. Modelo de teste de acidentes Como voce testa codigo de erro que provavelmente sera pouco invocado? Invoque-o de qualquer forma com umobjeto especial que lança uma exceção em vez de fazer o trabalho real.Ex: testar o que acontece com o filesystem cheio
  18. 18. Teste quebrado Como voce deixa uma sessão deprogramação quando esta programando sozinho? Deixe o ultimo teste quebrado.
  19. 19. Padrões de Barra Verdepadrões para fazer o codigo funcionar - Fazer de conta (Fake it) - Triangular (Triangulate)- Implementação obvia (Obvious Implementation)- Um para muitos (One to many)
  20. 20. Fazer de conta (Fake it)Qual é sua primeira implementação uma vez que tem um teste que não funciona? Retorne uma constante. Depois de ter o teste rodando, gradualmente transforme a constante em uma expressão usando variaveis. Ex: validar CSV gerado dinamicamente
  21. 21. TriangularComo você conduz abstração com testes de forma mais conservadora?Abstraia apenas quando tiver dois ou mais exemplos. Ex: assertEquals(4, soma(1,3)) assertEquals (7, soma(3,4)) Outro exemplo?
  22. 22. Padrões xUnit xUnit frameworks - Assertion - Fixture - Fixture externa - Test method - Exception test All tests
  23. 23. Asserção Como voce verifica que os testes funcionaram corretamente? Escreva expressões booleanas queautomatizem seu julgamento sobre se o codigo funcionou ou não. Ex: assertTrue, assertFalse, assertInternalType, assertEquals Outro exemplo?
  24. 24. Fixture Como voce cria objetos comuns necessarios para varios testes?Converta as variaveis locais nos testes em variaveis de instancia. Sobrescreva setUp() e inicialize aquelas variaveis. Ex: Dados especificos no banco dados
  25. 25. Fixture externaComo voce libera recursos externos na fixture? Sobrescreva tearDown() e libere os recursos. Ex: fopen.close() Outro exemplo?
  26. 26. Metodo de testeComo voce representa um unico caso de teste?Como um metodo cujo nome começa com "test". Ex: testIfArrayGreaterThanOne(), testIsString() Outro exemplo?
  27. 27. Teste de exceção Como voce testa exceções inesperadas? Pegue exceções esperadas e ignore-as,falhando apenas se a exceção não é lançada.1. exchange->addRate("USD","GBP",2);2. function testMissingRate() { try { exchange->findRate("USD", "GBP"); fail(); //exceção lançada } catch (Exception $e) { // exception }}
  28. 28. Todos os testes Como rodar todos os testes juntos?Faça uma suite de todas as suites de testes,agregando os pacotes de testes da aplicação inteira.
  29. 29. O Programador Sem Medo"São os testes de unidade que mantem seus codigos flexiveis, reutilizaveis e passiveis demanutenção. A razão é simples. Se você tivertestes, não tera medo de alterar codigo! Sem os testes, cada modificação pode gerar umbug! Com os testes esse medo praticamente some" Robert C. Martin
  30. 30. Referencias Test Driven Development: By Example - Kent Beck Clean Code - Robert C. MartinA Relação Entre TDD e Qualidade de Software - InfoQwww.infoq.com/br/articles/relacao-tdd-qualidade

×