Upload
sebastian-marek
View
3.264
Download
1
Embed Size (px)
DESCRIPTION
Over the past two years we’ve been pushing to improve our automated testing practices within Plusnet and to win full support for it within the company across the spectrum of fellow developers, project managers and upper management. It took a while to agree on software we want to use, and standards we want to follow, but now all new code is being continuously built and tested and the results of that are visible business-wide. We use PHP_CodeSniffer to verify that we follow our coding standards, PHPDocumentor to generate automated API documentation, PHPUnit to run test suites and phpUnderControl to run all these tools regulary, at least once a day and to generate aggregated reports. Finally, Sonar allows us to create and publish reports visible to everybody and more importantly reports that everybody can understand. Setting it all up can be a tough exercise, but if you prepare to it upfront you might actually find it quite exciting! So, you strongly believe this is the way you should be developing your code, but you don’t really know where to start? Let me show you how our journey began. You don’t know how to convince your fellow developers to follow you? I’ll tell you how to establish a strong team that will follow you. Your managers seem to be more interested in delivering your project on time and don’t really see a point in spending additional time on unit testing and documenting your code? Maybe you haven’t shown them the benefits of continuous integration in a way they can understand. I’ll show you what worked for us.
Citation preview
PHP North West 2010PHP North West 2010
Sebastian Marek, Senior Software Engineer
The Journey Towards Continuous Integration
@proofek
a Pole living in Sheffield nearly 10 years PHP
experience co-author of 2 PHP books big fan of process
automation TDD and CI wants to be a knight
One Morning Long Ago
New experience
Alpha-box set up New development processes Staging platform and QA team Deployment procedures Fixing problems Working on projects
At the Foot of Mount Doom
increased maintenance time
growing problem numbers
code harder to understand and follow
complex and time consuming testing
Looking for help!
First frustrations
ad hoc builds mixture of php3 and php4 learn as you go no standards
Forming up the fellowship
Stuart Grimshaw Simon Westcott Ben Selby Sebastian Marek Rowan Merewood Ben Longden
Calling the council
Who? managers developers
What? threats opportunities planning implementation
http://www.flickr.com/photos/pedromourapinheiro/3272323691/in/photostream/
It's always about the money
Design debt Late fees Interests
http://www.flickr.com/photos/your_teacher/1040476355/in/photostream/
Finding the best way
VS.
Support & roadmap
http://www.flickr.com/photos/jannem/3312115991/in/photostream/
Metrics and reports
http://www.flickr.com/photos/aussiegall/286709039/in/photostream/
Joining more powerful allies
Automation
http://www.flickr.com/photos/matthileo/3552898254/in/photostream/
East front
Automated builds
Cruicecontrol addon PHPUnit integration phpDocumentor
integration code metrics generation code coverage reports checkstyle report
integration PHP Depend integration PHPMD support and many more
PHPUnit
Industry recognised xUnit testing framework for PHP, supporting: mock objects database testing code coverage analysis
integrating selenium RC continuous integration platforms like CruiseControl,
Hudson, Bamboo
phpDocumentor
automated documentation for PHP
supports different formats: HTML, PDF, CHM, XML
web and cli interface easily configurable
PHP_Codesniffer
Based on defined coding standards Detects coding standards violation Extendable and configurable Codebrowser
Code coverage report
Be always on top of your tests Code coverage ratio Configurable thresholds Clover format Html format
Software metrics - PHP Depend
Code measures Cyclomatic Complexity NPath Complexity CodeRank Lines Of Code
PHP Mess Detector
Intelligent code analyser Possible bugs Suboptimal code Overcomplicated
expressions Unused parameters,
methods, properties
Buildbox maintenance
New modules added Increasing build time Often crashes Stability problems Hardware issues
phpUnderControl
Upgrades needed
Hudson – next generation
easy installation easy configuration plugin support distributed builds multi-language support dependency tracking
Hudson
More automation
git - distributed version control system AIE – alpha integrated environment capistrano
automated deployment build script management
Selenium
Automated web apps testing
Regression testing Headless builds
One ring to rule them all
http://www.flickr.com/photos/cosmic_bandita/2218419160/in/photostream/
West front
Sonar
quality management platform
continuous analysis easily extendable and
configurable
Sonar
Business wide visibility
Meaningful reports Responsibility and ownership KPI Goals
Radiator view
Reports
The army needs to follow the leader
Lead by example firm, but friendly and helpful never forget about training clear and simple rules praise vs. punishment
You broke the build!
Where's the build?
Works on my machine?!
It's your time now
Quick guide
1. Investigate
2. Trial
3. Form a team
4. Small steps
5. Be visible
6. Automate
Resources
PHPUnit - http://www.phpunit.de/ phpUnderControl - http://phpundercontrol.org/ Hudson - http://hudson-ci.org/ Sonar - http://www.sonarsource.org/ phpDocumentor - http://www.phpdoc.org/ PHP_CodeSniffer -
http://pear.php.net/package/PHP_CodeSniffer/ PHP Depend - http://pdepend.org/ PHP Mess Detector - http://phpmd.org/ Selenium - http://seleniumhq.org/ xDebug - http://www.xdebug.org/
Q & A
Any questions?
http://joind.in/2052