SlideShare una empresa de Scribd logo
1 de 28
AdPlatform Framework update
Jan 21, 2015
Seungjoon Lee| joon@sharethis.com
1
Let’s start with problems we have
• No Git Branch Rule
• No Testing framework for Javascript and PHP
• No Code Coverage for Javascript and PHP
• No Continuous Database Integration Rule
• No Task Runner for repetition
• No UserTest or Integration Test
2
Then… I was thinking and researching
• Researching online and Reading books
3
Found the right way in the bathtub
4
Let’s start!
5
Git Branch Model : Git Flow (1)
• Git Flow generates an elegant mental model that is easy to understand
and allows team members to develop a shared understanding of the
branching and releasing processes with Jira.
6
Git Branch Model : Git Flow (2)
• Git + Jira : Easy to see the development progress for managers
7
Git submodule (1)
• It often happens that while working on one project (Adops), you need to
use another project(AdAPI) from within it. Perhaps it’s a library that a third
party developed or that you’re developing separately and using in multiple
parent projects.
8
Git submodule (2)
9
• Decouple the core library : Easy to test and mange
Javascript test runner : Grunt (1)
10
• Why use a task runner?
In one word: Automation. The less work you have to do when performing
repetitive tasks like minification, compilation, unit testing, linting, etc, the
easier your job becomes.
Javascript test runner : Grunt (2)
11
• Configure your task in Gruntfile.js
Package Manager : NPM (JS)
12
• Npm(Node Package Manager) runs through the command line and
manages dependencies for an application.
• Setting dependency in package.json
Package Manager : Composer (PHP)
13
• Composer is a application-level dependency manager for the PHP
programming language that provides a standard format for managing
dependencies of PHP software and required libraries.
• Setting dependency in composer.json
Continuous Database Integration : Phinx (1)
14
• Most database migration tools are framework dependent, complicated,
confusing to install/configure and a pain in the ass to write migrations for.
In less than 5 minutes you can install Phinx, create and execute your first
migration.
Continuous Database Integration : Phinx (2)
15
Javascript UnitTest : Jasmine.js, Karma.js (1)
16
• Jasmine is an open source testing framework for JavaScript. It aims to run
on any JavaScript-enabled platform, to not intrude on the application nor
the IDE, and to have easy-to-read syntax.
• The main goal for Karma is to bring a productive testing environment to
developers. The environment being one where they don't have to set up
loads of configurations, but rather a place where developers can just
write the code and get instant feedback from their tests. (karma.conf.js)
Javascript UnitTest : Jasmine.js, Karma.js (2)
17
Javascript Code Coverage : istanbul
18
• Made by Krishnan Anantheswaran from the YUI team Yahoo! Cocktail
team, Istanbul is extremely easy to use. It is suitable for both browser-
based instrumentation or Node.js application analysis.
• Under the hood, Istanbul uses Esprima to parse JavaScript code and
Escodegen to generate the instrumented version of the code
PHP UnitTest : PHPUnit, Fixture, Clover (1)
19
• PHPUnit is a unit testing framework for the PHP programming language. It
is an instance of the xUnit architecture for unit testing frameworks that
originated with SUnit and became popular with Junit.
• Setting the configuration in phpunit.xml
PHP UnitTest : PHPUnit, Fixture, Clover (2)
20
• One of the most time-consuming parts of writing tests is writing the code
to set the world up in a known state and then return it to its original
state when the test is complete. This known state is called the fixture of
the test
PHP UnitTest : PHPUnit, Fixture, Clover (3)
21
UserTest : Selenium IDE, Selenium Server (1)
22
• Selenium is a portable software testing framework for web applications.
Selenium provides a record/playback tool for authoring tests without
learning a test scripting language (Selenium IDE)
UserTest : Selenium IDE, Selenium Server (2)
23
• java -jar selenium-server-standalone-2.44.0.jar -htmlSuite
"*googlechrome" "http://xxx.com" src/TestFIle.html
report/ReportFile.html
Excellent!
24
Let’s Recap!
25
Let’s Recap!
26
• No Git Branch Rule => Git Flow
• No Testing framework for Javascript and PHP => Jasmine, Karma, PHPUnit
• No Code Coverage for Javascript and PHP => Istanbul, Clover
• No Continuous Database Integration Rule => Phinx
• No Task Runner for repetition => Grunt
• No UserTest or Integration Test => Selenium
Q & A
27
Don't code today what you can't debug tomorrow
28

Más contenido relacionado

La actualidad más candente

Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build process
Bryan Agee
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
Shreeniwas Iyer
 

La actualidad más candente (20)

A journey with Target Platforms
A journey with Target PlatformsA journey with Target Platforms
A journey with Target Platforms
 
Back to basics - PHPUnit
Back to basics - PHPUnitBack to basics - PHPUnit
Back to basics - PHPUnit
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Continuous testing
Continuous testingContinuous testing
Continuous testing
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build process
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – Exove
 
Robot framework Gowthami Goli
Robot framework Gowthami GoliRobot framework Gowthami Goli
Robot framework Gowthami Goli
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot Framework
 
Mozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nMozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10n
 
Testing and QA Open Mic
Testing and QA Open MicTesting and QA Open Mic
Testing and QA Open Mic
 
Introduction to Robot Framework (external)
Introduction to Robot Framework (external)Introduction to Robot Framework (external)
Introduction to Robot Framework (external)
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12
 
Phalcon & Vegas CMF
Phalcon & Vegas CMFPhalcon & Vegas CMF
Phalcon & Vegas CMF
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 

Similar a Framework

Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
Idaf_1er
 

Similar a Framework (20)

An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications Faster
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
PHP - Programming language war, does it matter
PHP - Programming language war, does it matterPHP - Programming language war, does it matter
PHP - Programming language war, does it matter
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
Extending ZF & Extending With ZF
Extending ZF & Extending With ZFExtending ZF & Extending With ZF
Extending ZF & Extending With ZF
 
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP  Trail - Tests and PHP Continuous Integration Enviro...[ENGLISH] TDC 2015 - PHP  Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software Testing
 
Selenium Training in Chennai
Selenium Training in ChennaiSelenium Training in Chennai
Selenium Training in Chennai
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 
Codeception: introduction to php testing (v2 - Aberdeen php)
Codeception: introduction to php testing (v2 - Aberdeen php)Codeception: introduction to php testing (v2 - Aberdeen php)
Codeception: introduction to php testing (v2 - Aberdeen php)
 
Microsoft power point automation-opensourcetestingtools_matrix-1
Microsoft power point   automation-opensourcetestingtools_matrix-1Microsoft power point   automation-opensourcetestingtools_matrix-1
Microsoft power point automation-opensourcetestingtools_matrix-1
 
Microsoft power point automation-opensourcetestingtools_matrix-1
Microsoft power point   automation-opensourcetestingtools_matrix-1Microsoft power point   automation-opensourcetestingtools_matrix-1
Microsoft power point automation-opensourcetestingtools_matrix-1
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 

Framework

  • 1. AdPlatform Framework update Jan 21, 2015 Seungjoon Lee| joon@sharethis.com 1
  • 2. Let’s start with problems we have • No Git Branch Rule • No Testing framework for Javascript and PHP • No Code Coverage for Javascript and PHP • No Continuous Database Integration Rule • No Task Runner for repetition • No UserTest or Integration Test 2
  • 3. Then… I was thinking and researching • Researching online and Reading books 3
  • 4. Found the right way in the bathtub 4
  • 6. Git Branch Model : Git Flow (1) • Git Flow generates an elegant mental model that is easy to understand and allows team members to develop a shared understanding of the branching and releasing processes with Jira. 6
  • 7. Git Branch Model : Git Flow (2) • Git + Jira : Easy to see the development progress for managers 7
  • 8. Git submodule (1) • It often happens that while working on one project (Adops), you need to use another project(AdAPI) from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. 8
  • 9. Git submodule (2) 9 • Decouple the core library : Easy to test and mange
  • 10. Javascript test runner : Grunt (1) 10 • Why use a task runner? In one word: Automation. The less work you have to do when performing repetitive tasks like minification, compilation, unit testing, linting, etc, the easier your job becomes.
  • 11. Javascript test runner : Grunt (2) 11 • Configure your task in Gruntfile.js
  • 12. Package Manager : NPM (JS) 12 • Npm(Node Package Manager) runs through the command line and manages dependencies for an application. • Setting dependency in package.json
  • 13. Package Manager : Composer (PHP) 13 • Composer is a application-level dependency manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries. • Setting dependency in composer.json
  • 14. Continuous Database Integration : Phinx (1) 14 • Most database migration tools are framework dependent, complicated, confusing to install/configure and a pain in the ass to write migrations for. In less than 5 minutes you can install Phinx, create and execute your first migration.
  • 16. Javascript UnitTest : Jasmine.js, Karma.js (1) 16 • Jasmine is an open source testing framework for JavaScript. It aims to run on any JavaScript-enabled platform, to not intrude on the application nor the IDE, and to have easy-to-read syntax. • The main goal for Karma is to bring a productive testing environment to developers. The environment being one where they don't have to set up loads of configurations, but rather a place where developers can just write the code and get instant feedback from their tests. (karma.conf.js)
  • 17. Javascript UnitTest : Jasmine.js, Karma.js (2) 17
  • 18. Javascript Code Coverage : istanbul 18 • Made by Krishnan Anantheswaran from the YUI team Yahoo! Cocktail team, Istanbul is extremely easy to use. It is suitable for both browser- based instrumentation or Node.js application analysis. • Under the hood, Istanbul uses Esprima to parse JavaScript code and Escodegen to generate the instrumented version of the code
  • 19. PHP UnitTest : PHPUnit, Fixture, Clover (1) 19 • PHPUnit is a unit testing framework for the PHP programming language. It is an instance of the xUnit architecture for unit testing frameworks that originated with SUnit and became popular with Junit. • Setting the configuration in phpunit.xml
  • 20. PHP UnitTest : PHPUnit, Fixture, Clover (2) 20 • One of the most time-consuming parts of writing tests is writing the code to set the world up in a known state and then return it to its original state when the test is complete. This known state is called the fixture of the test
  • 21. PHP UnitTest : PHPUnit, Fixture, Clover (3) 21
  • 22. UserTest : Selenium IDE, Selenium Server (1) 22 • Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE)
  • 23. UserTest : Selenium IDE, Selenium Server (2) 23 • java -jar selenium-server-standalone-2.44.0.jar -htmlSuite "*googlechrome" "http://xxx.com" src/TestFIle.html report/ReportFile.html
  • 26. Let’s Recap! 26 • No Git Branch Rule => Git Flow • No Testing framework for Javascript and PHP => Jasmine, Karma, PHPUnit • No Code Coverage for Javascript and PHP => Istanbul, Clover • No Continuous Database Integration Rule => Phinx • No Task Runner for repetition => Grunt • No UserTest or Integration Test => Selenium
  • 28. Don't code today what you can't debug tomorrow 28