Facilitando o desenvolvimento
orientado a testes em aplicações PHP
Pedro Chaves
✓ Desenvolvedor web desde 2007;

✓ PHP, Python e JavaScript;

✓ Qualidade de código e performance;

✓ 4 anos na Studio Sol, nos times do Cifra
Club e Palco MP3;

✓ Organizador e ativista do PHP-MG;

✓ Desenvolvedor full-stack na Planet Expat;
Pedro Chaves
TDD
RED
GREENREFACTOR
1. Escrever um
teste que falha
2. Escrever
código que
passe no teste
3. Melhorar o
código
✓ Melhora o design da aplicação;

✓ Garantia de que o código atende sua especificação;

✓ Evita regressão de bugs;

✓ Facilita refatoração de código;

✓ Documentação extra;
Por que TDD?
Testes devem
✓ …ser rápidos;

✓ …ser independentes;

✓ …ter foco;

✓ …evitar interação com serviços externos (HTTP, banco de dados);
Testes unitários
✓ Testam uma unidade de código (uma classe, uma função);

✓ Não interagem com outras unidades, mas podem interagir com
outros sistemas;
✓ São as peças do nosso LEGO;

✓ São testes de caixa branca;
Testes funcionais
✓ São testes em relação à especificação do sistema;

✓ Verificam se um pedaço do sistema funciona;

✓ Descrevem o que o sistema faz;

✓ São testes de caixa branca;
Testes de aceitação
✓ Verifica se o software funciona como o esperado…

✓ …mas com o ponto de vista do usuário;

✓ São testes de caixa preta;
E quem disse que não dá pra fazer isso
tudo com PHP?
Codeception
✓ Open source;

✓ Construído sobre componentes do Symfony e PHPUnit;

✓ É o "PHPUnit com esteróides”;

✓ Simplifica gerenciamento de suítes de teste;
Codeception
✓ Altamente extensível;

✓ Possui módulos integrando várias bibliotecas e frameworks;

✓ Permite Behaviour Driven Design;

✓ Permite simulação de objetos através de mocking e stubs;
Hora da demonstração!
Desenvolvimento Orientado a Testes
não é fácil, mas a ferramenta certa
pode ajudar a facilitar o processo.
Obrigado!
github.com/pedrochaves/tdd-developer-week
slideshare.net/pedrochaves_

Facilitando o desenvolvimento orientado a testes em aplicações PHP