Session Digital is a UK based Gold Solutions partner...

Preview:

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

http://bit.ly/I0IQGz

All references and slides

Come Join us...http://blog.sessiondigital.com/careers

Recommended