Slideshow transcript
Slide 1: Bem vindos à TestFest! José Ricardo - PHPMS Campo Grande/MS – 10 de maio de 2008 Slides basedos nos slides de Sebastian Bergman Original em: http://sebastian-bergmann.de/talks/
Slide 2: Bem vindos à TestFest! Se esta é a sua primeira festa, você tem que testar! Por que estamos aqui em pleno sábado à noite? – Pretende-se aumentar a abrangência do código do interpretador PHP testado (através da escrita de testes) – O objetivo maior é que pessoas, por exemplo um grupo de usuários, interajam para que aprendam em conjunto – Ótima oportunidade para oferecer uma (re|con)tribuição ao projeto PHP – Ótima oportunidade para solidificar as relações entre os usuários do grupo e fazer novos amigos
Slide 3: Status HOJE! Overview of PHP_HEAD Build Status: OK Last Build Time: 2 days Compile Warnings: 633 Code Coverage: 57% Test Failures: 704 Valgrind Reports: 107 (falhas de gerenciamento de memória e threading) Fonte: gcov.php.net
Slide 4: Dbase code coverage
Slide 5: Testes PHPT ● Um único teste em cada arquivo .phpt ● Cada teste é executado em um interpretador (processo) PHP separado – Isolamento completo do teste – A configuração do PHP pode ser diferente para cada teste – A Suíte de Testes sobrevive a erros fatais, segfaults... ● Implementação original: run-tests.php ● PHPT (http://phpt.info/) ● Status dos testes: gcov.php.net/PHP_5_3/lcov_html/
Slide 6: Escrevendo Testes PHPT Convenções para nomes de arquivos ● Testes que ilustram falhas reportadas (bugs) – bug<bugid>.phpt ● Testes de comportamento básico de uma função – <functionname>_basic.phpt ● Testes de comportamento errôneo de uma função – <functionname>_error.phpt ● Testes de variações no comportamento de uma função – <functionname>_variation.phpt ● Testes variados para extensões – <extname><no>.phpt
Slide 7: Escrevendo Testes PHPT TEST, FILE e EXPECT --TEST-- Hello World --FILE-- Hello World --EXPECT-- Hello World
Slide 8: Escrevendo Testes PHPT TEST, FILE e EXPECT --TEST-- Hello World --FILE-- <?php print 'Hello World'; ?> --EXPECT-- Hello World
Slide 9: Escrevendo Testes PHPT EXPECTF – Esperando por falhas --TEST-- Hello World --FILE-- <?php print 'Hello World --EXPECTF-- Parse error: syntax error, unexpected $end in %s.php on line %d Printf é nossa amiga! ● %s qualquer string ● %i inteiros ● %d números ● %f reais ● %c um caractere ● %x hexadecimal ● %w espaço ● %e separador de diretórios(!)
Slide 10: Escrevendo Testes PHPT EXPECTREGEX --TEST-- Hello World --FILE-- <?php print 'Hello World --EXPECTREGEX-- Parse error: (parse|syntax) error, unexpected $end in .* on .*
Slide 11: Escrevendo Testes PHPT CLEAN --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--
Slide 12: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Este teste utiliza uma timezone definida no braço --INI-- date.timezone=UTC --FILE-- --EXPECT--
Slide 13: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Verificando se estamos em uma plataforma de 32 bits... --SKIPIF-- <?php if (PHP_INT_SIZE != 4) die('32bit platforms only'); ?> --FILE-- --EXPECT--
Slide 14: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Verificando se estamos em uma plataforma de 64 bits --SKIPIF-- <?php if (PHP_INT_SIZE != 8) die('64bit platforms only'); ?> --FILE-- --EXPECT--
Slide 15: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Verificando se estamos no Linux... --SKIPIF-- <?php if (!stristr(PHP_OS, 'Linux')) die('Linux only'); ?> --FILE-- --EXPECT--
Slide 16: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Verificando se estamos no MacOS X... --SKIPIF-- <?php if (!stristr(PHP_OS, 'Darwin')) die('MacOS X only'); ?> --FILE-- --EXPECT--
Slide 17: Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Verificando se estamos no Windows... --SKIPIF-- <?php if (substr(PHP_OS, 0, 3) != 'WIN') die('Windows only'); ?> --FILE-- --EXPECT--
Slide 18: Escrevendo Testes PHPT Créditos --TEST-- Um teste com uma seção de créditos --CREDITS-- Joãozinho <joaozinho@phpms.org> #testfest Campo Grande/MS em 2008-05-10 (Por que não? :D) --FILE-- --EXPECT--
Slide 19: Executando a Suíte de Testes do PHP sb@ubuntu php-5.3 % ./configure && make && make test . . . TEST RESULT SUMMARY --------------------------------------------------------------------- Exts skipped : 47 Exts tested : 34 --------------------------------------------------------------------- Number of tests : 6518 4786 Tests skipped : 1732 ( 26.6%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 13 ( 0.2%) ( 0.3%) Tests passed : 4773 ( 73.2%) ( 99.7%) --------------------------------------------------------------------- Time taken : 423 seconds sb@ubuntu php-5.3 % ./configure --enable-gcov && make && make lcov . . . Overall coverage rate: 82665 of 148813 lines (55.5%)
Slide 20: Para mais informações ● TestFest http://qa.php.net/testfest.php ● Time de garantia de qualidade (QA) do PHP http://qa.php.net/ ● PHP: Testes e Análise da Abrangência do Código http://gcov.php.net/
Slide 21: FIM ● Obrigado pela participação e pelo seu interesse. ● Estes slides em breve estarão disponíveis no site do grupo (www.phpms.org) ● Slides originais (em inglês): – http://sebastian-bergmann.de/talks/.
Slide 22: Licença Este material para apresentação é publicado sob a licença “Attribution-Share Alike 3.0 Unported”. Você é livre para: ✔ Compartilhar – copiar, distribuir e transmitir o trabalho. ✔ Alterar – adaptar o trabalho. Sob as seguintes condições: ● 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. Para qualquer reuso ou distribuição, você deve deixar claro aos outros os termos de licenciamento deste trabalho. Qualquer uma das condições acima pode ser ignorada se você obtiver a permissões do proprietário dos direitos autorais. Nada nesta licença danifica ou restringe os direitos morais do autor.
Slide 23: 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.
Slide 24: LET'S CODE!!!




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)