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

Azphp phpunit-jenkins



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

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



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Azphp phpunit-jenkins Presentation Transcript

  • 1. PHP, QA, and JenkinsEric CopeJune 25, 2013
  • 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 -– 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 –– A set of QA tools– Installation is via PEAR• Selenium –– 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 -• 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 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 at
  • 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…––
  • 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