SlideShare a Scribd company logo
Automated Testing
About Promet

Mission Statement: “Promet Solutions specializes in
developing innovative, complex web applications with open
source technology.”

30+ solutions architects      10 year in business
                                 th

worldwide
                              32 open source contributions
  • Offices in the US
     • Chicago                10+ mobile apps in the past 12 months
     • San Jose
ABOUT JOHNNIE:


                 •   Presenter
                     •   Johnnie Fox
                     •   @johnniefox
                 •   Promet Source
                     •   Director of Development
                     •   Scrum Master
                     •   Project Manager
                     •   Recovering Developer
                     •   @prometsource
ABOUT CHRIS


                          •   Presenter
Insert picture of Chris
                              •   Chris Calip

                          •   Promet Source
                              •   Application Developer
                              •   @prometsource
HISTORY OF DRUPAL TESTING

 Drupal Testing:
 D6 core – Simpletest
 Application specific testing
 - Manual Tests
 - Written test cases – Word documents
 - The spreadsheet of pain. (Checklist)

Challenges -
     Testing different browsers
     Reproducible results
     Providing a record
     Doesn’t test integration with 3rd party API (backend functionality)
CONTINUOUS INTEGRATION:

Continuous Integration (CI) implements continuous processes of applying
quality control — small pieces of effort, applied frequently. Continuous
integration aims to improve the quality of software, and to reduce the time
taken to deliver it, by replacing the traditional practice of applying quality control
after completing all development.


Continuous Integration emerged in the Extreme Programming (XP) community,
and XP advocates Martin Fowler and Kent Beck first wrote about continuous
integration circa 1999.




                                                         Continuous integration - Wikipedia, the free
                                                         encyclopedia : taken from -
                                                         http://en.wikipedia.org/wiki/Continuous_integrationhttp
                                                         ://creativecommons.org/licenses/by-sa/3.0/
HACKATHON TEAM :

    Five. Striving as one. Driven by a passion for continuous automated quality control.




   Ruoran Wang
   Scott Massey
   Chris Calip
   Johnnie Fox
   Michelle Krejci
HACKATHON OBJECTIVE:

Develop, deploy, demonstrate, and identify challenges of
making using ci infrastructure to implement acceptance
tests (unit tests, selenium) on one existing site.
TECHNICAL DETAILS

                              code metrics

                            phpqatools.org

                            user acceptance

 provisions servers with
 testing components




admin gui to trigger test
suites, or view reports
Necessary components


• For necessary components and installation instructions,
  go to:
• Phing Drupal Template
• http://reload.github.com/phing-drupal-template/
• Jenkins Drupal Template
• http://reload.github.com/jenkins-drupal-template
• Phing Drupal Template with User Acceptance Test
• http://github.com/promet/phing-drupal-template
• In addition for phing-drupal-template with user acceptance
  test, you need to install additional pear libraries
  • For more instructions, http://phpqatools.org/
Installing Infrastructure

Initial assumption: your server has several initial software
already

1. Go to https://github.com/promet/phing-drupal-template
2. Three files that you need to use to install infrastructure
3. Put in on your site Drupal root
4. If you want to override it, build.properties
5. Customize variables
EXAMPLE TEST SUITE FOR SITE SUPPORT
Jenkins:
Scheduled 1AM User                     Jenkins: Clone
  Acceptance Test                Production to Test                                PHING: PHPUnit
                                                                              Configuration Load



                                 Jenkins & PHING: User          With Bootstrap and
  PHING: Selenium
                                Acceptance PHPUnit +            what Bootstrap file           Without
   Config Upload                      Selenium                    (ability to use            Bootstrap
                                                                   Drupal API)



PHING: Autodiscover
                                      PHING: Report
                                                                          PHING: Autodiscover
 the Selenium test                    Generated                             the PHPUnit test



                                                                        PHING: Trigger
                                                                                     each
                        Jenkins: If
                               errors
  PHING: Trigger each   found, notify                                    PHPUnit Test and
  Selenium test and     stakeholders                                      generate report
   generate report
                                                         Done
