Presentation is loading. Please wait.

Presentation is loading. Please wait.

PHP, QA, and Jenkins Eric Cope June 25, 2013

Similar presentations

Presentation on theme: "PHP, QA, and Jenkins Eric Cope June 25, 2013"— Presentation transcript:

1 PHP, QA, and Jenkins Eric Cope June 25, 2013

2 About Me I run Voltamp Media Inc., a 1-man web-dev shop PHP-literate since 2002 CodeIgniter since 2005 (1.6 whenever that was) 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 a java 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 plugins Static Code Analysis Plug-insClover PHP PluginPlot plugin DRY PluginCheckstyle PluginPMD Plugin Git PluginHTML Publisher PluginxUnit 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 as needed Test by running: % ant /path/to/build.xml More at http://ant.apache.or g

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 – data providers YAML files can be used as a data provider too – Calls the provider (returns an array) – For each row it calls the test The YAML is different!

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. CIUnit makes using PHPUnit and CI better, but setup is painful. – End case of parent controller Correct parent class in setUp, but not in the testMethod! MY_Controller vs. Controller – $this->CI = set_controller('MY_Controller');

14 My Issues - Selenium Selenium has matured quite a bit, but documentation and support is still very lean. PHPUnit’s Selenium2 class is much better, but still leaves much to be desired. – Click() does not wait for the page to load after a form submission. Selenese supported clickandwait(), but I can’t find documentation… – selenium/blob/master/Tests/Selenium2TestCaseTest.p hp selenium/blob/master/Tests/Selenium2TestCaseTest.p hp – -with-selenium

15 Still to Learn/Do Mocks Dependency Injection Code Coverage DRY-er! More Integration coverage with Selenium Exclude External Libraries in analysis || fix them! Better TDD / BDD

Download ppt "PHP, QA, and Jenkins Eric Cope June 25, 2013"

Similar presentations

Ads by Google