Experienced developers, most important part of startup – be agile, fastest route.Break things often, small scale, nothing is critical yet
Paradigm shift in development of software and how products/companies are being built is occurring right nowperiodic releases -> continuous deploymentparallel shift in desktop applications -> internet applicationsPeriodic ReleasesSlower to get feedbackBugs remain exposedDeploys are a significant event with overheade.g. Microsoft Office 2007 -> 2010Continuous DeploymentInstant feedbackQuick features are easy to add/remove (and test) reliably Increased control over what’s pushed out to userse.g. Google Docs
Technology StackPHP, MongoDB, Redisgit + githubRackspace cloudWhat we use it forHeyo API - communicates with mobile appsHTTP inputJSON outputAPI endpointsOnce app is deployed endpoints are fixedEndpoints can only be added/enhanced/fixedUse PHPUnit for Functional Testing as opposed to Unit Testing Lowest hanging fruitSame concept, except higher levelDon’t test every internal function, just test exposed endpoints and overall system behavior
write code locallywrite tests locallyrun new tests locallycommit codedeploy to development serverrun all tests on development serverdeploy to production serverrun common sense test on production serverTest client against dev server, anything that touches an external APIDev + client work togetherDeploying clients and servers don’t have to be in sync
Instantaneous benefits When you run tests, you’re testing everything, not just code you just wrote Sure that it’s reliable – anybody can write tests saying “small => big”, small pushes, easy to find problems, easy to rollbackShowgit commit log – small changes, problems
Iphone appDrawbacks/challenges Not possible with mobile appsAn app that gets updated often, gets annoyingExample of native apps that are doing cd natively (chrome)Challenging to test against external APIs (ieFacebook connect) No way of knowing that 3rd party will adhere to your specsNot all code reviewed before deployed
How it has affected our workflowBug fixesWrite test that exposes bugResponsible developer gets notified and fixes the relevant code until the test passesNever being a bug againStart with tests that test core functionality, then as problems arise, continuously build up test suiteStarted with a dozen tests and as we found more bugs, build it as you need itTesting suite becomes the spec simple api, json outputServer code built to conform to testsGot ahead ofClient code uses tests as design spec
Focus on fast, working codeHTTP/JSON – easy for testingEvery language has frameworks e.g. selenium,junit
RecapFocus on fast, working codeHTTP/JSON – easy for testingEvery language has frameworks e.g. selenium,junitTeam city