Php Test Fest PHPMS, Maio 2008
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Php Test Fest PHPMS, Maio 2008

on

  • 1,568 views

 

Statistics

Views

Total Views
1,568
Views on SlideShare
1,553
Embed Views
15

Actions

Likes
4
Downloads
12
Comments
0

1 Embed 15

http://dasilvajr.blogspot.com 15

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license.

Php Test Fest PHPMS, Maio 2008 Presentation Transcript

  • 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/
  • 2. Bem vindos à TestFest!
    • 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
    Se esta é a sua primeira festa, você tem que testar!
  • 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
  • 4. Dbase code coverage
  • 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/
  • 6. Escrevendo Testes PHPT
    • 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
    Convenções para nomes de arquivos
  • 7. Escrevendo Testes PHPT --TEST-- Hello World --FILE-- Hello World --EXPECT-- Hello World TEST , FILE e EXPECT
  • 8. Escrevendo Testes PHPT --TEST-- Hello World --FILE-- <?php print 'Hello World' ; ?> --EXPECT-- Hello World TEST , FILE e EXPECT
  • 9. --TEST-- Hello World --FILE-- <?php print 'Hello World --EXPECTF-- Parse error: syntax error, unexpected $end in %s.php on line %d Escrevendo Testes PHPT EXPECTF – Esperando por falhas
    • %s qualquer string
    • %d números
    • %c um caractere
    • %w espaço
    • %i inteiros
    • %f reais
    • %x hexadecimal
    • %e separador de diretórios(!)
  • 10. Escrevendo Testes PHPT EXPECTREGEX --TEST-- Hello World --FILE-- <?php print 'Hello World --EXPECTREGEX-- Parse error: (parse|syntax) error, unexpected $end in .* on .*
  • 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--
  • 12. Escrevendo Testes PHPT Escrevendo testes portáveis --TEST-- Este teste utiliza uma timezone definida no braço --INI-- date.timezone=UTC --FILE-- --EXPECT--
  • 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--
  • 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--
  • 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--
  • 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--
  • 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--
  • 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--
  • 19. Executando a Suíte de Testes do PHP [email_address] 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 [email_address] php-5.3 % ./configure --enable-gcov && make && make lcov . . . Overall coverage rate: 82665 of 148813 lines (55.5%)
  • 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/
  • 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/.
  • 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.
  • 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.
  • 24. LET'S CODE!!!