SlideShare a Scribd company logo
1 of 27
Slides baseados no trabalho de SebastianBergmann, traduzido por José Ricardo (PHPMS) e adaptado por Silvano Girardi (PHPSC) Original: http://sebastian-bergmann.de/talks/
Olá eu sou a TestFest Objetivos Aumentar a abrangência do código do interpretador de PHP (com testes) Motivar usuários a participar, (re|con)tribuir com o PHP Unir e motivar membros do grupo de usuário Qualificar o participante com uma nova ferramenta Atividade Global Em 2009: Países de todo mundorealizaramTestFests PHPSP: Grupo com maior número de testes em todo mundo Próximas oportunidades PHPSP:  Setembro (Encerramento)
Olá eu sou a TestFest Benefícios Aprendizado de testes Umalinguagemmaisestável Mais releases Sorteios entre todosparticipantes do mundo 2009: 5 participantesganharam (1 caneca / 4 elephpantes) Se vocêgostareajudarbastante: Email @php.net Karma no repositóriooficial (área de testes)
Como seránossodia? 09h30 16h30 12h30 Almoço Palestra Suporteeconfiguração Testes Testes Sorteio #PHPinga Pizza! Patrocinadopor:
PHPT Cada arquivo .phpt possui um único teste Cada teste é executado por um processo separado Isolamento total do teste Configuração do PHP independente para cada teste A suite de testes sobrevive a erros fatais, segfaults, etc.. PHPT: http://phpt.info
Dando nome ao seu filho Testes queilustramfalhasreportadas (bugs)‏ bug<bugid>.phpt Testes de comportamentobásico de umafunção <functionname>_basic.phpt Testes de comportamentoerrôneo de umafunção <functionname>_error.phpt Testes de variações no comportamento de umafunção <functionname>_variation.phpt Testes variadosparaextensões <extname><no>.phpt
O Teste mais simples do mundo --TEST-- Hello World --FILE-- Hello World --EXPECT-- Hello World
Agora com PHP --TEST-- Hello World --FILE-- <?php print'Hello World'; ?> --EXPECT-- Hello World
Expectativas --TEST-- Hello World --FILE-- <?php print'Hello World --EXPECTF-- Parse error: syntax error, unexpected $end in %s.php on line %d ,[object Object]
%d - numero
%c - um character
%w - espaço
%i - inteiro
%f - real
%x - hexadecimal
%e – separador de diretórios,[object Object]
Limpando a sujeira --TEST-- Removendoarquivostemporários --FILE-- <?php $temp_filename = dirname(__FILE__) . '/foo.tmp'; $fp = fopen($temp_filename, 'w'); fwrite($fp, 'bar'); fclose($fp); ?> --CLEAN-- <?php $temp_filename = dirname(__FILE__) . '/foo.tmp'; unlink($temp_filename); ?> --EXPECT--
Mexendo nas Configurações --TEST-- Definindo um fusoparaportabilidade --INI-- date.timezone=UTC --FILE-- --EXPECT--
Portavel e Seletivo --TEST-- Verificando se estamosemumaplataforma de 32 bits... --SKIPIF-- <?php if (PHP_INT_SIZE!=4)die('32bit platforms only'); ?> --FILE-- --EXPECT--
Portavel e Seletivo --TEST-- Verificando se estamos no Linux... --SKIPIF-- <?php if (!stristr(PHP_OS, 'Linux'))die('Linux only'); ?> --FILE-- --EXPECT--
Fui eu! --TEST-- Um teste com umaseção de créditos --CREDITS-- Jack <jack@phpsp.org.br> #testfest PHPSP on 2009-06-20 --FILE-- --EXPECT--
Outras sessões --TEST-- [--DESCRIPTION--] [--CREDITS--] [--SKIPIF--] [--REQUEST--] [--POST-- | --POST_RAW-- | --GZIP_POST-- | --DEFLATE_POST-- | --GET--] [--COOKIE--] [--STDIN--] [--INI--] [--ARGS--] [--ENV--] --FILE-- | --FILEEOF-- | --FILE_EXTERNAL-- | --REDIRECTTEST-- [--HEADERS--] [--CGI--] [--XFAIL--] [--EXPECTHEADERS--] --EXPECT-- | --EXPECTF-- | --EXPECTREGEX-- [--CLEAN--]
Roda ai Zé! $ maketests TESTS=path/to/ext/yourextension/tests ===================================================================== PHP         : /Users/rdohms/Downloads/src/php-5.3.0RC4/sapi/cli/php  PHP_SAPI    : cli PHP_VERSION : 5.3.0RC4 ZEND_VERSION: 2.3.0 PHP_OS      : Darwin - Darwin MacDohms.local 9.7.0 Darwin Kernel Version 9.7.0: … INI actual  : /Users/rdohms/Downloads/src/php-5.3.0RC4/tmp-php.ini More .INIs  :   CWD         : /Users/rdohms/Downloads/src/php-5.3.0RC4 Extra dirs  :  VALGRIND    : Not used ===================================================================== Running selected tests. PASS Hello World [/Users/rdohms/dev/phpsp/testfest/SaoPauloUG/tests/basic/mytest.phpt]  ===================================================================== Number of tests :    1                 1 Tests skipped   :    0 (  0.0%) -------- Tests warned    :    0 (  0.0%) (  0.0%) Tests failed    :    0 (  0.0%) (  0.0%) Expected fail   :    0 (  0.0%) (  0.0%) Tests passed    :    1 (100.0%) (100.0%) --------------------------------------------------------------------- Time taken      :    0 seconds =====================================================================
Roda na Janela! TEST_EXECUTABLE_PHP=auto sapi/cli/php run-tests.php path/to/test Bash export TEST_PHP_EXECUTABLE=/mnt/workspace/PHP/php53/sapi/cli/php $TEST_PHP_EXECUTABLE /mnt/workspace/PHP/php53/run-tests.php $*
Ambientes Versão para testes: PHP 5.3.2 ou 5.3.3-dev (SVN) Ambientes disponíveis Virtual Machine de Ubuntu (Virtual Box) Windows (run-tests.php) Seu ambiente local já compilado
O Quetestar? Como achar? Verificar GCOV - http://gcov.php.net/ Procurarlinhasnãotestadas Extensões com poucacobertura Página de Funçõestestadas - http://qa.php.net/tested-methods.php Acharcasos de usonãotestados
Regras Tudo em inglês! Faltoualgumainformação? http://wiki.php.net/qa/testfest-2010

