PHPTPHPMS Conf 2012
IVAN ROSOLEN    @ivanrosolen                       Co-fundador do PHPSP                      Desenvolvedor 10+ anos       ...
PHPT• Apenas um teste por aquivo .phpt• Testes executados em processos separados• Diferentes configurações do PHP para cad...
Nomenclatura• Bugs - bug<id>.phpt• Extensões - <nomedaextensao><numero>.phpt• Funções  Comportamento básico - <nomedafunca...
Seções Obrigatórias              --TEST--    Uma linha para descrever o teste             --FILE--    código PHP (isso mes...
--TEST--                              [--DESCRIPTION--]                                 [--CREDITS--]                     ...
--EXPECTF--%s string        %i integer%d number        %f floats%c single char   %x hexadecimal%w whitespace    %e directo...
Como FazerBaixar o source da versão do PHP desejadatar -xvf php-5.4.5.tar.gz./configure (com parâmetros necessários)makema...
Testando make test TESTS=diretorio/ make test TESTS=diretorio/*.phpt make test TESTS=diretorio/nome.phptTeoricamente .zip ...
Exemplos
--TEST--Xuplau--FILE--<?php echo Xuplau’; ?>--EXPECT--Xuplau
--TEST--Xuplau Error--FILE--<?php echo Xuplau--EXPECTF--Parse error: syntax error, unexpected %s (T_ENCAPSED_AND_WHITESPAC...
--TEST--Xuplau Error--FILE--<?php echo Xuplau--EXPECTREGEX--Parse error: (syntax|parse) error, unexpected .* (T_ENCAPSED_A...
--TEST--Apagar TMP Files--FILE--<?php$tmp = dirname(__FILE__) . /foo.tmp;$fp = fopen($tmp, w);fwrite($fp, bar);fclose($fp)...
--TEST--Skipif teste!--SKIPIF--<?phpif ( substr(PHP_OS, 0, 3 ) != WIN) die(Teste apenas para Unix);?>--FILE----EXPECT--
--TEST--Testing imagerectangle() of GD library--CREDITS--Ivan Rosolen <contato [at] ivanrosolen [dot] com>#testfest PHPSP ...
--TEST--Testing wrong param passing imagefilledellipse() of GD library--CREDITS--Ivan Rosolen <contato [at] ivanrosolen [d...
Deu erro!               *.exp               *.log*.diff         *.out               *.php               *.phpt            ...
Que Teste eu Faço?   http://gcov.php.net
PHPT +• Suas extensões• Seus Projetos  https://github.com/vrana/notorm
Enviando Testes• Clonar git   https://github.com/php/php-src• Pull Request• Avisar na lista do QA  Quality Assurance list ...
Linkshttp://gcov.php.nethttp://qa.php.net/write-test.phphttp://php.net/mailing-lists.phpPara Windows ( não testei muito ai...
Dúvidas?
Upcoming SlideShare
Loading in …5
×

PHPT

2,511
-1

Published on

Criando testes para a linguagem PHP

Published in: Technology

PHPT

  1. 1. PHPTPHPMS Conf 2012
  2. 2. IVAN ROSOLEN @ivanrosolen Co-fundador do PHPSP Desenvolvedor 10+ anos Equipe de inovação da ARIZONA http://about.me/ivanrosolen
  3. 3. PHPT• Apenas um teste por aquivo .phpt• Testes executados em processos separados• Diferentes configurações do PHP para cada teste
  4. 4. Nomenclatura• Bugs - bug<id>.phpt• Extensões - <nomedaextensao><numero>.phpt• Funções Comportamento básico - <nomedafuncao>_basic.phpt Erro - <nomedafuncao>_error.phpt Variações - <nomedafuncao>_variation.phpt
  5. 5. Seções Obrigatórias --TEST-- Uma linha para descrever o teste --FILE-- código PHP (isso mesmo PHP!) --EXPECT-- Resultado esperado (acerto ou erro)
  6. 6. --TEST-- [--DESCRIPTION--] [--CREDITS--] [--SKIPIF--] [--REQUEST--][--POST-- | --PUT-- | --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--]
  7. 7. --EXPECTF--%s string %i integer%d number %f floats%c single char %x hexadecimal%w whitespace %e directory sep.
  8. 8. Como FazerBaixar o source da versão do PHP desejadatar -xvf php-5.4.5.tar.gz./configure (com parâmetros necessários)makemake test
  9. 9. Testando make test TESTS=diretorio/ make test TESTS=diretorio/*.phpt make test TESTS=diretorio/nome.phptTeoricamente .zip do PHP win roda os testes com o php.exenmake test
  10. 10. Exemplos
  11. 11. --TEST--Xuplau--FILE--<?php echo Xuplau’; ?>--EXPECT--Xuplau
  12. 12. --TEST--Xuplau Error--FILE--<?php echo Xuplau--EXPECTF--Parse error: syntax error, unexpected %s (T_ENCAPSED_AND_WHITESPACE) in %s.php on line %d
  13. 13. --TEST--Xuplau Error--FILE--<?php echo Xuplau--EXPECTREGEX--Parse error: (syntax|parse) error, unexpected .* (T_ENCAPSED_AND_WHITESPACE) in .* on line d
  14. 14. --TEST--Apagar TMP Files--FILE--<?php$tmp = dirname(__FILE__) . /foo.tmp;$fp = fopen($tmp, w);fwrite($fp, bar);fclose($fp);?>--CLEAN--<?php$tmp = dirname(__FILE__) . /foo.tmp;unlink($tmp)?>--EXPECT--
  15. 15. --TEST--Skipif teste!--SKIPIF--<?phpif ( substr(PHP_OS, 0, 3 ) != WIN) die(Teste apenas para Unix);?>--FILE----EXPECT--
  16. 16. --TEST--Testing imagerectangle() of GD library--CREDITS--Ivan Rosolen <contato [at] ivanrosolen [dot] com>#testfest PHPSP on 2009-06-30--SKIPIF--<?phpif ( ! extension_loaded(gd) ) die( skip GD not present; skipping test );?>--FILE--<?php// Create a image$image = imagecreatetruecolor( 100, 100 );// Draw a rectangleimagerectangle( $image, 0, 0, 50, 50, imagecolorallocate($image, 255, 255, 255) );ob_start();imagepng( $image, null, 9 );$img = ob_get_contents();ob_end_clean();echo md5(base64_encode($img));?>--EXPECT--282aaecfdd50091821d63093d9bb1bb9
  17. 17. --TEST--Testing wrong param passing imagefilledellipse() of GD library--CREDITS--Ivan Rosolen <contato [at] ivanrosolen [dot] com>#phpsptestfest PHPSP on 2010-05-29--SKIPIF--<?phpif (!extension_loaded("gd")) die("skip GD not present");?>--FILE--<?php// Create a image$image = imagecreatetruecolor(400, 300);// choose a color for the ellipse$ellipse = imagecolorallocate($image, 255, 255, 255);// draw the white ellipseimagefilledellipse( wrong param, 200, 150, 300, 200, $ellipse);?>--EXPECTF--Warning: imagefilledellipse() expects parameter 1 to be resource, %s given in %s on line %d
  18. 18. Deu erro! *.exp *.log*.diff *.out *.php *.phpt *.sh
  19. 19. Que Teste eu Faço? http://gcov.php.net
  20. 20. PHPT +• Suas extensões• Seus Projetos https://github.com/vrana/notorm
  21. 21. Enviando Testes• Clonar git https://github.com/php/php-src• Pull Request• Avisar na lista do QA Quality Assurance list - php-qa@lists.php.net
  22. 22. Linkshttp://gcov.php.nethttp://qa.php.net/write-test.phphttp://php.net/mailing-lists.phpPara Windows ( não testei muito ainda )https://wiki.php.net/qa/testfest-2010/windows-test-environmenthttp://pastebin.com/CxFtXUwShttp://pastebin.com/PPBr05kQ
  23. 23. Dúvidas?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×