3. Who am I?
● My name is Blaine Schmeisser
● Using PHP about 10 years
● Zend PHP Certification
● Created multiple OS PHP QA tools
○ Mostly for Lithium (#li3)
■ li3_quality
■ Mocking / Stubbing classes (aspect oriented)
■ Tons of new assertion methods
BlaineSch@gmail.com
@BlaineSch
github.com/BlaineSch
BlaineSch.com
BlaineSch@gmail.com
github.com/BlaineSch
BlaineSch.com
@BlaineSch
4. My code keeps breaking?
● Standard UT Framework
● Lots of Assertions
● Mocking / Stubbing
● Easy to extend
○ Plugins
○ Custom Assertions
● Lots of Plugins
○ Jenkins
5. What about browser testing?
● User Stories
○ Similar to Ruby's Cucumber
● Multiple Browsers
○ Goutte
○ Selenium
○ WebDriver
○ Sahi
○ Zombie
6. How do I mock a file system?
● Pseudo-file system that lives in memory
● No need to modify your code
● No need to give your CI server extra file
permissions.
vfs:://Stream
7. How do I debug my code?
● Breakpoints
● Walkthrough
● Runtime changes
● Dynamic Code Analysis
○ Code Coverage
○ Code Complexity
● Plugins for Popular Editors
○ Vim
○ Sublime
○ PHPStorm
○ ...more
8. I can tell who wrote what code just
by looking at it.
● Static Code Analysis
● Per-project Standards
● Define Custom Standards
● Configure Existing Standards
● Use with your CI Server (Jenkins/Travis)
○ Guarantee standards on pull requests
PHP CodeSniffer
10. What does this code do?
● Short/long descriptions
● Examples of how to use it
● Link to code/web
● Param types, names, and descriptions
● Return type and description
● Gen in various formats
○ Searchable!
● ...more!
11. I'm writing a ton of code.
● Use a framework
○ Lithium (#li3)
○ Zend Framework 2 (#zf2)
○ Symfony 2
○ WordPress
● Use Modules and Plugins
○ Composer
○ Packagist.org