More Related Content

What's hot

Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkRafael Dohms
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009Rafael Dohms
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!tdc-globalcode
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPesteVitor Mattos
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHP
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHPPHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHP
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHPAryel Tupinambá
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPAryel Tupinambá
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferVinicius Warto Campos
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Er Galvão Abbott
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 

What's hot (20)

Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para Linux
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
PHPSP TestFest 2009
PHPSP TestFest 2009PHPSP TestFest 2009
PHPSP TestFest 2009
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHP
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHPPHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHP
PHP Conference 2017 - Processamento avançado de vídeos com FFmpeg e PHP
 
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPPHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHP
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 
Python na Web
Python na WebPython na Web
Python na Web
 
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP SnifferSeguindo padrões: Codificando profissionalmente com PHP Sniffer
Seguindo padrões: Codificando profissionalmente com PHP Sniffer
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 

Similar to PHPSP TestFest 2010

Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008zehzinho
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Leandro Moreira
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e FuturoFreedom DayMS
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGiMasters
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 

Similar to PHPSP TestFest 2010 (20)

Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 

More from Rafael Dohms

The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024Rafael Dohms
 
Application Metrics - IPC2023
Application Metrics - IPC2023Application Metrics - IPC2023
Application Metrics - IPC2023Rafael Dohms
 
How'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsHow'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsRafael Dohms
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRRafael Dohms
 
Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Rafael Dohms
 
Application metrics - Confoo 2019
Application metrics - Confoo 2019Application metrics - Confoo 2019
Application metrics - Confoo 2019Rafael Dohms
 
Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Rafael Dohms
 
Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Rafael Dohms
 
Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonfRafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...Rafael Dohms
 
Composer The Right Way - 010PHP
Composer The Right Way - 010PHPComposer The Right Way - 010PHP
Composer The Right Way - 010PHPRafael Dohms
 
Writing Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtWriting Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtRafael Dohms
 
Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16Rafael Dohms
 
Composer the Right Way - MM16NL
Composer the Right Way - MM16NLComposer the Right Way - MM16NL
Composer the Right Way - MM16NLRafael Dohms
 
Composer The Right Way - PHPUGMRN
Composer The Right Way - PHPUGMRNComposer The Right Way - PHPUGMRN
Composer The Right Way - PHPUGMRNRafael Dohms
 
Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.Rafael Dohms
 
A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015Rafael Dohms
 

More from Rafael Dohms (20)

The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024
 
