Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Palestra sobre Desenvolvimento Orientado a Testes (TDD) em PHP utilizando o framework de testes Codeception. Apresentada no iMasters Developer Week de Belo Horizonte, ocorrido entre 26 e 28 de maio de 2015.

Pedro Chaves

May 27, 2015
Tweet

More Decks by Pedro Chaves

Other Decks in Programming

Transcript

  1. ✓ 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
  2. TDD RED GREEN REFACTOR 1. Escrever um teste que falha

    2. Escrever código que passe no teste 3. Melhorar o código
  3. ✓ 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?
  4. Testes devem ✓ …ser rápidos; ✓ …ser independentes; ✓ …ter

    foco; ✓ …evitar interação com serviços externos (HTTP, banco de dados);
  5. 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;
  6. 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;
  7. 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;
  8. Codeception ✓ Open source; ✓ Construído sobre componentes do Symfony

    e PHPUnit; ✓ É o "PHPUnit com esteróides”; ✓ Simplifica gerenciamento de suítes de teste;
  9. 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;