assertTrue($tdd);
http://php5.net.br/tdd




19 de Outubro            COLAPHP - Latinoware 2011   1
Alexandre Gomes Gaigalas
http://about.me/alganet




19 de Outubro         COLAPHP - Latinoware 2011   2
Hoje você vai ver...

 ●
     Que o TDD não foi inventado, ele evoluiu
 ●
     Soluções para problemas típicos em testes
 ●
     Como convencer seu chefe




19 de Outubro        COLAPHP - Latinoware 2011   3
Hoje você vai ver...

 ●
     Que o TDD não foi inventado, ele evoluiu
 ●
     Soluções para problemas típicos em testes

 ●
     Como convencer seu chefe



19 de Outubro        COLAPHP - Latinoware 2011   4
Aquela depuração raiz...




                 var_dump($usuario);




19 de Outubro          COLAPHP - Latinoware 2011   5
Aquela depuração pé descalço...




                //var_dump($usuario);




19 de Outubro         COLAPHP - Latinoware 2011   6
Breakpoints, Watchers, etc...




19 de Outubro     COLAPHP - Latinoware 2011   7
Testes Unitários




19 de Outubro      COLAPHP - Latinoware 2011   8
Tempo gasto por um programador




                                            Desenvolvimento
                                            Testes
                                            Documentação
                                            Deploying




19 de Outubro   COLAPHP - Latinoware 2011                     9
Tempo gasto com TDD




                                                 TDD
                                                 Documentação
                                                 Deploying




19 de Outubro        COLAPHP - Latinoware 2011                  10
TDD, BDD, CI, etc...




                                                 Desenvolvimento
                                                 Documentação
                                                 Deploying




19 de Outubro        COLAPHP - Latinoware 2011                     11
Dependency Hell




19 de Outubro      COLAPHP - Latinoware 2011   12
Dependency Injection




19 de Outubro         COLAPHP - Latinoware 2011   13
Testando Dependências




19 de Outubro         COLAPHP - Latinoware 2011   14
Mocking




19 de Outubro   COLAPHP - Latinoware 2011   15
PHPunit puro vs Mockery




    http://github.com/padraic/mockery
19 de Outubro      COLAPHP - Latinoware 2011   16
Código deTestável




19 de Outubro       COLAPHP - Latinoware 2011   17
Refatoração para testabilidade




19 de Outubro   COLAPHP - Latinoware 2011   18
Organizando Responsabilidades

 ●
     Bancos de Dados
 ●
     Serviços Externos
 ●
     Sistemas de Arquivos
 ●
     Validação de Dados
 ●
     HTML e Templates



19 de Outubro       COLAPHP - Latinoware 2011   19
Validação: Antes




19 de Outubro      COLAPHP - Latinoware 2011   20
Validação: Depois




http://github.com/Respect/Validation

19 de Outubro       COLAPHP - Latinoware 2011   21
Validação: Dependency Injection




19 de Outubro   COLAPHP - Latinoware 2011   22
Validação: Testes




19 de Outubro       COLAPHP - Latinoware 2011   23
Validação: Testes Antes
 ●
     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



19 de Outubro          COLAPHP - Latinoware 2011   24
Validação: Testes Depois
 ●
     Está utilizando corretamente o validador?
 ●
     Está chamando o banco de dados?
 ●
     Fim.




19 de Outubro          COLAPHP - Latinoware 2011   25
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.



19 de Outubro       COLAPHP - Latinoware 2011   26
Hoje você viu

 ●
     Como o TDD evoluiu e continua a evoluir para
     culturas melhores
 ●
     Soluções para problemas típicos em testes

 ●
     Fortes argumentos para
     convencer seu chefe
19 de Outubro       COLAPHP - Latinoware 2011    27
Obrigado!
http://php5.net.br/tdd




19 de Outubro            COLAPHP - Latinoware 2011   28

assertTrue($tdd) - Latinoware 2011