SlideShare una empresa de Scribd logo
1 de 111
Enterprise Build and Test
in the Cloud

Carlos Sanchez
G2iX
About me

>   Sr. Solutions
    Architect at G2iX
>   Member of Apache
    Maven PMC,
    Continuum, Archiva
>   Eclipse IAM co-lead
>   etc...



                          2
Index

1.   The tools
2.   Maven Integration Tests
3.   Maven & Selenium
4.   Adding Continuum to the Mix
5.   Testing in Different Environments
6.   And Now in the Cloud




                                         3
1. The tools




               4
Build: Apache Maven




                      5
Build: Apache Maven

>   Build tool and more




                          5
Build: Apache Maven

>   Build tool and more
>   Dependency management




                            5
Build: Apache Maven

>   Build tool and more
>   Dependency management
>   Execution of unit/integration tests




                                          5
Build: Apache Maven

>   Build tool and more
>   Dependency management
>   Execution of unit/integration tests
>   Start/stop application server




                                          5
Build: Apache Maven

>   Build tool and more
>   Dependency management
>   Execution of unit/integration tests
>   Start/stop application server
>   Automatic application deployment




                                          5
Test Cases: TestNG




                     6
Test Cases: TestNG

>   Unit/integration tests




                             6
Test Cases: TestNG

>   Unit/integration tests
>   parameterized tests




                             6
Test Cases: TestNG

>   Unit/integration tests
>   parameterized tests
>   parallel testing




                             6
Integration Tests: Selenium
Integration Tests: Selenium

>   UI and Integration testing
Integration Tests: Selenium

>   UI and Integration testing
>   Tests run in the browser
    • support for multiple browsers
Integration Tests: Selenium

>   UI and Integration testing
>   Tests run in the browser
    • support for multiple browsers
>   Tests can be recorded
    • no need for developers writing tests
     •   Selenium IDE Firefox plugin
Continuous Integration: Apache Continuum




                                           8
Continuous Integration: Apache Continuum

>   Tight integration with Apache Maven
    • dependency handling




                                           8
Continuous Integration: Apache Continuum

>   Tight integration with Apache Maven
    • dependency handling
>   Trigger builds
    • when integration tests change
    • when the webapp changes
    • when the webapp dependencies change



                                            8
Cloud Computing: Amazon Web Services




                                       9
Cloud Computing: Amazon Web Services

>   Amazon S3
    • storage




                                       9
Cloud Computing: Amazon Web Services

>   Amazon S3
    • storage
>   Amazon SQS
    • queue service




                                       9
Cloud Computing: Amazon Web Services

>   Amazon S3
    • storage
>   Amazon SQS
    • queue service
>   Amazon Mechanical Turk
    • manpower



                                       9
Cloud Computing: Amazon Web Services

>   Amazon S3
    • storage
>   Amazon SQS
    • queue service
>   Amazon Mechanical Turk
    • manpower
>   Amazon EC2
    • computation
                                       9
2. Maven integration tests




                             10
The webapp to test

>   appfuse-struts




                     11
A new Maven project

>   appfuse-selenium



                 <groupId>org.appfuse</groupId>
                 <artifactId>appfuse-selenium</artifactId>
                 <version>2.0.2-SNAPSHOT</version>
                 <packaging>war</packaging>
                 <name>AppFuse Selenium testing</name>




                                                             12
that depends on

>   appfuse-struts



                     <dependency>
                      <groupId>org.appfuse</groupId>
                      <artifactId>appfuse-struts</artifactId>
                      <version>2.0.2</version>
                      <type>war</type>
                     </dependency>



                                                                13
using Cargo to run it

>   automatically




             <plugin>
               <groupId>org.codehaus.cargo</groupId>
               <artifactId>cargo-maven2-plugin</artifactId>




                                                              14
Record Selenium tests

>   SeleniumIDE




                        15
as Java




          16
test cases
                         public void setUp() throws Exception {
>   using Selenium API       setUp("http://localhost:18880/", "*chrome");
                         }
                         public void testNew() throws Exception {
                             selenium.open("/mainMenu.html");
                             selenium.click("link=Administration");
                             selenium.waitForPageToLoad("30000");
                             selenium.type("j_password", "admin");
                             selenium.click("rememberMe");
                             selenium.click("//input[@name='login']");
                             selenium.waitForPageToLoad("30000");
                             selenium.click("link=Edit Profile");
                             selenium.waitForPageToLoad("30000");
                             selenium.click("link=Main Menu");
                             selenium.waitForPageToLoad("30000");
                             selenium.click("link=Edit Profile");
                             selenium.waitForPageToLoad("30000");
                             selenium.click("document.forms[0].elements[24]");
                             selenium.waitForPageToLoad("30000");
                         }




                                                                                 17