What is Selenium?


 •Selenium automates browsers. That's it. What you do with that power
  is entirely up to you. Primarily it is for automating web applications for
  testing purposes, but is certainly not limited to just that. Boring web-
  based administration tasks can (and should!) also be automated as
  well.
 •Selenium has the support of some of the largest browser vendors who
  have taken (or are taking) steps to make Selenium a native part of
  their browser. It is also the core technology in countless other browser
  automation tools, APIs and frameworks.
• Goes through every page
   • Makes sure header, footer, logos, etc
   • All branding elements in place
Functional Test PHPUnit


• Project Airbox
   • Checkout process that involves passing customer information to third party
     banking API, passes back customer ID
   • Months after completion, API changes broke the application
       • PHPUnit figures out how and where the problem is
       • More importantly, is there a problem?
• Major time saver for detective work
• -- bootstrap option to make use of forked upal without SUT
• https://github.com/chriscalip/upal
• http://drupal.org/node/1567500
• actually installs a complete Drupal site like the regular Drupal installer for every test
 being executed, using a random database prefix and some logic baked into Drupal's
 (regular runtime) core that re-routes all HTTP requests originating from WebTestBase
 into the "child site under test" (the db-prefixed one). Based on that, every test is able
 to specify additional modules to install into that child site, in order to test various
EXAMPLE TEST SUITE FOR DEVELOPMENT SITES

                   Guiding principle: Fast Iteration
Traditional Dev Staging Production and Workflow




           Manual             Manual             Manual

   Local                Dev            Staging            Production




            Lots of commits      Significant
                                 Event (Less
                                 Frequent)
Dev Staging Production Work Flow
with Automated Continuous
Integration Tests

                       Manual                                          Manual
        Manual
                                 Test
Local            Dev                                     Staging                 Production
                                Branch

                                                                 Automatic
                                                                 push if
                                Run Test                         passes
                                 Suite
                                           Jenkins: Clone   Staging DB to test
                                           DB

                                           Jenkins: Run   code-metrics test


                                           Jenkins:   Run user acceptance test


                                           Jenkins:
                                                  Run Drupal Core and
                                           Contribution Simple test
Manual Test


Jenkins: Clone Staging DB to test DB (5 mins)


Jenkins: Run code-metrics test (10-15 mins)


Jenkins: Run user acceptance test (10-15 mins)


Jenkins: Run Drupal Core and Contribution Simple test (Needs work)


Jenkins: RUN ALL (35 mins)
All those test eats up server resources ...


   .
Drupal
                                     ANATOMY OF USER ACCEPTANCE
                  Sites              TEST
                                                                        build.properties
                                                                        project.code.custom =
                                      All                               bathroom conference_room


                                                          Modules


# Chosen File Pattern by project for phpunit ie.. ExampleUnitTest.php bathroom
SampleUnitTest.php                                                          bathroomUnitTest.php
project.phpunit.filepattern = UnitTest.php                                  bathroomSeleniumTest.ph
                                                                                        p
# Selenium                                                            conference room
# Chosen File Pattern by project for selenium ie..
                                                                           conferenceroomUnitTest.ph
ExampleSeleniumTest.php SampleSeleniumTest.php                                         p
project.selenium.filepattern = SeleniumTest.php                         conferenceroomSeleniumTest.
                                                                                    php

                                                                       Kitchen (Contrib)
Example Jenkins Dashboard
Example of Code Metric Test
PHP Mess Detector
EXAMPLE OF PHPUNIT REPORT
GIT POST HOOK TRIGGERING THE TEST SUITE.
http://demosource.prometdev.com/blog


Dev writes the code & test             Client updates database
                                       • Finding a block with Selenium


                             • Dev pushes code
Questions?
www.prometsource.com

       chriscalip@prometsource.com
        johnnie@prometsource.com
            Twitter: @prometsource
Ad

More Related Content

What's hot (20)

How can you improve, harmonize and automate your development process using to...
How can you improve, harmonize and automate your development process using to...How can you improve, harmonize and automate your development process using to...
How can you improve, harmonize and automate your development process using to...
John Ferguson Smart Limited
 
