Professional Documents
Culture Documents
This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.
2014 Chris Hartjes e Nanderson Castro
Contedo
Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Agradecimentos
Em primeiro lugar, eu gostaria de agradecer meus revisores tcnicos. Eles conseguiram pegar todos
os detalhes que passaram desapercebidos por mim e fizeram deste guia o que ele . Obrigado tambm
(sem ordem especifica) a Peter Meth, Joel Perras, Matthew Turland e Remi Woler pela ajuda de todos.
Bons guias iniciam a partir da ajuda de todos.
Em segundo lugar, eu gostaria de agradecer a todos da comunidade PHP que esto sempre levando
adiante, em alto e bom som, a importncia de se seguir as melhores prticas e contribuem para
o crescimento da mesma. Aqueles que sempre me inspiram a continuar escrevendo e falando de
assuntos que me interessam e espero que lhe interesse tambm. Eu posso me sentir, muitas vezes,
fora de sincronia com a comunidade mainstream PHP mas se o meu trabalho online e delirante
inspira outros programadores em seus trabalhos, ento sou muito grato pelo impacto que alcancei.
Finalmente, eu agradeo a minha esposa Claire por estar sempre comigo nessa minha viagem de
um programador recm-formado a um bem preparado, extremamente mal-humorado que sou hoje.
Obrigado pelas longas horas de aturao na qual um programador passa olhando para telas ao invez
de olhar para seus lindos olhos. Minha esposa minha parceira em tudo que fao.
Como sempre, seus comentrios so muito bem vindos neste guia, voc deve ter inmeras dvidas
ou apenas deseja obter meus pensamentos sobre o vasto mundo que a programao. E baseball
tambm.
Este guia foi produzido com a ajuda de incrivis pessoas na Leanpub. Minha deciso inicial ao fazer
o guia como texto com algumas marcaes AsciiDoc tornou as coisas fceis ao converte-las para o
Markdown como o Leanpub requer. Eu tambm usei Pandoc para ajuste dos trs bnus que incluir
neste guia.
Infelizmente este guia no visa o programador iniciante, escrever aplicaes testveis um coisa bem
difcil e requer uma base bem slida em programao. Este guia destinado aos programadores intermedirios que tiveram algum contato com a escrita de testes e desejam melhorar sua habilidades,
passando para um prximo nvel.
Se voc est procurar por um guia introdutrio para escrita de testes unitrios eu recomendo
fortemente o PHPUnit documentation. Ele ir cobris o bsico necessrio.
Voc pode me encontrar via email chartjes@littlehart.net e tambm no Twitter @grmpyprogrammer. Eu mantenho um blog em http://www.littlehart.net/atthekeyboard. Obrigado pelo tempo gasto
http://leanpub.com
http://www.methods.co.nz/asciidoc/
https://en.wikipedia.org/wiki/Markdown
http://johnmacfarlane.net/pandoc/
http://www.phpunit.de/manual/3.6/en/phpunit-book.html
Agradecimentos
ao analisar o guia, espero que voc possa encontrar as dicas necessrias para melhorar sua capacidade
ao criar aplicaes testveis com PHP.
ter que extrair tais coisas e coloca-las em um arquivo de configurao. A verdade que diversas
aplicaes precisam ser refatoradas antes sequer de voc poder test-las.
Neste guia irei mostrar como voc pode construir uma aplicao que facilmente testvel. claro,
ns estamos comeando do zero ento isto ser fcil mas tambm irei mostrar alternativas para
refatorao de cdigo que no sero to amigveis assim!
Em cada capitulo ns iremos abordar diferentes tpicos que iro incrementar suas habilidades
na criao de aplicaes que voc poder facilmente testar. Alguns dos problemas que voc vai
encontrar so bastante fceis de se resolver enquanto outros podem exigir algumas mudanas
intrusivas para que isso acontea.
Para ilustrar algumas, das que considero, boas prticas para criao de aplicaes facilmente
testveis, irei criar uma aplicao exemplo que utiliza muitas das dicas que eu passarei aqui. Voc
pode encontrar o cdigo da aplicao em meu Github.
Nossa aplicao companheira baseada em um website que simula uma liga de baseball. Estou
na Internet Baseball League desde 1997 e criei esta verso do site usando uma verso muito
desatualizada do CakePHP. Eu certamente pego o trabalho feito mas tenho vontade de limpar
as coisas que esto acontecendo por baixo do cap e tirar proveito de algumas caractersticas do
PHP 5.3+
Ao invs de duplicar toda a aplicao, eu extrair as partes que geram a pgina principal do site. Esta
provavelmente a parte mais complicada do site voltada para o pblico. incorporado o uso de
mltiplos models e bastante complicado o uso de templates.Um excelente candidato para realar
o valor dos testes para verificar suas funcionalidades.
Apesar de ter adquirido uma reputao ao logo dos anos como sendo um Mister Framework, ns
no usaremos nenhum framework aqui. Eu achei importante mostrar a voc que, apesar dos maiores
frameworks do mundo dos frameworks php serem mais fceis de se escrever testes para aplicaes
usando os mesmos, voc pode facilmente cobrir qualquer aplicao com testes.
Estou usando uma combinao de caractersticas e padres de projeto. Embora eu no seja viciado
em padres, eu acredito nas solues certas para os problemas certos. Vamos dar uma olhada no que
estamos usando:
https://github.com/chartjes/building-testable-applications
http://www.ibl.org
http://www.cakephp.org
http://notfornoone.com/2010/07/install-php53-homebrew-snow-leopard/
http://www.xdebug.org
http://www.php.net/apc
http://twig.sensiolabs.org
http://www.postgresql.org
http://pimple.sensiolabs.org
http://www.phparch.com/books/phparchitects-guide-to-php-design-patterns/
https://github.com/chartjes/building-testable-applications