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.
1. Preparing for
PHP TestFest 2009
by Felix De Vliegher and Michelangelo van Dam
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. 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
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
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. 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
13. Testing Errors with expectregex
--TEST--
Hello World
--FILE--
<?php echo ‘Hello World
--EXPECTREGEX--
Parse Error: (parse|syntax) error, unexpected $end in .*
ON .*
13
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
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. 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