assertTrue($tdd)

1,566 views
1,512 views

Published on

Pra quem aprendeu o básico sobre TDD mas sente um frio na barriga ao testar as seguintes condições:

-Interações com bancos de dados
-Dependências entre objetos
-Singletons
-Classes Abstratas
-APIs externas
-Interações com variáveis de ambiente

Published in: Technology

assertTrue($tdd)

  1. 1. 1 assertTrue($tdd) Alexandre Gomes Gaigalas PHP Conference 2010 – 27 de Novembro
  2. 2. 2 AlexandreGomesGaigalas ● PHP 5 ● OOP ● REST ● Linked Data
  3. 3. 3 KingoLabs ● Coleta e Análise de Dados ● Twitter, Facebook, Foursquare, etc ● Sorteie.me, trmanager, Kingo Meter, kingo.to, rial.to, etc ● Ubuntu, PHP 5.3, MySQL, MongoDB
  4. 4. 4 Programaçãodehoje ● Tempo: Desenvolvimento Tradicional versus TDD ● OOP bem feita ● Aplicando TDD em projetos pré-existentes ● Mocking ● Refatoração
  5. 5. 5 Tempogastopeloprogramador Desenvolvimento Testes Documentação Deploying Fonte: IV Compendium of Doubtful Charts
  6. 6. 6 TempogastocomTDD TDD Documentação Deploying Fonte: IV Compendium of Doubtful Charts
  7. 7. 7 TDD+CI+AgileDocumentation TDD Documentação Deploying Fonte: IV Compendium of Doubtful Charts
  8. 8. 8 Morteaovar_dump() ● Introduz var_dump() ● Vai até o navegador ● F5, F5, F5... ● zzzzzzzZZZZZZZZ
  9. 9. 9 Morteaodepurador ● Introduz breakpoint ● Inicia o depurador ● F7,F7, F7, F7, F7... ● zzzzzzzZZZZZZZZ
  10. 10. 10 Vidalongaaostestesautomáticos
  11. 11. 11 OOPbemfeita
  12. 12. 12 EspagueteOrientadoaObjetos
  13. 13. 13 BoasPráticasemOOP ● Design Patterns + GRASP ● Dependency Injection ● Baixo Acoplamento ● Reúso ● Manutenção simples
  14. 14. 14 DependencyHell
  15. 15. 15 DependencyInjection
  16. 16. 16 Mocking
  17. 17. 17 Mocking
  18. 18. 18 Mocking:PHPUnitpurovsMockery http://github.com/padraic/mockery
  19. 19. 19 CódigodeTestável
  20. 20. 20 Refatoraçãoparatestabilidade
  21. 21. 21 OrganizandoResponsabilidades ● Interações com bancos de dados ● Chamadas para serviços externos ● Validação de dados ● HTML e Templates
  22. 22. 22 Validação:Antes
  23. 23. 23 Validação:Depois http://github.com/Respect/Validation
  24. 24. 24 Validação:DependencyInjection
  25. 25. 25 Validação:Testes
  26. 26. 26 Validação:TestesAntes ● Está checando ID inválido antes de salvar? ● Está checando as datas antes de salvar? ● Tem os atributos necessários pra salvar? ● Descrição tem o tamanho permitido pra gravar no banco? ● zzzzzzzZZZZZZZZZZZZZZZZZZZZ
  27. 27. 27 Validação:TestesDepois ● Está utilizando corretamente o validador? ● Está chamando o banco de dados? ● Fim.
  28. 28. 28 Responsabilidades ● PDO: Enviar os dados para um banco de dados. ● Validator: Checar se os dados atendem um padrão. ● UserManager: Utilizar o validador e PDO para armazenar dados consistentes dos usuários.
  29. 29. 29 TDDparaProjetosPré-Existentes ● Identificar responsabilidades ● Refatorar ● Terceirizar, se possível
  30. 30. 30 Obrigado!
  31. 31. 31 Eu,aquieali. ● http://twitter.com/alganet ● http://github.com/alganet ● http://about.me/alganet ● http://gaigalas.net ● alexandre@gaigalas.net

×