breakpoint

>   Selenium tests in Maven IT project




                                         18
3. Maven & Selenium




                      19
Selenium Architecture




                        Selenium
                         server




                                   20
Maven & Selenium

>   Start Selenium server locally
>   Run integration tests
>   Stop selenium server




                                    21
Selenium Maven plugin

>   http://mojo.codehaus.org/selenium-maven-plugin

>   selenium:start-server
>   selenium:stop-server




                                                     22
Selenium Maven plugin
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>selenium-maven-plugin</artifactId>
         <version>1.0-rc-1</version>
         <executions>
           <execution>
             <id>start-selenium</id>
             <phase>pre-integration-test</phase>
             <goals>
                <goal>start-server</goal>
             </goals>
           </execution>
         </executions>
         <configuration>
           <background>${selenium.background}</background>
         </configuration>
       </plugin>




                                                             23
24
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
log4j:WARN No appenders could be found for logger
(com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage).
log4j:WARN Please initialize the log4j system properly.
DEBUG [btpool0-5] UserAction.edit(117) | checking for remember me login...
DEBUG [btpool0-8] LookupDaoHibernate.getRoles(20) | Retrieving all role names...
DEBUG [btpool0-8] StartupListener.setupContext(102) | Drop-down initialization complete [OK]
INFO [btpool0-8] ReloadAction.execute(34) | reload complete, reloading user back to: http://localhost:
18880/admin/activeUsers.html
DEBUG [btpool0-3] UserAction.edit(117) | checking for remember me login...
DEBUG [btpool0-3] UserAction.edit(117) | checking for remember me login...
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 89.703 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [cargo:stop {execution: stop-container}]
2009-03-23 16:41:42.176:/appfuse-selenium-2.0.2-SNAPSHOT:INFO: Closing Spring root
WebApplicationContext
[INFO] [install:install]
[INFO] Installing /Users/csanchez/dev/maestro/appfuse-selenium/target/appfuse-selenium-2.0.2-
SNAPSHOT.war to /Users/csanchez/.m2/repository/org/appfuse/appfuse-selenium/2.0.2-SNAPSHOT/appfuse-
selenium-2.0.2-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 20 seconds
[INFO] Finished at: Mon Mar 23 16:41:45 CET 2009
[INFO] Final Memory: 43M/63M
[INFO] ------------------------------------------------------------------------
2009-03-23 16:41:46.168::INFO: Shutdown hook executing
2009-03-23 16:41:46.169::INFO: Shutdown hook complete


                                                                                                         25
breakpoint

>   Selenium tests in Maven IT project
>   running locally in the browser




                                         26
4. Adding Continuum to the Mix




                                 27
Continuum




            28
Continuum

>   Build the webapp if




                          28
Continuum

>   Build the webapp if
    • the webapp changes




                           28
Continuum

>   Build the webapp if
    • the webapp changes
    • the dependencies change




                                28
Continuum

>   Build the webapp if
    • the webapp changes
    • the dependencies change
>   Run the integration tests




                                28
Continuum

>   Build the webapp if
    • the webapp changes
    • the dependencies change
>   Run the integration tests
    • if the ITs change




                                28
Continuum

>   Build the webapp if
    • the webapp changes
    • the dependencies change
>   Run the integration tests
    • if the ITs change
    • if the webapp changes



                                28
Continuum

>   Add appfuse-struts
>   Add appfuse-selenium




                           29
Selenium headless

>   Most likely needed

>   Use *nix X Virtual Frame Buffer

>   In Maven
    • selenium:xvfb



                                      30
breakpoint

>   Selenium tests in Maven IT project
>   running locally in the browser
>   triggered by Continuum when there is any change
    to webapp, tests or dependencies




                                                      31
5. Testing in different environments




                                       32
Multi environment




                    33
Multi environment
               Multiple Browsers




                                   33
Multi environment
               Multiple Browsers




           Multiple Operating Systems




                                        33
Multi environment
               Multiple Browsers




           Multiple Operating Systems




                                        33
Parallel

>   Run tests in parallel
    • in each browser
    • several browsers per test




                                  34
Parallel

>   Faster testing
>   Load testing




           Credits: XKCD
                           35
Selenium Grid




                36
37
38
TestNG properties

>   Allows to run the same tests in different
    environments

>   and in parallel




                                                39
