Preparing for
        PHP TestFest 2009


by Felix De Vliegher and Michelangelo van Dam
Welcome to PHP Test Fest 2009 !
• What is PHP Test Fest ?
 – improving code coverage of the PHP interpreter by
   writing ...
Prerequisites
• preferable a Linux version
  – virtual machine
  – core OS
• with gcc and gcov (see next slide for details...
Tools needed for PHP builds
• gcc: 3.4+ (with gcov)
Source: http://wiki.php.net/doc/articles/writing-tests


•   autoconf:...
Getting lcov
• apt
 – apt-get install lcov
• CSV
 – cvs -
   d:pserver:anonymous@ltp.cvs.sourceforge.net:/
   cvsroot/ltp ...
Getting the latest PHP 5.3
Choose a development environment
$   cd ~/src/php/
$   cvs -d :pserver:cvsread@cvs.php.net:/rep...
Code coverage report




http://gcov.php.net or in your /path/to/php5/lcov_html directory




                            ...
Writing Tests
• What are phpt Tests ?
  Files ending with .phpt are test files
  containing a single test
• What skills do...
Naming conventions
• Tests for bugs
  – bug<bugid>.phpt (bug17123.phpt)
• Tests for a function’s basic behaviour
  – <func...
Basic format
--TEST--
Hello World
--FILE--
Hello World
--EXPECT--
Hello World




                             10
Test, File and Expect
--TEST--
Hello World
--FILE--
<?php echo ‘Hello World’; ?>
--EXPECT--
Hello World




              ...
Testing Errors
--TEST--
Hello World
--FILE--
<?php echo ‘Hello World
--EXPECTF--
Parse Error: syntax error, unexpected $en...
Testing Errors with expectregex
--TEST--
Hello World
--FILE--
<?php echo ‘Hello World
--EXPECTREGEX--
Parse Error: (parse|...
Cleaning up
--TEST--
This will remove temporary files
--FILE--
<?php
$temp_filename = dirname(__FILE__) . '/foo.tmp';
$fp ...
Conditional Testing
--TEST--
Check for 64bit platform
--SKIPIF--
<?php
if (PHP_INT_SIZE != 8) die('64bit platforms only');...
Don’t forget the credits
--TEST--
A test with a CREDITS section
--CREDITS--
John Doe <john.doe@example.com>
#testfest PHPB...
Running your test




make test TESTS=/path/to/php5/ext/yourextension/tests




                                          ...
Resources
• TestFest
  http://qa.php.net/testfest.php
• PHP Quality Assurance Team
  http://qa.php.net/
• PHP: Test and Co...
Let PHP Test Fest begin !


    Thank you for your interest !
  Your work will be appreciated !!!

        Slides are avai...
Proudly sponsored




                    20
Upcoming SlideShare
Loading in...5
×

Prepare for PHP Test Fest 2009

2,618

Published on

This presentation is a preparation for PHP Test Fest 2009 (http://qa.php.net/testfest). See your local PHP user group for details of this world wide event.

Published in: Self Improvement, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,618
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
28
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide




















  • Prepare for PHP Test Fest 2009

    1. 1. Preparing for PHP TestFest 2009 by Felix De Vliegher and Michelangelo van Dam
    2. 2. Welcome to PHP Test Fest 2009 ! • What is PHP Test Fest ? – improving code coverage of the PHP interpreter by writing tests – opportunity to learn how to write tests in a group/ workshop like environment – your chance to contribute back to the PHP community ! 2
    3. 3. Prerequisites • preferable a Linux version – virtual machine – core OS • with gcc and gcov (see next slide for details) • for testing coverages – gcov – lcov (version 1.5 or 1.6) • php 5.3 – from CVS (see next slide) • text editor like vi(m), textpad, pico, ... 3
    4. 4. Tools needed for PHP builds • gcc: 3.4+ (with gcov) Source: http://wiki.php.net/doc/articles/writing-tests • autoconf: 2.13 • automake: 1.4+ • libtool: 1.4.x+ (except 1.4.2) • bison: 1.28, 1.35, 1.75, 2.0 or higher • flex: 2.5.4 (not higher) • re2c: 0.9.11+ (0.12.0+ for HEAD) Source: http://www.php.net/anoncvs.php 4
    5. 5. Getting lcov • apt – apt-get install lcov • CSV – cvs - d:pserver:anonymous@ltp.cvs.sourceforge.net:/ cvsroot/ltp login – cvs -z3 - d:pserver:anonymous@ltp.cvs.sourceforge.net:/ cvsroot/ltp co -r LCOV_1_6 -P utils/analysis/lcov • RPM – lcov-1.6-2.noarch.rpm 5
    6. 6. Getting the latest PHP 5.3 Choose a development environment $ cd ~/src/php/ $ cvs -d :pserver:cvsread@cvs.php.net:/repository checkout - r PHP_5_3 php5 $ cd php5 Build a configure for your current version $ ./buildconf Run the configuration $ ./configure --enable-gcov choose --enable-gcov for code coverage reporting make & make test & make lcov $ make $ make test $ make lcov TESTS=tests/* 6
    7. 7. Code coverage report http://gcov.php.net or in your /path/to/php5/lcov_html directory 7
    8. 8. Writing Tests • What are phpt Tests ? Files ending with .phpt are test files containing a single test • What skills do I need to write phpt tests ? – basic knowledge of PHP – a text editor like vi(m), pico, notepad, textpad, ... – a way to get results of your test code • Where can I find more info about phpt ? http://phpt.info 8
    9. 9. Naming conventions • Tests for bugs – bug<bugid>.phpt (bug17123.phpt) • Tests for a function’s basic behaviour – <functionname>_basic.phpt (dba_open_basic.phpt) • Tests for a function’s error behaviour – <functionname>_error.phpt (dba_open_error.phpt) • Tests for variations in a function’s behaviour – <functionname>_variation.phpt (dba_open_variation.phpt) • General tests for extensions – <extname>_<no>.phpt (dba_003.phpt) 9
    10. 10. Basic format --TEST-- Hello World --FILE-- Hello World --EXPECT-- Hello World 10
    11. 11. Test, File and Expect --TEST-- Hello World --FILE-- <?php echo ‘Hello World’; ?> --EXPECT-- Hello World 11
    12. 12. Testing Errors --TEST-- Hello World --FILE-- <?php echo ‘Hello World --EXPECTF-- Parse Error: syntax error, unexpected $end in %s.php on line %d 12
    13. 13. Testing Errors with expectregex --TEST-- Hello World --FILE-- <?php echo ‘Hello World --EXPECTREGEX-- Parse Error: (parse|syntax) error, unexpected $end in .* ON .* 13
    14. 14. Cleaning up --TEST-- This will remove temporary files --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-- 14
    15. 15. Conditional Testing --TEST-- Check for 64bit platform --SKIPIF-- <?php if (PHP_INT_SIZE != 8) die('64bit platforms only'); ?> --FILE-- --EXPECT-- 15
    16. 16. Don’t forget the credits --TEST-- A test with a CREDITS section --CREDITS-- John Doe <john.doe@example.com> #testfest PHPBelgium 2009-05-09 --FILE-- --EXPECT-- 16
    17. 17. Running your test make test TESTS=/path/to/php5/ext/yourextension/tests 17
    18. 18. Resources • TestFest http://qa.php.net/testfest.php • PHP Quality Assurance Team http://qa.php.net/ • PHP: Test and Code Coverage Analysis http://gcov.php.net/ • Complete ./configure example http://gcov.php.net/viewer.php? version=PHP_5_3&func=system 18
    19. 19. Let PHP Test Fest begin ! Thank you for your interest ! Your work will be appreciated !!! Slides are available on http://www.slideshare.net/PHPBelgium 19
    20. 20. Proudly sponsored 20
    1. A particular slide catching your eye?

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

    ×