Slides baseados no trabalho de Sebastian Bergmann, traduzido por José Ricardo (PHPMS) e adaptado por Silvano Girardi (PHPSC) Original: http://sebastian-bergmann.de/talks/ S Olá eu sou a TestFest S Objetivos S Aumentar a abrangência do código do interpretador de PHP (com testes) S Motivar usuários a participar, (re|con)tribuir com o PHP S Unir e motivar membros do grupo de usuário S Qualificar o participante com uma nova ferramenta S Atividade Global S Em 2009: Países de todo mundorealizaram TestFests S PHPSP: Grupo com maior número de testes em todo mundo S Próximas oportunidades S PHPSP: Setembro (Encerramento) Apoio: Olá eu sou a TestFest S Benefícios S Aprendizado de testes S Uma linguagem mais estável S Mais releases S Sorteios entre todos participantes do mundo S 2009: 5 participantes ganharam (1 caneca / 4 elephpantes) S Se você gostar e ajudar bastante: S Email @php.net S Karma no repositório oficial (área de testes) Apoio: Como será nosso dia? 09h30 16h30 12h30 PALESTR A SUPORTE E CONFIGURAÇÃO TESTES TESTES SORT EIO Pizza! Patrocinado por: #PHPinga Apoio: PHPT S Cada arquivo .phpt possui um único teste S Cada teste é executado por um processo separado S Isolamento total do teste S Configuração do PHP independente para cada teste S A suite de testes sobrevive a erros fatais, segfaults, etc.. S PHPT: http://phpt.info Apoio: Dando nome ao seu filho S Testes que ilustram falhas reportadas (bugs) S bug<bugid>.phpt S Testes de comportamento básico de uma função S <functionname>_basic.phpt S Testes de comportamento errôneo de uma função S <functionname>_error.phpt S Testes de variações no comportamento de uma função S <functionname>_variation.phpt S Testes variados para extensões S <extname><no>.phpt Apoio: O Teste mais simples do mundo --TEST-- Hello World --FILE-Hello World --EXPECT-Hello World Apoio: Agora com PHP --TEST-Hello World --FILE-<?php print 'Hello World'; ?> --EXPECT-Hello World Apoio: Expectativas --TEST-Hello World --FILE-<?php print 'Hello World --EXPECTF-Parse error: syntax error, unexpected $end in %s.php on line %d S %s - qualquer string S %f - real S %d - numero S %x - hexadecimal S %c - um character S %e – separador de S %w - espaço S %i - inteiro diretórios Apoio: Expectativas --TEST-Hello World --FILE-<?php print 'Hello World --EXPECTREGEX-Parse error: (parse|syntax) error, unexpected $end in .* on line .* Apoio: Limpando a sujeira --TEST-Removendo arquivos temporá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-- Apoio: Mexendo nas Configurações --TEST-Definindo um fuso para portabilidade --INI-date.timezone=UTC --FILE---EXPECT-- Apoio: Portavel e Seletivo --TEST-Verificando se estamos em uma plataforma de 32 bits... --SKIPIF-<?php if (PHP_INT_SIZE != 4) die('32bit platforms only'); ?> --FILE---EXPECT-Apoio: Portavel e Seletivo --TEST-Verificando se estamos no Linux... --SKIPIF-- <?php if (!stristr(PHP_OS, 'Linux')) die('Linux only'); ?> --FILE---EXPECT-Apoio: Fui eu! --TEST-Um teste com uma seção de créditos --CREDITS-Jack <[email protected]> #testfest PHPSP on 2009-06-20 --FILE---EXPECT-- Apoio: 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--] Apoio: Roda ai Zé! S $ make tests 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 ===================================================================== Apoio: Roda na Janela! S TEST_EXECUTABLE_PHP=auto sapi/cli/php run-tests.php path/to/test S Bash S export TEST_PHP_EXECUTABLE=/mnt/workspace/PHP/php53/sapi/cli/ php S $TEST_PHP_EXECUTABLE /mnt/workspace/PHP/php53/runtests.php $* Apoio: Ambientes S Versão para testes: S PHP 5.3.2 ou 5.3.3-dev (SVN) S Ambientes disponíveis S Virtual Machine de Ubuntu (Virtual Box) S Windows (run-tests.php) S Seu ambiente local já compilado Apoio: O Que testar? Como achar? S Verificar GCOV - http://gcov.php.net/ S Procurar linhas não testadas S Extensões com pouca cobertura S Página de Funções testadas - http://qa.php.net/tested- methods.php S Achar casos de uso não testados Apoio: Regras S Tudo em inglês! Faltou alguma informação? http://wiki.php.net/qa/testfest-2010 Apoio: Processo de escrita S Selecione o que irá testar S Avise o resto da sala S Escreva o teste S Rode o teste com PHP 5.3 S Rode o teste no Trunk e 5.2 [opcional] S Commite o teste em nosso SVN S Avise um monitor Apoio: Não Acabou! S Evento se estende até setembro S Repositório continuará aberto S Não pare de contribuir! S Setembro S Palestra + testes S Encerramento geral Apoio: Apoio Ao código!! S License S This presentation material is published under the Attribution-Share Alike 3.0 Unported license. S You are free: S S to Share – to copy, distribute and transmit the work. to Remix – to adapt the work. S Under the following conditions: S S 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. S For any reuse or distribution, you must make clear to others the license terms of this work. S Any of the above conditions can be waived if you get permission from the copyright holder. S Nothing in this license impairs or restricts the author's moral rights. Licença S Este material para apresentação é publicado sob a licença “Attribution-Share Alike 3.0 Unported”. S Você é livre para: S S S Compartilhar – copiar, distribuir e transmitir o trabalho. Alterar – adaptar o trabalho. Sob as seguintes condições: S S Atribuição. Você deve atribuir o trabalho na maneira especificada pelo autor ou licenciador (mas não de maneira a sugerir que eles te apóiam você ou a maneira como você utiliza o trabalho). Distribua da mesma forma. Se você alterar, transformar ou construir algo baseando-se neste trabalho, você deve distribuir o trabalho resultante apenas sob a mesma licença, uma licença similar ou compatível. S Para qualquer reuso ou distribuição, você deve deixar claro aos outros os termos de licenciamento deste trabalho. S Qualquer uma das condições acima pode ser ignorada se você obtiver a permissões do proprietário dos direitos autorais. S Nada nesta licença danifica ou restringe os direitos morais do autor. Apoio: