Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Insert photo of speaker here891 pixels h x 688 pixels w
Building Quality with Confidenceand Magento
Alistair SteadTechnical Assurance Manager
sessiondigital.com@alistairstead
Session Digital is a UK based Gold Solutions partner focusing on large scale deployment and integration of Magento Enterprise solutions. Session have delivered technically complex solutions for many high profile brands in the UK and Europe:
DreamsKookai UK & France3663Warner Music InternationalSmythson of Bond StreetACNE StudiosKurt GeigerInterflora
ASSURED
DELIVERY
Building Quality
Magento Projects
with Confidence
Team Roles,
Tools &Processes
Magento LOC
Directories: 2851Files: 7984Lines of Code : 1287442Interfaces: 184Classes: 7011Methods: 41192Anonymous Functions: 4Functions: 31
Repeatable State!Repeatable State
Repeatable State
Repeatable State
Repeatable StateRepeatable StateRepeatable State
Repeatable State
Repeatable State
Repeatable State
Repeatable StateRepeatable State
Vagrant + VirtualBox
Chef Scripted Infrastructure
1287442 lines
Don’t forget..
- - -+++github
feature 1
feature 2
develop
Git-Flow / Github-Flow
Definition of Done
I will describe a unit of workcomplete when:
It meets the ..... requirement.It has ..... tests.
Code Reviews
Code Reviews
ReleaseManager
/** * submittingForgotPasswordWithValidEmailReturnsSuccess * @author Alistair Stead * @group password * @test * */ public function submittingForgotPasswordWithValidEmailReturnsSuccess() { $this->request->setMethod('POST') ->setPost(array('email' => $this->email)); $this->dispatch('admin/index/forgotpassword/'); $this->assertQueryCount('li.success-msg', 1); $this->assertQueryContentContains('li.success-msg', 'A new password was sent to your email address. Please check your email and click Back to Login.'); // Test that the email contains the correct data $emailContent = $this->getResponseEmail() ->getBodyHtml() ->getContent(); // Overriding the response body to be able to use the standard content assertions $this->response->setBody($emailContent); // The email content addresses the fixture user $this->assertQueryContentContains('body', "Dear $this->firstName $this->lastName"); // The fixture users password has been changed $this->assertNotQueryContentContains('body', $this->password); } // submittingForgotPasswordWithValidEmailReturnsSuccess
Static</code>Analysis
PHPCode_Sniffer
Cyclomatic Complexity
Testing
PHPUnit
Mage-Test
Behavioural Testing
AcceptanceCriteria (Y/N)
Feature: Homepage In order to maximise site performance As a website user I need the homepage to be cached in the gateway cache
Scenario: Visit the homepage Given I am on "/" And I reload the page Then the response status code should be 200 Then the response is a cache hit
Behat / Mink
Web Driver / Sahi
ContinuousIntegration
JenkinsOur CI server is called
AntAnt
Application State
Application Content
Application Configuration
Upgrade Hooks@magento
mysql4-data-upgrade-0.7.63-0.7.64mysql4-upgrade-0.7.1-0.7.2
Deploy = Capistrano
Magentify
1 2 3 4Dev CI UAT Prod
Zero downtime deployment
Assured DeliveryDelivering the right features
first time on time!
A quick recap...
Complex Projects
Many People
Clear Requirements
Many Tests
Many Deployments
Zero Defects...
Evaluate & Improve
Questions?Thank you!
@alistairstead
Come Join us...http://blog.sessiondigital.com/careers