SlideShare une entreprise Scribd logo
1  sur  58
Ferramentas e Práticas
*
iMasters InterCon Dev +WordPress – jun/2013
* Ricardo Moraleida
* Desenvolvedor faz-tudo
* Entusiasta do WordPress
* Voluntário nos Fórums de Suporte
* Membro da Comunidade wp-brasil.org
*http://profiles.wordpress.org/moraleidame
*http://br.forums.wordpress.org/profile/moraleidame
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
*Testes de alto nível em relação ao sistema.
*Também conhecidos como teste de caixa-preta
*Testes usando o navegador para saber se o
sistema se comporta como deveria.
iMasters InterCon Dev +WordPress – jun/2013
*
* Encontram erros tarde demais
* Podem esconder os erros numa cadeia de
funções/métodos difícil de encontrar.
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
* Testes automatizados
* Desenhados para rodar todos de uma vez só
* Testando as menores unidades possíveis do
sistema
* Garantindo que cada micro-unidade se
comporta como esperado
iMasters InterCon Dev +WordPress – jun/2013
*
*Desenvolvimento Guiado por Testes (TDD)
Passos:
1) Escrever um teste rápido, que vai falhar
2) Escrever um método que faça o teste passar
3) Refatorar o método para eliminar a repetição
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
*Antes de começar:
*PHPUnit (https://github.com/sebastianbergmann/phpunit)
* Instalação via PEAR ou PHAR
*SVN (https://unit-tests.svn.wordpress.org/trunk)
* Cliente SVN: TortoiseSVN (http://www.tortoisesvn.net/)
* Instruções
(http://make.wordpress.org/core/handbook/automated-testing/)
iMasters InterCon Dev +WordPress – jun/2013
*
*Rodando os testes:
* Via linha de comando:
iMasters InterCon Dev +WordPress – jun/2013
*
*Rodando os testes:
* Direto no SublimeText 2
*(https://github.com/stuartherbert/sublime-phpunit)
iMasters InterCon Dev +WordPress – jun/2013
*
* Teste com falha:
iMasters InterCon Dev +WordPress – jun/2013
*
* Teste com falha:
Descrição completa da falha
(Retornou false mas esperava um array)
Localização exata do teste que falhou
Classe::método do teste que falhou
iMasters InterCon Dev +WordPress – jun/2013
*
* Teste com sucesso:
Descrição completa da falha
iMasters InterCon Dev +WordPress – jun/2013
*
* O WP tem uma suíte de testes construídos sobre o
framework PHPUnit
* São usados para testar o código base do sistema (core)
* O pacote pode ser estendido para testar temas e plugins
iMasters InterCon Dev +WordPress – jun/2013
*
* Testes específicos do WP
* Pasta de testes do sistema
* Instalação
* Config
iMasters InterCon Dev +WordPress – jun/2013
*
*wp-tests-config.php
*Crie um BD
exclusivo para
os testes!
iMasters InterCon Dev +WordPress – jun/2013
*
Pasta de testes Pasta do plugin
iMasters InterCon Dev +WordPress – jun/2013
*
phpunit.xml
iMasters InterCon Dev +WordPress – jun/2013
*
testes/bootstrap.php
iMasters InterCon Dev +WordPress – jun/2013
*
* Plugin:
iMasters InterCon Dev +WordPress – jun/2013
*
* 1º teste:
iMasters InterCon Dev +WordPress – jun/2013
*
* 1º teste:
iMasters InterCon Dev +WordPress – jun/2013
*
* Plugin:
iMasters InterCon Dev +WordPress – jun/2013
*
* 1º teste:
iMasters InterCon Dev +WordPress – jun/2013
*
* 1º teste:
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
http://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-
for-phpunit.assertions
* assertArrayHasKey()
* assertClassHasAttribute()
* assertClassHasStaticAttribute
()
* assertContains()
* assertContainsOnly()
* assertCount()
* assertEmpty()
* assertEqualXMLStructure()
* assertEquals()
* assertFalse()
* assertFileEquals()
* assertFileExists()
* assertGreaterThan()
* assertGreaterThanOrEqual()
* assertInstanceOf()
* assertInternalType()
* assertLessThan()
* assertLessThanOrEqual()
* assertNull()
* assertObjectHasAttribute()
* assertRegExp()
* assertStringMatchesFormat()
* assertStringMatchesFormatFil
e()
* assertSame()
* assertSelectCount()
* assertSelectEquals()
* assertSelectRegExp()
* assertStringEndsWith()
* assertStringEqualsFile()
* assertStringStartsWith()
* assertTag()
* assertThat()
* assertTrue()
* assertXmlFileEqualsXmlFile()
* assertXmlStringEqualsXmlFile
()
* assertXmlStringEqualsXmlStri
ng()
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
*Utilização
*Cria dois usuários, um contributor e um editor, e
marca o atual.
iMasters InterCon Dev +WordPress – jun/2013
*
*O que pode ser criado?
*$post
*$attachment
*$comment
*$user
*$term
*$category
*$tag
*$blog
iMasters InterCon Dev +WordPress – jun/2013
*
*create_and_get()
*create_many()
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013 *
iMasters InterCon Dev +WordPress – jun/2013 *
Formatos de retorno
iMasters InterCon Dev +WordPress – jun/2013 *
Modificação via filtro
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
iMasters InterCon Dev +WordPress – jun/2013
*
* Vale a pena criar unit tests para temas?
* Nem sempre.
iMasters InterCon Dev +WordPress – jun/2013
*
* Vale a pena criar unit tests para temas?
* Nem sempre.
*Aliás, quase nunca.
iMasters InterCon Dev +WordPress – jun/2013
*
* Vale a pena criar unit tests para temas?
* Nem sempre.
*Aliás, quase nunca.
Tema vs. Plugins
* se a funcionalidade é muito especifica e não tem a ver
com o layout, faça um plugin.
iMasters InterCon Dev +WordPress – jun/2013
*
* Faça testes de aceitação:
* Theme Unit Test
(http://codex.wordpress.org/Theme_Unit_Test)
* WP Test io
(http://wptest.io/)
* Importe o arquivo .xml
* Ferramentas -> Importar -> WordPress
* Crie novos usuários
* Faça download dos anexos
iMasters InterCon Dev +WordPress – jun/2013
*
*24 posts:
*publicados, agendado, rascunho, lixeira e sticky
*12 páginas
*52 categorias
*49 tags
*29 comentários
*14 imagens
iMasters InterCon Dev +WordPress – jun/2013
*
* OOP versus Procedimental
*Se a complexidade requer OOP, faça um plugin
* É possível testar funcionalidades individuais.
iMasters InterCon Dev +WordPress – jun/2013
*
* OOP versus Procedimental
*Se a complexidade requer OOP, faça um plugin
* É possível testar funcionalidades individuais.
*Não necessariamente a função em si, mas o
resultado desejado
iMasters InterCon Dev +WordPress – jun/2013
*
ricardo@moraleida.me

Contenu connexe

En vedette

En vedette (13)

śLedczy czy tajniacy
śLedczy czy tajniacyśLedczy czy tajniacy
śLedczy czy tajniacy
 
шид
шидшид
шид
 
FAQ
FAQFAQ
FAQ
 
White Volume One
White Volume OneWhite Volume One
White Volume One
 
шид
шидшид
шид
 
Interactive games accessibility begonapino-com
Interactive games accessibility begonapino-comInteractive games accessibility begonapino-com
Interactive games accessibility begonapino-com
 
Guia de aprendizaje 4
Guia de aprendizaje 4Guia de aprendizaje 4
Guia de aprendizaje 4
 
Imaging abdomen trauma urinary bladder ,trauma part 8 Dr Ahmed Esawy
Imaging abdomen trauma urinary bladder ,trauma part 8 Dr Ahmed EsawyImaging abdomen trauma urinary bladder ,trauma part 8 Dr Ahmed Esawy
Imaging abdomen trauma urinary bladder ,trauma part 8 Dr Ahmed Esawy
 
Imaging abdomen trauma spleenic trauma part 3 Dr Ahmed Esawy
Imaging abdomen trauma  spleenic  trauma part 3 Dr Ahmed EsawyImaging abdomen trauma  spleenic  trauma part 3 Dr Ahmed Esawy
Imaging abdomen trauma spleenic trauma part 3 Dr Ahmed Esawy
 
TDC2016SP - Testes unitários e testes de integração de aplicações Java utiliz...
TDC2016SP - Testes unitários e testes de integração de aplicações Java utiliz...TDC2016SP - Testes unitários e testes de integração de aplicações Java utiliz...
TDC2016SP - Testes unitários e testes de integração de aplicações Java utiliz...
 
Empreendedorismo 4 - Montando o primeiro negócio
Empreendedorismo 4 - Montando o primeiro negócioEmpreendedorismo 4 - Montando o primeiro negócio
Empreendedorismo 4 - Montando o primeiro negócio
 
Gestão de projetos com PMBoK
Gestão de projetos com PMBoKGestão de projetos com PMBoK
Gestão de projetos com PMBoK
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 

Similaire à Testes unitários com WordPress - InterCon Dev +WordPress 2013

Teste para dispositivos móveis apresentação pra ufam -eliane
Teste para dispositivos móveis   apresentação pra ufam -elianeTeste para dispositivos móveis   apresentação pra ufam -eliane
Teste para dispositivos móveis apresentação pra ufam -eliane
Eliane Collins
 

Similaire à Testes unitários com WordPress - InterCon Dev +WordPress 2013 (20)

Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Automação em Wearables para Android
Automação em Wearables para AndroidAutomação em Wearables para Android
Automação em Wearables para Android
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
 
WordPress para Desenvolvedores - Utilizando WP como framework de desenvolvime...
WordPress para Desenvolvedores - Utilizando WP como framework de desenvolvime...WordPress para Desenvolvedores - Utilizando WP como framework de desenvolvime...
WordPress para Desenvolvedores - Utilizando WP como framework de desenvolvime...
 
Arteccom Workshop Magento
Arteccom Workshop MagentoArteccom Workshop Magento
Arteccom Workshop Magento
 
Melhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magentoMelhores praticas no desenvolvimento magento
Melhores praticas no desenvolvimento magento
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.jsDesenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPress
 
Primeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidPrimeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor android
 
BITS | BrasilCMS | wordpress
BITS | BrasilCMS | wordpressBITS | BrasilCMS | wordpress
BITS | BrasilCMS | wordpress
 
1401 - Revista - Android.pdf
1401 - Revista - Android.pdf1401 - Revista - Android.pdf
1401 - Revista - Android.pdf
 
#MINI-CURSO - ModSecurity: Servidor Web Apache com um Módulo de Segurança
#MINI-CURSO - ModSecurity: Servidor Web Apache com um Módulo de Segurança#MINI-CURSO - ModSecurity: Servidor Web Apache com um Módulo de Segurança
#MINI-CURSO - ModSecurity: Servidor Web Apache com um Módulo de Segurança
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
 
Teste para dispositivos móveis apresentação pra ufam -eliane
Teste para dispositivos móveis   apresentação pra ufam -elianeTeste para dispositivos móveis   apresentação pra ufam -eliane
Teste para dispositivos móveis apresentação pra ufam -eliane
 

Testes unitários com WordPress - InterCon Dev +WordPress 2013

  • 2. iMasters InterCon Dev +WordPress – jun/2013 * Ricardo Moraleida * Desenvolvedor faz-tudo * Entusiasta do WordPress * Voluntário nos Fórums de Suporte * Membro da Comunidade wp-brasil.org *http://profiles.wordpress.org/moraleidame *http://br.forums.wordpress.org/profile/moraleidame
  • 3. iMasters InterCon Dev +WordPress – jun/2013 *
  • 4. iMasters InterCon Dev +WordPress – jun/2013 * *Testes de alto nível em relação ao sistema. *Também conhecidos como teste de caixa-preta *Testes usando o navegador para saber se o sistema se comporta como deveria.
  • 5. iMasters InterCon Dev +WordPress – jun/2013 * * Encontram erros tarde demais * Podem esconder os erros numa cadeia de funções/métodos difícil de encontrar.
  • 6. iMasters InterCon Dev +WordPress – jun/2013 *
  • 7. iMasters InterCon Dev +WordPress – jun/2013 * * Testes automatizados * Desenhados para rodar todos de uma vez só * Testando as menores unidades possíveis do sistema * Garantindo que cada micro-unidade se comporta como esperado
  • 8. iMasters InterCon Dev +WordPress – jun/2013 * *Desenvolvimento Guiado por Testes (TDD) Passos: 1) Escrever um teste rápido, que vai falhar 2) Escrever um método que faça o teste passar 3) Refatorar o método para eliminar a repetição
  • 9. iMasters InterCon Dev +WordPress – jun/2013 *
  • 10. iMasters InterCon Dev +WordPress – jun/2013 * *Antes de começar: *PHPUnit (https://github.com/sebastianbergmann/phpunit) * Instalação via PEAR ou PHAR *SVN (https://unit-tests.svn.wordpress.org/trunk) * Cliente SVN: TortoiseSVN (http://www.tortoisesvn.net/) * Instruções (http://make.wordpress.org/core/handbook/automated-testing/)
  • 11. iMasters InterCon Dev +WordPress – jun/2013 * *Rodando os testes: * Via linha de comando:
  • 12. iMasters InterCon Dev +WordPress – jun/2013 * *Rodando os testes: * Direto no SublimeText 2 *(https://github.com/stuartherbert/sublime-phpunit)
  • 13. iMasters InterCon Dev +WordPress – jun/2013 * * Teste com falha:
  • 14. iMasters InterCon Dev +WordPress – jun/2013 * * Teste com falha: Descrição completa da falha (Retornou false mas esperava um array) Localização exata do teste que falhou Classe::método do teste que falhou
  • 15. iMasters InterCon Dev +WordPress – jun/2013 * * Teste com sucesso: Descrição completa da falha
  • 16. iMasters InterCon Dev +WordPress – jun/2013 * * O WP tem uma suíte de testes construídos sobre o framework PHPUnit * São usados para testar o código base do sistema (core) * O pacote pode ser estendido para testar temas e plugins
  • 17. iMasters InterCon Dev +WordPress – jun/2013 * * Testes específicos do WP * Pasta de testes do sistema * Instalação * Config
  • 18. iMasters InterCon Dev +WordPress – jun/2013 * *wp-tests-config.php *Crie um BD exclusivo para os testes!
  • 19. iMasters InterCon Dev +WordPress – jun/2013 * Pasta de testes Pasta do plugin
  • 20. iMasters InterCon Dev +WordPress – jun/2013 * phpunit.xml
  • 21. iMasters InterCon Dev +WordPress – jun/2013 * testes/bootstrap.php
  • 22. iMasters InterCon Dev +WordPress – jun/2013 * * Plugin:
  • 23. iMasters InterCon Dev +WordPress – jun/2013 * * 1º teste:
  • 24. iMasters InterCon Dev +WordPress – jun/2013 * * 1º teste:
  • 25. iMasters InterCon Dev +WordPress – jun/2013 * * Plugin:
  • 26. iMasters InterCon Dev +WordPress – jun/2013 * * 1º teste:
  • 27. iMasters InterCon Dev +WordPress – jun/2013 * * 1º teste:
  • 28. iMasters InterCon Dev +WordPress – jun/2013 *
  • 29. iMasters InterCon Dev +WordPress – jun/2013 *
  • 30. iMasters InterCon Dev +WordPress – jun/2013 *
  • 31. iMasters InterCon Dev +WordPress – jun/2013 *
  • 32. iMasters InterCon Dev +WordPress – jun/2013 * http://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests- for-phpunit.assertions * assertArrayHasKey() * assertClassHasAttribute() * assertClassHasStaticAttribute () * assertContains() * assertContainsOnly() * assertCount() * assertEmpty() * assertEqualXMLStructure() * assertEquals() * assertFalse() * assertFileEquals() * assertFileExists() * assertGreaterThan() * assertGreaterThanOrEqual() * assertInstanceOf() * assertInternalType() * assertLessThan() * assertLessThanOrEqual() * assertNull() * assertObjectHasAttribute() * assertRegExp() * assertStringMatchesFormat() * assertStringMatchesFormatFil e() * assertSame() * assertSelectCount() * assertSelectEquals() * assertSelectRegExp() * assertStringEndsWith() * assertStringEqualsFile() * assertStringStartsWith() * assertTag() * assertThat() * assertTrue() * assertXmlFileEqualsXmlFile() * assertXmlStringEqualsXmlFile () * assertXmlStringEqualsXmlStri ng()
  • 33. iMasters InterCon Dev +WordPress – jun/2013 *
  • 34. iMasters InterCon Dev +WordPress – jun/2013 *
  • 35. iMasters InterCon Dev +WordPress – jun/2013 *
  • 36. iMasters InterCon Dev +WordPress – jun/2013 *
  • 37. iMasters InterCon Dev +WordPress – jun/2013 * *Utilização *Cria dois usuários, um contributor e um editor, e marca o atual.
  • 38. iMasters InterCon Dev +WordPress – jun/2013 * *O que pode ser criado? *$post *$attachment *$comment *$user *$term *$category *$tag *$blog
  • 39. iMasters InterCon Dev +WordPress – jun/2013 * *create_and_get() *create_many()
  • 40. iMasters InterCon Dev +WordPress – jun/2013 *
  • 41. iMasters InterCon Dev +WordPress – jun/2013 *
  • 42. iMasters InterCon Dev +WordPress – jun/2013 *
  • 43. iMasters InterCon Dev +WordPress – jun/2013 *
  • 44. iMasters InterCon Dev +WordPress – jun/2013 *
  • 45. iMasters InterCon Dev +WordPress – jun/2013 *
  • 46. iMasters InterCon Dev +WordPress – jun/2013 *
  • 47. iMasters InterCon Dev +WordPress – jun/2013 * Formatos de retorno
  • 48. iMasters InterCon Dev +WordPress – jun/2013 * Modificação via filtro
  • 49. iMasters InterCon Dev +WordPress – jun/2013 *
  • 50. iMasters InterCon Dev +WordPress – jun/2013 *
  • 51. iMasters InterCon Dev +WordPress – jun/2013 * * Vale a pena criar unit tests para temas? * Nem sempre.
  • 52. iMasters InterCon Dev +WordPress – jun/2013 * * Vale a pena criar unit tests para temas? * Nem sempre. *Aliás, quase nunca.
  • 53. iMasters InterCon Dev +WordPress – jun/2013 * * Vale a pena criar unit tests para temas? * Nem sempre. *Aliás, quase nunca. Tema vs. Plugins * se a funcionalidade é muito especifica e não tem a ver com o layout, faça um plugin.
  • 54. iMasters InterCon Dev +WordPress – jun/2013 * * Faça testes de aceitação: * Theme Unit Test (http://codex.wordpress.org/Theme_Unit_Test) * WP Test io (http://wptest.io/) * Importe o arquivo .xml * Ferramentas -> Importar -> WordPress * Crie novos usuários * Faça download dos anexos
  • 55. iMasters InterCon Dev +WordPress – jun/2013 * *24 posts: *publicados, agendado, rascunho, lixeira e sticky *12 páginas *52 categorias *49 tags *29 comentários *14 imagens
  • 56. iMasters InterCon Dev +WordPress – jun/2013 * * OOP versus Procedimental *Se a complexidade requer OOP, faça um plugin * É possível testar funcionalidades individuais.
  • 57. iMasters InterCon Dev +WordPress – jun/2013 * * OOP versus Procedimental *Se a complexidade requer OOP, faça um plugin * É possível testar funcionalidades individuais. *Não necessariamente a função em si, mas o resultado desejado
  • 58. iMasters InterCon Dev +WordPress – jun/2013 * ricardo@moraleida.me