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)
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
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--
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
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.