TestNG properties

   <suite name="Example" parallel="tests" thread-count="3">
     <test name="iexplore">
       <parameter name="browser" value="*iexplore"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
     <test name="firefox2">
       <parameter name="browser" value="*firefox2"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
     <test name="opera">
       <parameter name="browser" value="*opera"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
   </suite>




                                                              40
TestNG properties

   <suite name="Example" parallel="tests" thread-count="3">
     <test name="iexplore">
       <parameter name="browser" value="*iexplore"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
     <test name="firefox2">
       <parameter name="browser" value="*firefox2"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
     <test name="opera">
       <parameter name="browser" value="*opera"/>
       <packages>
         <package name="org.appfuse.webapp.selenium" />
       </packages>
     </test>
   </suite>




                                                              40
breakpoint

>   Selenium tests in Maven IT project
>   running locally in several browsers




                                          41
6. and now in the Cloud




                          42
$$$




      43
$$$




>   Machines cost money




                          43
$$$




>   Machines cost money
>   Bandwidth costs money




                            43
$$$




>   Machines cost money
>   Bandwidth costs money
>   Electricity costs money



                              43
$$$




>   Machines cost money
>   Bandwidth costs money
>   Electricity costs money
>   Server administration costs money


                                        43
Resource Optimization

>   test servers working 10-20% of the time




                                              44
Predictions cost money
    Infrastructure
        Cost $




                                      time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                      Predicted
                                      Demand




                                         time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                      Predicted
                                      Demand

                                      Traditional
                                      Hardware




                                         time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $



           Large
           Capital
         Expenditure


                                        Predicted
                                        Demand

                                        Traditional
                                        Hardware




                                           time
                       Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                      Predicted
                                      Demand

                                      Traditional
                                      Hardware




                                         time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                      Predicted
                                      Demand

                                      Traditional
                                      Hardware


                                       Actual
                                      Demand




                                         time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                                Predicted
                                                Demand

                                  Opportunity   Traditional
                                    Cost        Hardware


                                                 Actual
                                                Demand




                                                   time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $



                                                You just lost
                                                 customers




                                                            Predicted
                                                            Demand

                                  Opportunity                   Traditional
                                    Cost                        Hardware


                                                                 Actual
                                                                Demand




                                                                   time
                     Source: Amazon
Predictions cost money
    Infrastructure
        Cost $




                                      Predicted
                                      Demand

                                      Traditional
                                      Hardware


                                       Actual
                                      Demand

                                       Automated
                                      Virtualization




                                          time
                     Source: Amazon
Availability

>   Can you get 3000 machines in 3 days?




                                           46
Amazon EC2

>   Elastic Compute Cloud

>   Machines on demand




                            47
Amazon EC2

>   pay per hour
    • same price for
     •   10 machines / 1 hour
     •   1 machine / 10 hours
>   unlimited number of
    machines
>   start in couple
    minutes


                                48
AMIs




       49
AMIs

       Amazon Machine Images




                               49
AMIs

       Amazon Machine Images




          Bundle your own


                               49
Countless possibilities

>   Internet Explorer
>   Firefox 2
>   Opera
>   Safari
>   Firefox 3
>   Firefox 2
>   etc...
>   no OS X :(

                          50
Amazon AMIs




              51
Amazon AMIs

>   Create AMIs for different environments to test




                                                     51
Amazon AMIs

>   Create AMIs for different environments to test
>   Read user data to customize the images at runtime
    • where is the Selenium Hub




                                                        51
Maven EC2 plugin

>   in progress

>   http://mojo.codehaus.org/maven-ec2-plugin
    • start Amazon AMIs
    • stop at the end of the build
    • pass on user data



                                                52
Workflow




          53
Starting point




                 Amazon EC2
Starting point
Build is triggered
Start Images
Start Images
Register with Hub
Tests call Selenium
Distribute Tests
Run tests against webapp
Return results to Hub
Return results to builder
Kill Images
64
Questions?




             65
Carlos Sanchez
csanchez@g2ix,com
carlos@apache.org
http://www.carlossanchez.eu

Twitter: csanchez

Más contenido relacionado

La actualidad más candente

Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaEdureka!
 
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)Taras Lytvyn
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web DevelopmentHong Jiang
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回haruki ueno
 
Cross-browser testing in the real world
Cross-browser testing in the real worldCross-browser testing in the real world
Cross-browser testing in the real worldMartin Kleppmann
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Fátima Casaú Pérez
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopArun Gupta
 
Upgrading to Selenium WebDriver version 3
Upgrading to Selenium WebDriver version 3Upgrading to Selenium WebDriver version 3
Upgrading to Selenium WebDriver version 3Alan Richardson
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019Matt Raible
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Matt Raible
 
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Matt Raible
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiAgile Testing Alliance
 

La actualidad más candente (20)

Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | Edureka
 
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
 
Os Johnson
Os JohnsonOs Johnson
Os Johnson
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
 
Cross-browser testing in the real world
Cross-browser testing in the real worldCross-browser testing in the real world
Cross-browser testing in the real world
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?Spring IO '15 - Developing microservices, Spring Boot or Grails?
Spring IO '15 - Developing microservices, Spring Boot or Grails?
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Upgrading to Selenium WebDriver version 3
Upgrading to Selenium WebDriver version 3Upgrading to Selenium WebDriver version 3
Upgrading to Selenium WebDriver version 3
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Grails Spring Boot
Grails Spring BootGrails Spring Boot
Grails Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
 
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
 

Destacado

Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012Carlos Sanchez
 
I Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROII Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROIemfluence
 
Combining Context with Signals in the IoT (longer version)
Combining Context with Signals in the IoT (longer version)Combining Context with Signals in the IoT (longer version)
Combining Context with Signals in the IoT (longer version)Andy Piper
 
The Big Power Shift in Media
The Big Power Shift in MediaThe Big Power Shift in Media
The Big Power Shift in MediaIsabelle Quevilly
 
Using Sakai with Multiple Locales
Using Sakai with Multiple LocalesUsing Sakai with Multiple Locales
Using Sakai with Multiple Localesballsy333
 
Coordinating Senior Care with Intuit's Weave
Coordinating Senior Care with Intuit's Weave Coordinating Senior Care with Intuit's Weave
Coordinating Senior Care with Intuit's Weave Ted Drake
 
Throttle and Debounce Patterns in Web Apps
Throttle and Debounce Patterns in Web AppsThrottle and Debounce Patterns in Web Apps
Throttle and Debounce Patterns in Web AppsAlmir Filho
 
Peter Karney: Intro to the Digital catapult
Peter Karney: Intro to the Digital catapultPeter Karney: Intro to the Digital catapult
Peter Karney: Intro to the Digital catapulthuguk
 
Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Matteo Figus
 
Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias    Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias Hélio Medeiros
 
Wakanda#1
Wakanda#1Wakanda#1
Wakanda#1kmiyako
 
Making Mobile the Default
Making Mobile the DefaultMaking Mobile the Default
Making Mobile the Defaultgvwebteam
 
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osm
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osmMartijn van Exel - Collaborate to compete: Regain your Competitive Edge with osm
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osmOSMFstateofthemap
 
Questions not Stories, Agile 2013
Questions not Stories, Agile 2013Questions not Stories, Agile 2013
Questions not Stories, Agile 2013Adrian Howard
 
With great power comes great (development) responsibility
With great power comes great (development) responsibilityWith great power comes great (development) responsibility
With great power comes great (development) responsibilitySally Lait
 
MongoUK - Approaching 1 billion documents with MongoDB1 Billion Documents
MongoUK - Approaching 1 billion documents with MongoDB1 Billion DocumentsMongoUK - Approaching 1 billion documents with MongoDB1 Billion Documents
MongoUK - Approaching 1 billion documents with MongoDB1 Billion DocumentsBoxed Ice
 
An Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp PhoenixAn Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp Phoenixvegasgeek
 

Destacado (20)

Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012Puppet for Java developers - JavaZone NO 2012
Puppet for Java developers - JavaZone NO 2012
 
ChemSpider – disseminating data and enabling an abundance of chemistry platforms
ChemSpider – disseminating data and enabling an abundance of chemistry platformsChemSpider – disseminating data and enabling an abundance of chemistry platforms
ChemSpider – disseminating data and enabling an abundance of chemistry platforms
 
I Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROII Want My $28! Rockin' Email Marketing ROI
I Want My $28! Rockin' Email Marketing ROI
 
Combining Context with Signals in the IoT (longer version)
Combining Context with Signals in the IoT (longer version)Combining Context with Signals in the IoT (longer version)
Combining Context with Signals in the IoT (longer version)
 
The Big Power Shift in Media
The Big Power Shift in MediaThe Big Power Shift in Media
The Big Power Shift in Media
 
Using Sakai with Multiple Locales
Using Sakai with Multiple LocalesUsing Sakai with Multiple Locales
Using Sakai with Multiple Locales
 
Coordinating Senior Care with Intuit's Weave
Coordinating Senior Care with Intuit's Weave Coordinating Senior Care with Intuit's Weave
Coordinating Senior Care with Intuit's Weave
 
Throttle and Debounce Patterns in Web Apps
Throttle and Debounce Patterns in Web AppsThrottle and Debounce Patterns in Web Apps
Throttle and Debounce Patterns in Web Apps
 
Peter Karney: Intro to the Digital catapult
Peter Karney: Intro to the Digital catapultPeter Karney: Intro to the Digital catapult
Peter Karney: Intro to the Digital catapult
 
Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014
 
Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias    Desconf 2011 - Usar e esquecer suas ideias
Desconf 2011 - Usar e esquecer suas ideias
 
Wakanda#1
Wakanda#1Wakanda#1
Wakanda#1
 
Making Mobile the Default
Making Mobile the DefaultMaking Mobile the Default
Making Mobile the Default
 
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osm
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osmMartijn van Exel - Collaborate to compete: Regain your Competitive Edge with osm
Martijn van Exel - Collaborate to compete: Regain your Competitive Edge with osm
 
Questions not Stories, Agile 2013
Questions not Stories, Agile 2013Questions not Stories, Agile 2013
Questions not Stories, Agile 2013
 
Sass conferencia css-sp
Sass conferencia css-spSass conferencia css-sp
Sass conferencia css-sp
 
Real World F# - SDD 2015
Real World F# -  SDD 2015Real World F# -  SDD 2015
Real World F# - SDD 2015
 
With great power comes great (development) responsibility
With great power comes great (development) responsibilityWith great power comes great (development) responsibility
With great power comes great (development) responsibility
 
MongoUK - Approaching 1 billion documents with MongoDB1 Billion Documents
MongoUK - Approaching 1 billion documents with MongoDB1 Billion DocumentsMongoUK - Approaching 1 billion documents with MongoDB1 Billion Documents
MongoUK - Approaching 1 billion documents with MongoDB1 Billion Documents
 
An Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp PhoenixAn Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp Phoenix
 

Similar a Enterprise Build And Test In The Cloud

Step by step - Selenium 3 web-driver - From Scratch
Step by step - Selenium 3 web-driver - From Scratch  Step by step - Selenium 3 web-driver - From Scratch
Step by step - Selenium 3 web-driver - From Scratch Haitham Refaat
 
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.Richard Langlois P. Eng.
 
Testing Ajax Web Applications
Testing Ajax Web ApplicationsTesting Ajax Web Applications
Testing Ajax Web ApplicationsTed Husted
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance TestingAlan Hecht
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App EngineInphina Technologies
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App EngineIndicThreads
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialRaghavan Mohan
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011camp_drupal_ua
 
2013 10-10 selenium presentation to ocjug
2013 10-10 selenium presentation to ocjug2013 10-10 selenium presentation to ocjug
2013 10-10 selenium presentation to ocjugPhilip Schlesinger
 

Similar a Enterprise Build And Test In The Cloud (20)

Step by step - Selenium 3 web-driver - From Scratch
Step by step - Selenium 3 web-driver - From Scratch  Step by step - Selenium 3 web-driver - From Scratch
Step by step - Selenium 3 web-driver - From Scratch
 
Build system
Build systemBuild system
Build system
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Maven advanced
Maven advancedMaven advanced
Maven advanced
 
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
 
Selenium WebDriver FAQ's
Selenium WebDriver FAQ'sSelenium WebDriver FAQ's
Selenium WebDriver FAQ's
 
Testing Ajax Web Applications
Testing Ajax Web ApplicationsTesting Ajax Web Applications
Testing Ajax Web Applications
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Maven
MavenMaven
Maven
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance Testing
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorial
 
Sel
SelSel
Sel
 
Apache Maven basics
Apache Maven basicsApache Maven basics
Apache Maven basics
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
 
Releasing Projects Using Maven
Releasing Projects Using MavenReleasing Projects Using Maven
Releasing Projects Using Maven
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
 
2013 10-10 selenium presentation to ocjug
2013 10-10 selenium presentation to ocjug2013 10-10 selenium presentation to ocjug
2013 10-10 selenium presentation to ocjug
 

Más de Carlos Sanchez

Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...Carlos Sanchez
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryCarlos Sanchez
 
Divide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesDivide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesCarlos Sanchez
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysCarlos Sanchez
 
Using Containers for Continuous Integration and Continuous Delivery
Using Containers for Continuous Integration and Continuous DeliveryUsing Containers for Continuous Integration and Continuous Delivery
Using Containers for Continuous Integration and Continuous DeliveryCarlos Sanchez
 
Divide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesDivide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesCarlos Sanchez
 
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...Carlos Sanchez
 
Testing Distributed Micro Services. Agile Testing Days 2017
Testing Distributed Micro Services. Agile Testing Days 2017Testing Distributed Micro Services. Agile Testing Days 2017
Testing Distributed Micro Services. Agile Testing Days 2017Carlos Sanchez
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCarlos Sanchez
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsCarlos Sanchez
 
From Monolith to Docker Distributed Applications. JavaOne
From Monolith to Docker Distributed Applications. JavaOneFrom Monolith to Docker Distributed Applications. JavaOne
From Monolith to Docker Distributed Applications. JavaOneCarlos Sanchez
 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Carlos Sanchez
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCarlos Sanchez
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsCarlos Sanchez
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesCarlos Sanchez
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingCarlos Sanchez
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with KubernetesCarlos Sanchez
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesCarlos Sanchez
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with KubernetesCarlos Sanchez
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierCarlos Sanchez
 

Más de Carlos Sanchez (20)

Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
 
Divide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesDivide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-Services
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 
Using Containers for Continuous Integration and Continuous Delivery
Using Containers for Continuous Integration and Continuous DeliveryUsing Containers for Continuous Integration and Continuous Delivery
Using Containers for Continuous Integration and Continuous Delivery
 
Divide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-ServicesDivide and Conquer: Easier Continuous Delivery using Micro-Services
Divide and Conquer: Easier Continuous Delivery using Micro-Services
 
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...
Using Containers for Building and Testing: Docker, Kubernetes and Mesos. FOSD...
 
Testing Distributed Micro Services. Agile Testing Days 2017
Testing Distributed Micro Services. Agile Testing Days 2017Testing Distributed Micro Services. Agile Testing Days 2017
Testing Distributed Micro Services. Agile Testing Days 2017
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed Applications
 
From Monolith to Docker Distributed Applications. JavaOne
From Monolith to Docker Distributed Applications. JavaOneFrom Monolith to Docker Distributed Applications. JavaOne
From Monolith to Docker Distributed Applications. JavaOne
 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed Applications
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and Kubernetes
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and Kubernetes
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 

Último

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Enterprise Build And Test In The Cloud

  • 1. Enterprise Build and Test in the Cloud Carlos Sanchez G2iX
  • 2. About me > Sr. Solutions Architect at G2iX > Member of Apache Maven PMC, Continuum, Archiva > Eclipse IAM co-lead > etc... 2
  • 3. Index 1. The tools 2. Maven Integration Tests 3. Maven & Selenium 4. Adding Continuum to the Mix 5. Testing in Different Environments 6. And Now in the Cloud 3
  • 6. Build: Apache Maven > Build tool and more 5
  • 7. Build: Apache Maven > Build tool and more > Dependency management 5
  • 8. Build: Apache Maven > Build tool and more > Dependency management > Execution of unit/integration tests 5
  • 9. Build: Apache Maven > Build tool and more > Dependency management > Execution of unit/integration tests > Start/stop application server 5
  • 10. Build: Apache Maven > Build tool and more > Dependency management > Execution of unit/integration tests > Start/stop application server > Automatic application deployment 5
  • 12. Test Cases: TestNG > Unit/integration tests 6
  • 13. Test Cases: TestNG > Unit/integration tests > parameterized tests 6
  • 14. Test Cases: TestNG > Unit/integration tests > parameterized tests > parallel testing 6
  • 16. Integration Tests: Selenium > UI and Integration testing
  • 17. Integration Tests: Selenium > UI and Integration testing > Tests run in the browser • support for multiple browsers
  • 18. Integration Tests: Selenium > UI and Integration testing > Tests run in the browser • support for multiple browsers > Tests can be recorded • no need for developers writing tests • Selenium IDE Firefox plugin
  • 20. Continuous Integration: Apache Continuum > Tight integration with Apache Maven • dependency handling 8
  • 21. Continuous Integration: Apache Continuum > Tight integration with Apache Maven • dependency handling > Trigger builds • when integration tests change • when the webapp changes • when the webapp dependencies change 8
  • 22. Cloud Computing: Amazon Web Services 9
  • 23. Cloud Computing: Amazon Web Services > Amazon S3 • storage 9
  • 24. Cloud Computing: Amazon Web Services > Amazon S3 • storage > Amazon SQS • queue service 9
  • 25. Cloud Computing: Amazon Web Services > Amazon S3 • storage > Amazon SQS • queue service > Amazon Mechanical Turk • manpower 9
  • 26. Cloud Computing: Amazon Web Services > Amazon S3 • storage > Amazon SQS • queue service > Amazon Mechanical Turk • manpower > Amazon EC2 • computation 9
  • 28. The webapp to test > appfuse-struts 11
  • 29. A new Maven project > appfuse-selenium <groupId>org.appfuse</groupId> <artifactId>appfuse-selenium</artifactId> <version>2.0.2-SNAPSHOT</version> <packaging>war</packaging> <name>AppFuse Selenium testing</name> 12
  • 30. that depends on > appfuse-struts <dependency> <groupId>org.appfuse</groupId> <artifactId>appfuse-struts</artifactId> <version>2.0.2</version> <type>war</type> </dependency> 13
  • 31. using Cargo to run it > automatically <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> 14
  • 32. Record Selenium tests > SeleniumIDE 15
  • 33. as Java 16
  • 34. test cases public void setUp() throws Exception { > using Selenium API setUp("http://localhost:18880/", "*chrome"); } public void testNew() throws Exception { selenium.open("/mainMenu.html"); selenium.click("link=Administration"); selenium.waitForPageToLoad("30000"); selenium.type("j_password", "admin"); selenium.click("rememberMe"); selenium.click("//input[@name='login']"); selenium.waitForPageToLoad("30000"); selenium.click("link=Edit Profile"); selenium.waitForPageToLoad("30000"); selenium.click("link=Main Menu"); selenium.waitForPageToLoad("30000"); selenium.click("link=Edit Profile"); selenium.waitForPageToLoad("30000"); selenium.click("document.forms[0].elements[24]"); selenium.waitForPageToLoad("30000"); } 17
  • 35. breakpoint > Selenium tests in Maven IT project 18
  • 36. 3. Maven & Selenium 19
  • 37. Selenium Architecture Selenium server 20
  • 38. Maven & Selenium > Start Selenium server locally > Run integration tests > Stop selenium server 21
  • 39. Selenium Maven plugin > http://mojo.codehaus.org/selenium-maven-plugin > selenium:start-server > selenium:stop-server 22
  • 40. Selenium Maven plugin <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>selenium-maven-plugin</artifactId> <version>1.0-rc-1</version> <executions> <execution> <id>start-selenium</id> <phase>pre-integration-test</phase> <goals> <goal>start-server</goal> </goals> </execution> </executions> <configuration> <background>${selenium.background}</background> </configuration> </plugin> 23
  • 41. 24
  • 42. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running TestSuite log4j:WARN No appenders could be found for logger (com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage). log4j:WARN Please initialize the log4j system properly. DEBUG [btpool0-5] UserAction.edit(117) | checking for remember me login... DEBUG [btpool0-8] LookupDaoHibernate.getRoles(20) | Retrieving all role names... DEBUG [btpool0-8] StartupListener.setupContext(102) | Drop-down initialization complete [OK] INFO [btpool0-8] ReloadAction.execute(34) | reload complete, reloading user back to: http://localhost: 18880/admin/activeUsers.html DEBUG [btpool0-3] UserAction.edit(117) | checking for remember me login... DEBUG [btpool0-3] UserAction.edit(117) | checking for remember me login... Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 89.703 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [cargo:stop {execution: stop-container}] 2009-03-23 16:41:42.176:/appfuse-selenium-2.0.2-SNAPSHOT:INFO: Closing Spring root WebApplicationContext [INFO] [install:install] [INFO] Installing /Users/csanchez/dev/maestro/appfuse-selenium/target/appfuse-selenium-2.0.2- SNAPSHOT.war to /Users/csanchez/.m2/repository/org/appfuse/appfuse-selenium/2.0.2-SNAPSHOT/appfuse- selenium-2.0.2-SNAPSHOT.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 minutes 20 seconds [INFO] Finished at: Mon Mar 23 16:41:45 CET 2009 [INFO] Final Memory: 43M/63M [INFO] ------------------------------------------------------------------------ 2009-03-23 16:41:46.168::INFO: Shutdown hook executing 2009-03-23 16:41:46.169::INFO: Shutdown hook complete 25
  • 43. breakpoint > Selenium tests in Maven IT project > running locally in the browser 26
  • 44. 4. Adding Continuum to the Mix 27
  • 45. Continuum 28
  • 46. Continuum > Build the webapp if 28
  • 47. Continuum > Build the webapp if • the webapp changes 28
  • 48. Continuum > Build the webapp if • the webapp changes • the dependencies change 28
  • 49. Continuum > Build the webapp if • the webapp changes • the dependencies change > Run the integration tests 28
  • 50. Continuum > Build the webapp if • the webapp changes • the dependencies change > Run the integration tests • if the ITs change 28
  • 51. Continuum > Build the webapp if • the webapp changes • the dependencies change > Run the integration tests • if the ITs change • if the webapp changes 28
  • 52. Continuum > Add appfuse-struts > Add appfuse-selenium 29
  • 53. Selenium headless > Most likely needed > Use *nix X Virtual Frame Buffer > In Maven • selenium:xvfb 30
  • 54. breakpoint > Selenium tests in Maven IT project > running locally in the browser > triggered by Continuum when there is any change to webapp, tests or dependencies 31
  • 55. 5. Testing in different environments 32
  • 57. Multi environment Multiple Browsers 33
  • 58. Multi environment Multiple Browsers Multiple Operating Systems 33
  • 59. Multi environment Multiple Browsers Multiple Operating Systems 33
  • 60. Parallel > Run tests in parallel • in each browser • several browsers per test 34
  • 61. Parallel > Faster testing > Load testing Credits: XKCD 35
  • 63. 37
  • 64. 38
  • 65. TestNG properties > Allows to run the same tests in different environments > and in parallel 39
  • 66. TestNG properties <suite name="Example" parallel="tests" thread-count="3"> <test name="iexplore"> <parameter name="browser" value="*iexplore"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> <test name="firefox2"> <parameter name="browser" value="*firefox2"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> <test name="opera"> <parameter name="browser" value="*opera"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> </suite> 40
  • 67. TestNG properties <suite name="Example" parallel="tests" thread-count="3"> <test name="iexplore"> <parameter name="browser" value="*iexplore"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> <test name="firefox2"> <parameter name="browser" value="*firefox2"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> <test name="opera"> <parameter name="browser" value="*opera"/> <packages> <package name="org.appfuse.webapp.selenium" /> </packages> </test> </suite> 40
  • 68. breakpoint > Selenium tests in Maven IT project > running locally in several browsers 41
  • 69. 6. and now in the Cloud 42
  • 70. $$$ 43
  • 71. $$$ > Machines cost money 43
  • 72. $$$ > Machines cost money > Bandwidth costs money 43
  • 73. $$$ > Machines cost money > Bandwidth costs money > Electricity costs money 43
  • 74. $$$ > Machines cost money > Bandwidth costs money > Electricity costs money > Server administration costs money 43
  • 75. Resource Optimization > test servers working 10-20% of the time 44
  • 76. Predictions cost money Infrastructure Cost $ time Source: Amazon
  • 77. Predictions cost money Infrastructure Cost $ Predicted Demand time Source: Amazon
  • 78. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware time Source: Amazon
  • 79. Predictions cost money Infrastructure Cost $ Large Capital Expenditure Predicted Demand Traditional Hardware time Source: Amazon
  • 80. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware time Source: Amazon
  • 81. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware Actual Demand time Source: Amazon
  • 82. Predictions cost money Infrastructure Cost $ Predicted Demand Opportunity Traditional Cost Hardware Actual Demand time Source: Amazon
  • 83. Predictions cost money Infrastructure Cost $ You just lost customers Predicted Demand Opportunity Traditional Cost Hardware Actual Demand time Source: Amazon
  • 84. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware Actual Demand Automated Virtualization time Source: Amazon
  • 85. Availability > Can you get 3000 machines in 3 days? 46
  • 86. Amazon EC2 > Elastic Compute Cloud > Machines on demand 47
  • 87. Amazon EC2 > pay per hour • same price for • 10 machines / 1 hour • 1 machine / 10 hours > unlimited number of machines > start in couple minutes 48
  • 88. AMIs 49
  • 89. AMIs Amazon Machine Images 49
  • 90. AMIs Amazon Machine Images Bundle your own 49
  • 91. Countless possibilities > Internet Explorer > Firefox 2 > Opera > Safari > Firefox 3 > Firefox 2 > etc... > no OS X :( 50
  • 93. Amazon AMIs > Create AMIs for different environments to test 51
  • 94. Amazon AMIs > Create AMIs for different environments to test > Read user data to customize the images at runtime • where is the Selenium Hub 51
  • 95. Maven EC2 plugin > in progress > http://mojo.codehaus.org/maven-ec2-plugin • start Amazon AMIs • stop at the end of the build • pass on user data 52
  • 96. Workflow 53
  • 97. Starting point Amazon EC2
  • 105. Run tests against webapp
  • 107. Return results to builder
  • 109. 64
  • 110. Questions? 65