PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP

4,083
-1

Published on

Slides do mini de desenvolvimento orientado a testes com php no primeiro PHPHEDERAL. Julho de 2010.

Published in: Technology
2 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,083
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
2
Likes
4
Embeds 0
No embeds

No notes for slide

PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP

  1. 1. Desenvolvimento Orientado a Testes com PHP
  2. 2. PHPHEDERAL Marcelo Rodrigues Analista desenvolvedor nda Gradua Networks, em Brasília. Trabalha com internet a 10 anos. Possui experiência em desenvolvimento de sistemas web e sites baseados em PHP, especialmente em sistemas educacionais a distância. Atualmente, seu foco é a arquitetura e desenvolvimento de sistemas através do uso de metodologias de desenvolvimento ágil, com atenção especial ao TDD. [email_address] http://www.marcelomx.com http://twitter.com/marcelomx
  3. 3. PHPHEDERAL <ul><li>Conteúdo </li></ul><ul><ul><li>O que é? </li></ul></ul><ul><ul><li>Vantagens </li></ul></ul><ul><ul><li>Tipos de teste </li></ul></ul><ul><ul><li>Ferramentas de teste </li></ul></ul><ul><ul><li>Iniciando </li></ul></ul><ul><ul><li>Lidando com dependências </li></ul></ul><ul><ul><li>Refatorando </li></ul></ul><ul><ul><li>Corrigindo bugs </li></ul></ul>
  4. 4. O que é? TDD – Test-Driven Development (TDD) ou simplesmente Desenvolvimento Orientado a Testes é uma maneira diferente de escrever software. Nele, você vai evoluindo o código aos poucos, explorando o problema com o uso de testes automatizados, escritos ANTES da implementação propriamente dita. A função do teste é especificar uma regra que o software deve implementar e, validar se a regra é, de fato, implementada.
  5. 5. Vantagens Simplicidade Você só codifica o necessário para atender a especificação. Código bom é código funcional. Confiança no código Ao final de tudo, seu código estará pronto para ser usado (funcional). Os únicos testes esperados no final são testes voltados a conserto de bugs (se houverem).
  6. 6. Vantagens Documentação O teste é uma especificação, um exemplo de como funciona o software. É uma documentação natural, nunca envelhece  Refatoração ( refactoring ) Precisa refazer, apagar, melhorar alguma coisa? Refez? Apagou? Melhorou? O teste é seu amigo e ele lhe diz se tudo continua funcionando como se deseja.
  7. 7. Tipos de Teste Testes Unitários Testar uma classe e seus métodos ou funções, ou simplesmente, uma unidade de código. Nenhum recurso externo deve ser utilizado (banco de dados, recursos de rede etc). Testes Funcionais Testam as funcionalidades na visão do usuário, ou seja, a interação de fato de um usuário com uma interface visual do sistema. Exemplo: um formulário de cadastro.
  8. 8. Tipos de Teste Testes de integração Também são testes unitários, porém, sem restrições de acesso recursos externos. Geralmente, são poucos, pois são muitos específicos e geralmente são desenvolvidos levando em consideração o recurso externo utilizado. São executados esporadicamente.
  9. 9. Ferramentas <ul><li>Ferramentas para testes em PHP: </li></ul><ul><li>Testes unitários </li></ul><ul><li>PHPunit – http://www.phpunit.de </li></ul><ul><li>SimpleTest – http://www.simpletest.org </li></ul><ul><li>Testes funcionais </li></ul><ul><li>Selenium – http://seleniumhq.org </li></ul>
  10. 10. Iniciando Instalando o PHPUnit Atualmente, o PHPUnit é a ferramenta padrão do mercado para implementar os testes em PHP. Instalação via PEAR: pear channel-discover pear.phpunit.de pear channel-discover pear.symfony-project.com pear install phpunit/PHPUnit
  11. 11. Iniciando <ul><li>Criando e rodando um teste com o PHPUnit </li></ul><ul><li>Criar um arquivo <NomeDaClasse>Test.php. </li></ul><ul><li>No arquivo, criar a classe: </li></ul><ul><li>class <NomeDaClasse>Test extends PHPUnit_Framework_TestCase </li></ul><ul><li>{ </li></ul><ul><ul><li>function testDeveFazerAlgumaCoisa() { </li></ul></ul><ul><ul><li>$this->assertEquals(5, (3 + 2)); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul><ul><li>Rodando o teste, via de linha de comando: </li></ul><ul><li>phpunit <NomeDaClasse>Test </li></ul>
  12. 12. Iniciando <ul><li>Fluxo do TDD: </li></ul><ul><ul><li>Pense </li></ul></ul><ul><ul><li>Escreva o teste </li></ul></ul><ul><ul><li>Faça o teste falhar (vermelho) </li></ul></ul><ul><ul><li>Codifique </li></ul></ul><ul><ul><li>Faça o teste passar (verde) </li></ul></ul><ul><ul><li>Refatore </li></ul></ul>
  13. 13. Lidando com dependências <ul><li>Falsificação de objetos </li></ul><ul><li>Injeção de dependência </li></ul>
  14. 14. Dúvidas? Perguntas?
  15. 15. Obrigado!

×