Taming Developpement beast (Chris Cornutt) Testing: - Integration - Unit/other tests designed to identify potential errors with the communication between pieces of functionality - Acceptance/system - Run "in browser" to validate functionality of the applications - Compatibility - Ensuring that the software will work with all platforms involved - Performance - Security Version Control Makes it Simple : - CVS - Subversion - Git Tools : - Phing : PHP Based build tool, automates the build process for a site to be deployed XML-Based build file for simple management (PHP) - Ant : Apaches build tool, designed for flexibility for multiple deployements - Capistrano : Tool for automation of tasks on multiple servers (as opposed to just a local build). Allows for rollbacks (Ruby) Frontend Testing: - Selenium - Firefox extension - Session recording for typing clicks etc... - Thee flavors : IDE, Remote Control, Grid - Multiple browser support (IE, Firefox, Safari, Chrome) - WebTests - Based on an Ant build process - Build XML-Based repeatable tests - Worries more about the page than how its rendered - output reports on test results Continuous Integration - phpUnderControl CruiseControl is Java-Based, but build tools for Ant, Phing, Rake, etc... plugins for git svn cvs Output methods include emails, ftp, http, jabber, etc... - Xinc (Native PHP) - Installable via Pear - Written in PHP5 with built-in SVN support - Stats output for build stats, testing summary Syntax tools : - Tidy - PHP Ext - Parsing XML and HTML - CleanRepair is your best friend - Can specify a custom config file - PHPCS - Reduces the code to "tokens" & checks location, surroundings to ensure compliance - Comes with default "sniffs" - PEAR, PHPCS, Zend, Squiz - Command line tool: phpcs Deployement options : SVN (svn up) PEAR installer ssh/scp phar packages rsync ftp/sftp Other manual/automatic process ================================ Step 1 - Planning - What do we have right now ? - What business processes/workflows need to be considered? - Which technologies would we need to invest in ? - What's our release schedule ? - Who's going to run this thing ? Step 2 - Development - Single place to pull from - Qa Branch, Prod Branch, ... Step 3 - The build - Determine the steps you'll need - Think easy - Server builds are good + Local build is even better Step 4 - The push - Where's "here" and where's "there" ? (And what's in beetween that could cause issues...) - Pick the right tools & process for you - Ready ... Set ... Wait... Step 5 - The aftermath - Clean up your mess, young man - Make sure dev is ready to do it all again (Deployement should be simple and auto) - Giving the "all clear" (Be sure to run your tests to ensure that all is happy in prod) That's All, Right ? - Murphy has this law.... Perfect deployement is a myth - Muse be able to roll back (A similar "single-button" solution) - Most tools can help (Included rollback feature, or just the ability to pull the previous version) - Easier with code, harder with data (DB rollback can be tricky) The point of it all : Like flipping a switch, a good build should make deploying your website a simple task, no matter the complexity ccornutt@phpdevelopper.org http://blog.phpdevelopper.org