Azphp phpunit-jenkins
Upcoming SlideShare
Loading in...5
×
 

Azphp phpunit-jenkins

on

  • 864 views

A brief Introduction to PHP QA using PHPUnit, Selenium and Jenkins.

A brief Introduction to PHP QA using PHPUnit, Selenium and Jenkins.

Statistics

Views

Total Views
864
Views on SlideShare
864
Embed Views
0

Actions

Likes
1
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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

Azphp phpunit-jenkins Presentation Transcript

  • 1. PHP, QA, and JenkinsEric CopeJune 25, 2013http://voltampmedia.com
  • 2. About Me• I run Voltamp Media Inc., a 1-man web-devshop• PHP-literate since 2002• CodeIgniter since 2005 (1.6 whenever thatwas)• Bitten by the TDD bug around 2006• Met Hudson/Jenkins in 2011
  • 3. The Tools• Jenkins - http://jenkins-ci.org– Continuous Integration Tool– Basic install is a quick download then:• java –jar jenkins.war• Normal vs. LTS– For bigger installations, its recommended to run within ajava container, like Tomcat.• PHPUnit – http://phpqatools.org– A set of QA tools– Installation is via PEAR• Selenium – http://seleniumhq.org/– java -jar selenium-server-standalone-2.31.0.jar
  • 4. Getting Started• Open a browser to:– http://localhost:8080
  • 5. Managing Jenkins• File System Location– Config files– Project build areas– Manage plugins• Start from here - http://jenkins-php.org/• Get the pluginsStatic Code Analysis Plug-ins Clover PHP Plugin Plot pluginDRY Plugin Checkstyle Plugin PMD PluginGit Plugin HTML Publisher Plugin xUnit Plugin
  • 6. The First Job• Each job must be configured!– Source Code – how to get the code– Build triggers (poll SCM, commit hooks)– Build Steps• Scripts (very limited environment)• Maven• Ant – see http://jenkins-php.org/ for yours!– Post Build Steps• Plots, reports
  • 7. The ANT Script• This is auto-generated,then modified asneeded• Test by running:% ant /path/to/build.xml• More athttp://ant.apache.org
  • 8. The PHPUnit Script• This is auto-generated, then modified as needed too• Test by running: % phpunit
  • 9. PHPUnit Tips and Tricks - fixtures• YAML files can be used within a fixture
  • 10. PHPUnit Tips and Tricks – dataproviders• YAML files canbe used as adata providertoo– Calls the provider(returns an array)– For each row it calls thetest• The YAML isdifferent!
  • 11. PHPUnit Tips and Tricks – Exceptions• Test your exceptions!• Check exception class and code
  • 12. Bonus! PHPUnit and Selenium• Make Jenkins drive PHPUnit drive Selenium!
  • 13. My Issues - controller• My current projects use CodeIgniter. CIUnitmakes using PHPUnit and CI better, but setupis painful.– End case of parent controller• Correct parent class in setUp, but not in thetestMethod!• MY_Controller vs. Controller– $this->CI = set_controller(MY_Controller);
  • 14. My Issues - Selenium• Selenium has matured quite a bit, butdocumentation and support is still very lean.• PHPUnit’s Selenium2 class is much better, but stillleaves much to be desired.– Click() does not wait for the page to load after a formsubmission. Selenese supported clickandwait(), but Ican’t find documentation…– https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php– http://stackoverflow.com/questions/9102505/phpunit-with-selenium
  • 15. Still to Learn/Do• Mocks• Dependency Injection• Code Coverage• DRY-er!• More Integration coverage with Selenium• Exclude External Libraries in analysis || fixthem!• Better TDD / BDD