DevOps Game at SGZA
DevOps Game at SGZADevOps Game at SGZA
DevOps Game at SGZA
Dana Pylayeva
 
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
ajevans
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
Dave Olsen
 
Standardizing WordPress Workflow
Standardizing WordPress WorkflowStandardizing WordPress Workflow
Standardizing WordPress Workflow
Digital Strategy Works LLC
 
Seven Jobs You Should Be Running #sqlsat126
Seven Jobs You Should Be Running #sqlsat126Seven Jobs You Should Be Running #sqlsat126
Seven Jobs You Should Be Running #sqlsat126
Mike Hillwig
 
Community building lessons from Ansible
Community building lessons from AnsibleCommunity building lessons from Ansible
Community building lessons from Ansible
Greg DeKoenigsberg
 
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation GameBring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Dana Pylayeva
 
AATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate GameAATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate Game
Dana Pylayeva
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
Andy Kucharski
 
Are You Really Using Kanban?
Are You Really Using Kanban?Are You Really Using Kanban?
Are You Really Using Kanban?
Tom Cudd
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
Derek Jacoby
 
Optimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get thereOptimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get there
Stephen Bell
 
The Seven DevOps Sins
The Seven DevOps SinsThe Seven DevOps Sins
The Seven DevOps Sins
Tom Cudd
 
Bootstrap + Drupal Commerce in less than 45 minutes!
Bootstrap + Drupal Commerce in less than 45 minutes!Bootstrap + Drupal Commerce in less than 45 minutes!
Bootstrap + Drupal Commerce in less than 45 minutes!
Jorge Diaz
 
My Contributor Story
My Contributor StoryMy Contributor Story
My Contributor Story
Marko Heijnen
 
Why I've Not bothered With Drupal 8
Why I've Not bothered With Drupal 8Why I've Not bothered With Drupal 8
Why I've Not bothered With Drupal 8
Robert Carr
 
wp cli- don’t fear the command line
wp cli- don’t fear the command linewp cli- don’t fear the command line
wp cli- don’t fear the command line
Dwayne McDaniel
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practices
meghsweet
 
BADCamp 2012- Drupal Support
BADCamp 2012- Drupal SupportBADCamp 2012- Drupal Support
BADCamp 2012- Drupal Support
meghsweet
 
How can you improve, harmonize and automate your development process using to...
How can you improve, harmonize and automate your development process using to...How can you improve, harmonize and automate your development process using to...
How can you improve, harmonize and automate your development process using to...
John Ferguson Smart Limited
 
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)
ajevans
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
Dave Olsen
 
Seven Jobs You Should Be Running #sqlsat126
Seven Jobs You Should Be Running #sqlsat126Seven Jobs You Should Be Running #sqlsat126
Seven Jobs You Should Be Running #sqlsat126
Mike Hillwig
 
Community building lessons from Ansible
Community building lessons from AnsibleCommunity building lessons from Ansible
Community building lessons from Ansible
Greg DeKoenigsberg
 
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation GameBring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Bring Down the Wall of Confusion with Chocolate, LEGO and Scrum Simulation Game
Dana Pylayeva
 
AATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate GameAATC - Gamifying DevOps with Lego and Chocolate Game
AATC - Gamifying DevOps with Lego and Chocolate Game
Dana Pylayeva
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
Andy Kucharski
 
Are You Really Using Kanban?
Are You Really Using Kanban?Are You Really Using Kanban?
Are You Really Using Kanban?
Tom Cudd
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
Derek Jacoby
 
Optimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get thereOptimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get there
Stephen Bell
 
The Seven DevOps Sins
The Seven DevOps SinsThe Seven DevOps Sins
The Seven DevOps Sins
Tom Cudd
 
Bootstrap + Drupal Commerce in less than 45 minutes!
Bootstrap + Drupal Commerce in less than 45 minutes!Bootstrap + Drupal Commerce in less than 45 minutes!
Bootstrap + Drupal Commerce in less than 45 minutes!
Jorge Diaz
 
My Contributor Story
My Contributor StoryMy Contributor Story
My Contributor Story
Marko Heijnen
 
Why I've Not bothered With Drupal 8
Why I've Not bothered With Drupal 8Why I've Not bothered With Drupal 8
Why I've Not bothered With Drupal 8
Robert Carr
 
wp cli- don’t fear the command line
wp cli- don’t fear the command linewp cli- don’t fear the command line
wp cli- don’t fear the command line
Dwayne McDaniel
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practices
meghsweet
 
BADCamp 2012- Drupal Support
BADCamp 2012- Drupal SupportBADCamp 2012- Drupal Support
BADCamp 2012- Drupal Support
meghsweet
 

Similar to Automated testing DrupalCamp in Asheville (20)

Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009
sstolberg
 
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile wayContinuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Leonard Fingerman
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio world
Codecamp Romania
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
Michael Lihs
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
Mihai-Cristian Fratila
 
Agile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Agile Open Source Performance Test Workshop for Developers, Testers, IT OpsAgile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Agile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Clever Moe
 
Drupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study CaseDrupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study Case
Emanuele Quinto
 
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
SOASTA
 
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
SOASTA
 
Testing In Java
Testing In JavaTesting In Java
Testing In Java
Adrian Treacy
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
Sunil Dalal
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
Tomohide Kakeya
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Rafał Leszko
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Mike McGarr
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
Excella
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
DC Agile Engineering Conference
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
XebiaLabs
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 Medellin
Diego Garber
 
Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009Enabling Agile Testing Through Continuous Integration Agile2009
Enabling Agile Testing Through Continuous Integration Agile2009
sstolberg
 
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile wayContinuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Leonard Fingerman
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio world
Codecamp Romania
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
Michael Lihs
 
Agile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Agile Open Source Performance Test Workshop for Developers, Testers, IT OpsAgile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Agile Open Source Performance Test Workshop for Developers, Testers, IT Ops
Clever Moe
 
Drupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study CaseDrupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study Case
Emanuele Quinto
 
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
SOASTA
 
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
How To Use Jenkins for Continuous Load and Mobile Testing with SOASTA & Cloud...
SOASTA
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
Sunil Dalal
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
Tomohide Kakeya
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Rafał Leszko
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Mike McGarr
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
Excella
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
XebiaLabs
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 Medellin
Diego Garber
 
Ad

More from Promet Source (20)

How To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris CasisHow To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris Casis
Promet Source
 
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew KucharskiDrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
Promet Source
 
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Promet Source
 
Migrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan ManaloMigrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan Manalo
Promet Source
 
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Promet Source
 
Drupal Development with Docker
Drupal Development with DockerDrupal Development with Docker
Drupal Development with Docker
Promet Source
 
Migrating Drupal 7 to Drupal 8
Migrating Drupal 7 to Drupal 8Migrating Drupal 7 to Drupal 8
Migrating Drupal 7 to Drupal 8
Promet Source
 
Web Accessibility in Drupal
Web Accessibility in DrupalWeb Accessibility in Drupal
Web Accessibility in Drupal
Promet Source
 
Drupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond JenkinsDrupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond Jenkins
Promet Source
 
Drupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet SourceDrupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet Source
Promet Source
 
Using Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal SitesUsing Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal Sites
Promet Source
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with Behat
Promet Source
 
Composer tools and frameworks for Drupal
Composer tools and frameworks for DrupalComposer tools and frameworks for Drupal
Composer tools and frameworks for Drupal
Promet Source
 
Responsive Design Testing the Promet Way
Responsive Design Testing the Promet WayResponsive Design Testing the Promet Way
Responsive Design Testing the Promet Way
Promet Source
 
Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process
Promet Source
 
Diy continuous integration
Diy continuous integrationDiy continuous integration
Diy continuous integration
Promet Source
 
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will comeHigher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Promet Source
 
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Promet Source
 
Open Source Software: An Edge For Your Growing Business
Open Source Software: An Edge For Your Growing BusinessOpen Source Software: An Edge For Your Growing Business
Open Source Software: An Edge For Your Growing Business
Promet Source
 
Augmented Reality March Webinar
Augmented Reality March WebinarAugmented Reality March Webinar
Augmented Reality March Webinar
Promet Source
 
How To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris CasisHow To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris Casis
Promet Source
 
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew KucharskiDrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
Promet Source
 
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Promet Source
 
Migrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan ManaloMigrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan Manalo
Promet Source
 
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Promet Source
 
Drupal Development with Docker
Drupal Development with DockerDrupal Development with Docker
Drupal Development with Docker
Promet Source
 
Migrating Drupal 7 to Drupal 8
Migrating Drupal 7 to Drupal 8Migrating Drupal 7 to Drupal 8
Migrating Drupal 7 to Drupal 8
Promet Source
 
Web Accessibility in Drupal
Web Accessibility in DrupalWeb Accessibility in Drupal
Web Accessibility in Drupal
Promet Source
 
Drupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond JenkinsDrupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond Jenkins
Promet Source
 
Drupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet SourceDrupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet Source
Promet Source
 
Using Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal SitesUsing Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal Sites
Promet Source
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with Behat
Promet Source
 
Composer tools and frameworks for Drupal
Composer tools and frameworks for DrupalComposer tools and frameworks for Drupal
Composer tools and frameworks for Drupal
Promet Source
 
Responsive Design Testing the Promet Way
Responsive Design Testing the Promet WayResponsive Design Testing the Promet Way
Responsive Design Testing the Promet Way
Promet Source
 
Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process
Promet Source
 
Diy continuous integration
Diy continuous integrationDiy continuous integration
Diy continuous integration
Promet Source
 
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will comeHigher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Promet Source
 
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Promet Source
 
Open Source Software: An Edge For Your Growing Business
Open Source Software: An Edge For Your Growing BusinessOpen Source Software: An Edge For Your Growing Business
Open Source Software: An Edge For Your Growing Business
Promet Source
 
Augmented Reality March Webinar
Augmented Reality March WebinarAugmented Reality March Webinar
Augmented Reality March Webinar
Promet Source
 
Ad

Recently uploaded (20)

Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 

Automated testing DrupalCamp in Asheville

  • 2. About Promet Mission Statement: “Promet Solutions specializes in developing innovative, complex web applications with open source technology.” 30+ solutions architects 10 year in business th worldwide 32 open source contributions • Offices in the US • Chicago 10+ mobile apps in the past 12 months • San Jose
  • 3. ABOUT JOHNNIE: • Presenter • Johnnie Fox • @johnniefox • Promet Source • Director of Development • Scrum Master • Project Manager • Recovering Developer • @prometsource
  • 4. ABOUT CHRIS • Presenter Insert picture of Chris • Chris Calip • Promet Source • Application Developer • @prometsource
  • 5. HISTORY OF DRUPAL TESTING Drupal Testing: D6 core – Simpletest Application specific testing - Manual Tests - Written test cases – Word documents - The spreadsheet of pain. (Checklist) Challenges - Testing different browsers Reproducible results Providing a record Doesn’t test integration with 3rd party API (backend functionality)
  • 6. CONTINUOUS INTEGRATION: Continuous Integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. Continuous Integration emerged in the Extreme Programming (XP) community, and XP advocates Martin Fowler and Kent Beck first wrote about continuous integration circa 1999. Continuous integration - Wikipedia, the free encyclopedia : taken from - http://en.wikipedia.org/wiki/Continuous_integrationhttp ://creativecommons.org/licenses/by-sa/3.0/
  • 7. HACKATHON TEAM : Five. Striving as one. Driven by a passion for continuous automated quality control. Ruoran Wang Scott Massey Chris Calip Johnnie Fox Michelle Krejci
  • 8. HACKATHON OBJECTIVE: Develop, deploy, demonstrate, and identify challenges of making using ci infrastructure to implement acceptance tests (unit tests, selenium) on one existing site.
  • 9. TECHNICAL DETAILS code metrics phpqatools.org user acceptance provisions servers with testing components admin gui to trigger test suites, or view reports
  • 10. Necessary components • For necessary components and installation instructions, go to: • Phing Drupal Template • http://reload.github.com/phing-drupal-template/ • Jenkins Drupal Template • http://reload.github.com/jenkins-drupal-template • Phing Drupal Template with User Acceptance Test • http://github.com/promet/phing-drupal-template • In addition for phing-drupal-template with user acceptance test, you need to install additional pear libraries • For more instructions, http://phpqatools.org/
  • 11. Installing Infrastructure Initial assumption: your server has several initial software already 1. Go to https://github.com/promet/phing-drupal-template 2. Three files that you need to use to install infrastructure 3. Put in on your site Drupal root 4. If you want to override it, build.properties 5. Customize variables
  • 12. EXAMPLE TEST SUITE FOR SITE SUPPORT
  • 13. Jenkins: Scheduled 1AM User Jenkins: Clone Acceptance Test Production to Test PHING: PHPUnit Configuration Load Jenkins & PHING: User With Bootstrap and PHING: Selenium Acceptance PHPUnit + what Bootstrap file Without Config Upload Selenium (ability to use Bootstrap Drupal API) PHING: Autodiscover PHING: Report PHING: Autodiscover the Selenium test Generated the PHPUnit test PHING: Trigger each Jenkins: If errors PHING: Trigger each found, notify PHPUnit Test and Selenium test and stakeholders generate report generate report Done
  • 14. What is Selenium? •Selenium automates browsers. That's it. What you do with that power is entirely up to you. Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web- based administration tasks can (and should!) also be automated as well. •Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks. • Goes through every page • Makes sure header, footer, logos, etc • All branding elements in place
  • 15. Functional Test PHPUnit • Project Airbox • Checkout process that involves passing customer information to third party banking API, passes back customer ID • Months after completion, API changes broke the application • PHPUnit figures out how and where the problem is • More importantly, is there a problem? • Major time saver for detective work • -- bootstrap option to make use of forked upal without SUT • https://github.com/chriscalip/upal • http://drupal.org/node/1567500 • actually installs a complete Drupal site like the regular Drupal installer for every test being executed, using a random database prefix and some logic baked into Drupal's (regular runtime) core that re-routes all HTTP requests originating from WebTestBase into the "child site under test" (the db-prefixed one). Based on that, every test is able to specify additional modules to install into that child site, in order to test various
  • 16. EXAMPLE TEST SUITE FOR DEVELOPMENT SITES Guiding principle: Fast Iteration
  • 17. Traditional Dev Staging Production and Workflow Manual Manual Manual Local Dev Staging Production Lots of commits Significant Event (Less Frequent)
  • 18. Dev Staging Production Work Flow with Automated Continuous Integration Tests Manual Manual Manual Test Local Dev Staging Production Branch Automatic push if Run Test passes Suite Jenkins: Clone Staging DB to test DB Jenkins: Run code-metrics test Jenkins: Run user acceptance test Jenkins: Run Drupal Core and Contribution Simple test
  • 19. Manual Test Jenkins: Clone Staging DB to test DB (5 mins) Jenkins: Run code-metrics test (10-15 mins) Jenkins: Run user acceptance test (10-15 mins) Jenkins: Run Drupal Core and Contribution Simple test (Needs work) Jenkins: RUN ALL (35 mins)
  • 20. All those test eats up server resources ... .
  • 21. Drupal ANATOMY OF USER ACCEPTANCE Sites TEST build.properties project.code.custom = All bathroom conference_room Modules # Chosen File Pattern by project for phpunit ie.. ExampleUnitTest.php bathroom SampleUnitTest.php bathroomUnitTest.php project.phpunit.filepattern = UnitTest.php bathroomSeleniumTest.ph p # Selenium conference room # Chosen File Pattern by project for selenium ie.. conferenceroomUnitTest.ph ExampleSeleniumTest.php SampleSeleniumTest.php p project.selenium.filepattern = SeleniumTest.php conferenceroomSeleniumTest. php Kitchen (Contrib)
  • 23. Example of Code Metric Test PHP Mess Detector
  • 25. GIT POST HOOK TRIGGERING THE TEST SUITE. http://demosource.prometdev.com/blog Dev writes the code & test Client updates database • Finding a block with Selenium • Dev pushes code