Application Metrics - IPC2023
Application Metrics - IPC2023Application Metrics - IPC2023
Application Metrics - IPC2023
 
How'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsHow'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision Records
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBR
 
Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)
 
Application metrics - Confoo 2019
Application metrics - Confoo 2019Application metrics - Confoo 2019
Application metrics - Confoo 2019
 
Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18
 
Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18
 
Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
 
Composer The Right Way - 010PHP
Composer The Right Way - 010PHPComposer The Right Way - 010PHP
Composer The Right Way - 010PHP
 
Writing Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtWriting Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, Utrecht
 
Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
 
Composer the Right Way - MM16NL
Composer the Right Way - MM16NLComposer the Right Way - MM16NL
Composer the Right Way - MM16NL
 
Composer The Right Way - PHPUGMRN
Composer The Right Way - PHPUGMRNComposer The Right Way - PHPUGMRN
Composer The Right Way - PHPUGMRN
 
Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
 
A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015
 

PHPSP TestFest 2010

  • 1. Slides baseados no trabalho de SebastianBergmann, traduzido por José Ricardo (PHPMS) e adaptado por Silvano Girardi (PHPSC) Original: http://sebastian-bergmann.de/talks/
  • 2. Olá eu sou a TestFest Objetivos Aumentar a abrangência do código do interpretador de PHP (com testes) Motivar usuários a participar, (re|con)tribuir com o PHP Unir e motivar membros do grupo de usuário Qualificar o participante com uma nova ferramenta Atividade Global Em 2009: Países de todo mundorealizaramTestFests PHPSP: Grupo com maior número de testes em todo mundo Próximas oportunidades PHPSP: Setembro (Encerramento)
  • 3. Olá eu sou a TestFest Benefícios Aprendizado de testes Umalinguagemmaisestável Mais releases Sorteios entre todosparticipantes do mundo 2009: 5 participantesganharam (1 caneca / 4 elephpantes) Se vocêgostareajudarbastante: Email @php.net Karma no repositóriooficial (área de testes)
  • 4. Como seránossodia? 09h30 16h30 12h30 Almoço Palestra Suporteeconfiguração Testes Testes Sorteio #PHPinga Pizza! Patrocinadopor:
  • 5. PHPT Cada arquivo .phpt possui um único teste Cada teste é executado por um processo separado Isolamento total do teste Configuração do PHP independente para cada teste A suite de testes sobrevive a erros fatais, segfaults, etc.. PHPT: http://phpt.info
  • 6. Dando nome ao seu filho Testes queilustramfalhasreportadas (bugs)‏ bug<bugid>.phpt Testes de comportamentobásico de umafunção <functionname>_basic.phpt Testes de comportamentoerrôneo de umafunção <functionname>_error.phpt Testes de variações no comportamento de umafunção <functionname>_variation.phpt Testes variadosparaextensões <extname><no>.phpt
  • 7. O Teste mais simples do mundo --TEST-- Hello World --FILE-- Hello World --EXPECT-- Hello World
  • 8. Agora com PHP --TEST-- Hello World --FILE-- <?php print'Hello World'; ?> --EXPECT-- Hello World
  • 9.
  • 11. %c - um character
  • 16.
  • 17. Limpando a sujeira --TEST-- Removendoarquivostemporários --FILE-- <?php $temp_filename = dirname(__FILE__) . '/foo.tmp'; $fp = fopen($temp_filename, 'w'); fwrite($fp, 'bar'); fclose($fp); ?> --CLEAN-- <?php $temp_filename = dirname(__FILE__) . '/foo.tmp'; unlink($temp_filename); ?> --EXPECT--
  • 18. Mexendo nas Configurações --TEST-- Definindo um fusoparaportabilidade --INI-- date.timezone=UTC --FILE-- --EXPECT--
  • 19. Portavel e Seletivo --TEST-- Verificando se estamosemumaplataforma de 32 bits... --SKIPIF-- <?php if (PHP_INT_SIZE!=4)die('32bit platforms only'); ?> --FILE-- --EXPECT--
  • 20. Portavel e Seletivo --TEST-- Verificando se estamos no Linux... --SKIPIF-- <?php if (!stristr(PHP_OS, 'Linux'))die('Linux only'); ?> --FILE-- --EXPECT--
  • 21. Fui eu! --TEST-- Um teste com umaseção de créditos --CREDITS-- Jack <jack@phpsp.org.br> #testfest PHPSP on 2009-06-20 --FILE-- --EXPECT--
  • 22. Outras sessões --TEST-- [--DESCRIPTION--] [--CREDITS--] [--SKIPIF--] [--REQUEST--] [--POST-- | --POST_RAW-- | --GZIP_POST-- | --DEFLATE_POST-- | --GET--] [--COOKIE--] [--STDIN--] [--INI--] [--ARGS--] [--ENV--] --FILE-- | --FILEEOF-- | --FILE_EXTERNAL-- | --REDIRECTTEST-- [--HEADERS--] [--CGI--] [--XFAIL--] [--EXPECTHEADERS--] --EXPECT-- | --EXPECTF-- | --EXPECTREGEX-- [--CLEAN--]
  • 23. Roda ai Zé! $ maketests TESTS=path/to/ext/yourextension/tests ===================================================================== PHP : /Users/rdohms/Downloads/src/php-5.3.0RC4/sapi/cli/php PHP_SAPI : cli PHP_VERSION : 5.3.0RC4 ZEND_VERSION: 2.3.0 PHP_OS : Darwin - Darwin MacDohms.local 9.7.0 Darwin Kernel Version 9.7.0: … INI actual : /Users/rdohms/Downloads/src/php-5.3.0RC4/tmp-php.ini More .INIs : CWD : /Users/rdohms/Downloads/src/php-5.3.0RC4 Extra dirs : VALGRIND : Not used ===================================================================== Running selected tests. PASS Hello World [/Users/rdohms/dev/phpsp/testfest/SaoPauloUG/tests/basic/mytest.phpt] ===================================================================== Number of tests : 1 1 Tests skipped : 0 ( 0.0%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 0 ( 0.0%) ( 0.0%) Expected fail : 0 ( 0.0%) ( 0.0%) Tests passed : 1 (100.0%) (100.0%) --------------------------------------------------------------------- Time taken : 0 seconds =====================================================================
  • 24. Roda na Janela! TEST_EXECUTABLE_PHP=auto sapi/cli/php run-tests.php path/to/test Bash export TEST_PHP_EXECUTABLE=/mnt/workspace/PHP/php53/sapi/cli/php $TEST_PHP_EXECUTABLE /mnt/workspace/PHP/php53/run-tests.php $*
  • 25. Ambientes Versão para testes: PHP 5.3.2 ou 5.3.3-dev (SVN) Ambientes disponíveis Virtual Machine de Ubuntu (Virtual Box) Windows (run-tests.php) Seu ambiente local já compilado
  • 26. O Quetestar? Como achar? Verificar GCOV - http://gcov.php.net/ Procurarlinhasnãotestadas Extensões com poucacobertura Página de Funçõestestadas - http://qa.php.net/tested-methods.php Acharcasos de usonãotestados
  • 27. Regras Tudo em inglês! Faltoualgumainformação? http://wiki.php.net/qa/testfest-2010
  • 28. Processo de escrita Selecioneoqueirátestar Aviseorestodasala Escrevaoteste Rode oteste com PHP 5.3 Rode oteste no Trunk e 5.2 [opcional] Commiteotesteemnosso SVN Avise um monitor
  • 29. NãoAcabou! Evento se estendeatésetembro Repositóriocontinuaráaberto Não pare de contribuir! Setembro Palestra + testes Encerramentogeral
  • 30. Apoio
  • 32. License This presentation material is published under the Attribution-Share Alike 3.0 Unported license. You are free: to Share – to copy, distribute and transmit the work. to Remix – to adapt the work. Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author's moral rights.
  • 33. Licença Este material paraapresentaçãoépublicado sob a licença “Attribution-Share Alike 3.0 Unported”. Vocêélivrepara: Compartilhar – copiar, distribuiretransmitirotrabalho. Alterar – adaptarotrabalho. Sob as seguintescondições: Atribuição. Vocêdeveatribuirotrabalhonamaneiraespecificadapeloautoroulicenciador (masnão de maneira a sugerirqueelesteapóiamvocêou a maneiracomovocêutilizaotrabalho). Distribuadamesma forma. Se vocêalterar, transformarouconstruiralgobaseando-se nestetrabalho, vocêdevedistribuirotrabalhoresultanteapenas sob a mesmalicença, umalicença similar oucompatível. Para qualquerreusooudistribuição, vocêdevedeixarclaroaosoutrosostermos de licenciamentodestetrabalho. Qualqueruma das condiçõesacimapode ser ignorada se vocêobtiver a permissões do proprietário dos direitosautorais. Nada nestalicençadanificaourestringeosdireitosmorais do autor.