SlideShare a Scribd company logo
1 of 123
Enterprise Build &
Test in the Cloud

Carlos Sanchez
March 27, 2009
About me



               During the day
         Sr. Solutions Architect at G2iX
                   At night
Member of Apache Maven PMC, Continuum, Archiva
              Eclipse IAM co-lead
Index

             The tools
     Maven Integration Tests
        Maven & Selenium
  Adding Continuum to the Mix
Testing in Different Environments
      And Now in the Cloud
The tools
Build

Apache Maven
Maven

        Build tool and more
     Dependency management
Execution of unit /integration tests
   Start/stop application server
Automatic application deployment
How many?
Test cases

 TestNG
TestNG


Unit/integration tests
 parameterized tests
   parallel testing
How many?
Integration tests

   Selenium
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
How many?
Continuous Integration

 Apache Continuum
Apache Continuum

Tight integration with Apache Maven
        dependency handling
           Trigger builds
    when integration tests change
      when the webapp changes
when the webapp dependencies change
How many?
Cloud Computing

Amazon Web Services
Amazon Web Services
Amazon Web Services
      Amazon S3
       storage
Amazon Web Services
      Amazon S3
         storage
      Amazon SQS
      queue service
Amazon Web Services
        Amazon S3
          storage
       Amazon SQS
       queue service
  Amazon Mechanical Turk
        manpower
Amazon Web Services
        Amazon S3
          storage
       Amazon SQS
       queue service
  Amazon Mechanical Turk
        manpower
       Amazon EC2
       computation
How many?
Maven integration tests
The webapp to
     test
appfuse-struts
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>
that depends on
 appfuse-struts

    <dependency>
      <groupId>org.appfuse</groupId>
      <artifactId>appfuse-struts</artifactId>
      <version>2.0.2</version>
      <type>war</type>
    </dependency>
using Cargo to run it
    automatically



   <plugin>
     <groupId>org.codehaus.cargo</groupId>
     <artifactId>cargo-maven2-plugin</artifactId>
Record
Selenium tests
 SeleniumIDE
... as Java
test cases
   ...using
Selenium API   public void setUp() throws Exception {
                   setUp(quot;http://localhost:18880/quot;, quot;*chromequot;);
               }
               public void testNew() throws Exception {
                   selenium.open(quot;/mainMenu.htmlquot;);
                   selenium.click(quot;link=Administrationquot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
                   selenium.type(quot;j_passwordquot;, quot;adminquot;);
                   selenium.click(quot;rememberMequot;);
                   selenium.click(quot;//input[@name='login']quot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
                   selenium.click(quot;link=Edit Profilequot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
                   selenium.click(quot;link=Main Menuquot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
                   selenium.click(quot;link=Edit Profilequot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
                   selenium.click(quot;document.forms[0].elements[24]quot;);
                   selenium.waitForPageToLoad(quot;30000quot;);
               }
breakpoint



            we have
Selenium tests in Maven IT project
Maven & Selenium
Selenium Architecture




       Selenium
        server
Maven & Selenium


Start Selenium server locally
    Run integration tests
    Stop selenium server
Selenium Maven plugin

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

   selenium:start-server
   selenium:stop-server
configuration   <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>
-------------------------------------------------------
 TESTS
-------------------------------------------------------
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
breakpoint



Selenium tests in Maven IT project
  running locally in the browser
Adding Continuum to the
          Mix
Continuum
Continuum

Build the webapp if
Continuum

Build the webapp if
the webapp changes
Continuum

 Build the webapp if
  the webapp changes
the dependencies change
Continuum

  Build the webapp if
   the webapp changes
 the dependencies change
Run the integration tests
Continuum

  Build the webapp if
   the webapp changes
 the dependencies change
Run the integration tests
     if the ITs change
Continuum

  Build the webapp if
   the webapp changes
 the dependencies change
Run the integration tests
      if the ITs change
  if the webapp changes
Continuum
 Add appfuse-struts
Add appfuse-selenium
Selenium headless

      Most likely needed

Use *nix X Virtual Frame Buffer

           In Maven
         selenium:xvfb
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
Testing in different
   environments
Multi environment
Multi environment
   Multiple Browsers
Multi environment
    Multiple Browsers




Multiple Operating Systems
Parallel


 Run tests in parallel
    in each browser
several browsers per test
Parallel
Faster testing               Load testing




             Credits: XKCD
Selenium Grid
TestNG properties


Allows to run the same tests in
    different environments

        and in parallel
TestNG properties
<suite name=quot;Examplequot; parallel=quot;testsquot; thread-count=quot;3quot;>
  <test name=quot;iexplorequot;>
    <parameter name=quot;browserquot; value=quot;*iexplorequot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
  <test name=quot;firefox2quot;>
    <parameter name=quot;browserquot; value=quot;*firefox2quot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
  <test name=quot;operaquot;>
    <parameter name=quot;browserquot; value=quot;*operaquot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
</suite>
TestNG properties
<suite name=quot;Examplequot; parallel=quot;testsquot; thread-count=quot;3quot;>
  <test name=quot;iexplorequot;>
    <parameter name=quot;browserquot; value=quot;*iexplorequot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
  <test name=quot;firefox2quot;>
    <parameter name=quot;browserquot; value=quot;*firefox2quot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
  <test name=quot;operaquot;>
    <parameter name=quot;browserquot; value=quot;*operaquot;/>
    <packages>
      <package name=quot;org.appfuse.webapp.seleniumquot; />
    </packages>
  </test>
</suite>
breakpoint



Selenium tests in Maven IT project
running locally in several browsers
and now in the Cloud
Machines cost money
Machines cost money
Bandwidth costs money
Machines cost money
Bandwidth costs money
Electricity costs money
Machines cost money
     Bandwidth costs money
     Electricity costs money
Server administration costs money
Machines cost money
     Bandwidth costs money
     Electricity costs money
Server administration costs money
Resource Optimization



test servers working 10-20% of the
               time
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?
Amazon EC2


Elastic Compute Cloud

Machines on demand
Amazon EC2

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

Amazon Machine Images




   Bundle your own
Countless possibilities
     Internet Explorer
         Firefox 2
           Opera
           Safari
         Firefox 3
         Firefox 2
         no OS X :(
Amazon AMIs


Create AMIs for different
  environments to test
Amazon AMIs


Read user data to customize the
      images at runtime
    where is the Selenium Hub
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
Workflow
Starting point

                 Selenium
Continuum
                   Hub


  SVN                Jetty

        Master AMI




            Amazon EC2
Starting point

                 Selenium    OS X
Continuum
                   Hub


  SVN                Jetty

        Master AMI
Build is triggered

                 Selenium    OS X
Continuum
                   Hub


  SVN                Jetty

        Master AMI
Start Images

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Register with Hub

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Tests call Selenium

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Distribute tests

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Run tests against webapp

                      Selenium                              OS X
  Continuum
                        Hub


    SVN                Jetty

          Master AMI
                                           Windows Server
                                               2003




                                       Windows Server
                                           2003
              Linux
                               Linux
Return results to Hub

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Return results to builder

                     Selenium                              OS X
 Continuum
                       Hub


   SVN                Jetty

         Master AMI
                                          Windows Server
                                              2003




                                      Windows Server
                                          2003
             Linux
                              Linux
Kill Images

                    Selenium                              OS X
Continuum
                      Hub


  SVN                Jetty

        Master AMI
                                         Windows Server
                                             2003




                                     Windows Server
                                         2003
            Linux
                             Linux
Questions?
eu
                                        z.
                                  he
                                nc
                            sa
                           s
                        lo
                      ar
                  c
               w.
         ww
Thanks




         g      r
             .o           e
                       ch
                    pa            a
                               s@
                                      rlo
                                         ca

More Related Content

What's hot

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
 
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
 
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
 
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
 
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
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web DevelopmentHong Jiang
 
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
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test firstCaesar Chi
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回haruki ueno
 
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Matt Raible
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
 
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
 
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
 

What's hot (20)

Os Johnson
Os JohnsonOs Johnson
Os Johnson
 
Spring boot
Spring bootSpring boot
Spring boot
 
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
 
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?
 
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
 
Grails Spring Boot
Grails Spring BootGrails Spring Boot
Grails Spring Boot
 
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
 
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
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
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
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
 
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
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
 
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
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot Intro
Spring Boot IntroSpring Boot Intro
Spring Boot Intro
 

Viewers also liked

Selenium, testNG , Selenium Grid & Best Practices
Selenium, testNG , Selenium Grid & Best PracticesSelenium, testNG , Selenium Grid & Best Practices
Selenium, testNG , Selenium Grid & Best PracticesMathildeLemee
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelJosiah Renaudin
 
Dave Haeffner's Proven Method to Grading the Quality of Selenium Tests
Dave Haeffner's Proven Method to Grading the Quality of Selenium TestsDave Haeffner's Proven Method to Grading the Quality of Selenium Tests
Dave Haeffner's Proven Method to Grading the Quality of Selenium TestsApplitools
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011Carlos Sanchez
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 
Scaling and Managing Selenium Grid
Scaling and Managing Selenium GridScaling and Managing Selenium Grid
Scaling and Managing Selenium Griddimakovalenko
 

Viewers also liked (8)

Selenium, testNG , Selenium Grid & Best Practices
Selenium, testNG , Selenium Grid & Best PracticesSelenium, testNG , Selenium Grid & Best Practices
Selenium, testNG , Selenium Grid & Best Practices
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in Parallel
 
Dave Haeffner's Proven Method to Grading the Quality of Selenium Tests
Dave Haeffner's Proven Method to Grading the Quality of Selenium TestsDave Haeffner's Proven Method to Grading the Quality of Selenium Tests
Dave Haeffner's Proven Method to Grading the Quality of Selenium Tests
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
 
Meet the Selenium Grid
Meet the Selenium GridMeet the Selenium Grid
Meet the Selenium Grid
 
Selenium-Grid-Extras
Selenium-Grid-ExtrasSelenium-Grid-Extras
Selenium-Grid-Extras
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 
Scaling and Managing Selenium Grid
Scaling and Managing Selenium GridScaling and Managing Selenium Grid
Scaling and Managing Selenium Grid
 

Similar to Enterprise Build And Test In The Cloud

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
 
Testing Ajax Web Applications
Testing Ajax Web ApplicationsTesting Ajax Web Applications
Testing Ajax Web ApplicationsTed Husted
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenThorsten Kamann
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance TestingAlan Hecht
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 
Apache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentationApache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentationArnaud Héritier
 
Selenium Testing with TestingBot.com
Selenium Testing with TestingBot.comSelenium Testing with TestingBot.com
Selenium Testing with TestingBot.comtestingbot
 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyondmguillem
 
Selenium RC Using Java and Maven + Maestro Integration
Selenium RC Using Java and Maven + Maestro IntegrationSelenium RC Using Java and Maven + Maestro Integration
Selenium RC Using Java and Maven + Maestro IntegrationExist
 
WordPress Acceptance Testing, Solved!
WordPress Acceptance Testing, Solved!WordPress Acceptance Testing, Solved!
WordPress Acceptance Testing, Solved!Taylor Lovett
 
Integration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsIntegration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsAtlassian
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaAtlassian
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaAmazon Web Services
 

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

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
 
Testing Ajax Web Applications
Testing Ajax Web ApplicationsTesting Ajax Web Applications
Testing Ajax Web Applications
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
 
Integration Testing in Python
Integration Testing in PythonIntegration Testing in Python
Integration Testing in Python
 
Selenium
SeleniumSelenium
Selenium
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance Testing
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 
Apache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentationApache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentation
 
Selenium Testing with TestingBot.com
Selenium Testing with TestingBot.comSelenium Testing with TestingBot.com
Selenium Testing with TestingBot.com
 
Selenium with java
Selenium with javaSelenium with java
Selenium with java
 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
 
Selenium
SeleniumSelenium
Selenium
 
Selenium RC Using Java and Maven + Maestro Integration
Selenium RC Using Java and Maven + Maestro IntegrationSelenium RC Using Java and Maven + Maestro Integration
Selenium RC Using Java and Maven + Maestro Integration
 
WordPress Acceptance Testing, Solved!
WordPress Acceptance Testing, Solved!WordPress Acceptance Testing, Solved!
WordPress Acceptance Testing, Solved!
 
Integration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real ThingsIntegration Testing on Steroids: Run Your Tests on the Real Things
Integration Testing on Steroids: Run Your Tests on the Real Things
 
Servlet30 20081218
Servlet30 20081218Servlet30 20081218
Servlet30 20081218
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure Java
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
 
Maven
MavenMaven
Maven
 

More from 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
 

More from 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
 

Recently uploaded

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Recently uploaded (20)

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Enterprise Build And Test In The Cloud

  • 1. Enterprise Build & Test in the Cloud Carlos Sanchez March 27, 2009
  • 2. About me During the day Sr. Solutions Architect at G2iX At night Member of Apache Maven PMC, Continuum, Archiva Eclipse IAM co-lead
  • 3. Index The tools Maven Integration Tests Maven & Selenium Adding Continuum to the Mix Testing in Different Environments And Now in the Cloud
  • 4.
  • 6.
  • 8. Maven Build tool and more Dependency management Execution of unit /integration tests Start/stop application server Automatic application deployment
  • 9.
  • 11.
  • 14.
  • 16.
  • 17. Integration tests Selenium
  • 18. 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
  • 19.
  • 21.
  • 23. Apache Continuum Tight integration with Apache Maven dependency handling Trigger builds when integration tests change when the webapp changes when the webapp dependencies change
  • 24.
  • 26.
  • 29. Amazon Web Services Amazon S3 storage
  • 30. Amazon Web Services Amazon S3 storage Amazon SQS queue service
  • 31. Amazon Web Services Amazon S3 storage Amazon SQS queue service Amazon Mechanical Turk manpower
  • 32. Amazon Web Services Amazon S3 storage Amazon SQS queue service Amazon Mechanical Turk manpower Amazon EC2 computation
  • 33.
  • 35.
  • 37. The webapp to test appfuse-struts
  • 38. 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>
  • 39. that depends on appfuse-struts <dependency> <groupId>org.appfuse</groupId> <artifactId>appfuse-struts</artifactId> <version>2.0.2</version> <type>war</type> </dependency>
  • 40. using Cargo to run it automatically <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId>
  • 43. test cases ...using Selenium API public void setUp() throws Exception { setUp(quot;http://localhost:18880/quot;, quot;*chromequot;); } public void testNew() throws Exception { selenium.open(quot;/mainMenu.htmlquot;); selenium.click(quot;link=Administrationquot;); selenium.waitForPageToLoad(quot;30000quot;); selenium.type(quot;j_passwordquot;, quot;adminquot;); selenium.click(quot;rememberMequot;); selenium.click(quot;//input[@name='login']quot;); selenium.waitForPageToLoad(quot;30000quot;); selenium.click(quot;link=Edit Profilequot;); selenium.waitForPageToLoad(quot;30000quot;); selenium.click(quot;link=Main Menuquot;); selenium.waitForPageToLoad(quot;30000quot;); selenium.click(quot;link=Edit Profilequot;); selenium.waitForPageToLoad(quot;30000quot;); selenium.click(quot;document.forms[0].elements[24]quot;); selenium.waitForPageToLoad(quot;30000quot;); }
  • 44. breakpoint we have Selenium tests in Maven IT project
  • 45.
  • 47. Selenium Architecture Selenium server
  • 48. Maven & Selenium Start Selenium server locally Run integration tests Stop selenium server
  • 49. Selenium Maven plugin http://mojo.codehaus.org/ selenium-maven-plugin selenium:start-server selenium:stop-server
  • 50. configuration <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>
  • 51.
  • 52. ------------------------------------------------------- TESTS ------------------------------------------------------- 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
  • 53. breakpoint Selenium tests in Maven IT project running locally in the browser
  • 54.
  • 58. Continuum Build the webapp if the webapp changes
  • 59. Continuum Build the webapp if the webapp changes the dependencies change
  • 60. Continuum Build the webapp if the webapp changes the dependencies change Run the integration tests
  • 61. Continuum Build the webapp if the webapp changes the dependencies change Run the integration tests if the ITs change
  • 62. Continuum Build the webapp if the webapp changes the dependencies change Run the integration tests if the ITs change if the webapp changes
  • 64. Selenium headless Most likely needed Use *nix X Virtual Frame Buffer In Maven selenium:xvfb
  • 65. 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
  • 66.
  • 67. Testing in different environments
  • 69. Multi environment Multiple Browsers
  • 70. Multi environment Multiple Browsers Multiple Operating Systems
  • 71. Parallel Run tests in parallel in each browser several browsers per test
  • 72. Parallel Faster testing Load testing Credits: XKCD
  • 74.
  • 75.
  • 76. TestNG properties Allows to run the same tests in different environments and in parallel
  • 77. TestNG properties <suite name=quot;Examplequot; parallel=quot;testsquot; thread-count=quot;3quot;> <test name=quot;iexplorequot;> <parameter name=quot;browserquot; value=quot;*iexplorequot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> <test name=quot;firefox2quot;> <parameter name=quot;browserquot; value=quot;*firefox2quot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> <test name=quot;operaquot;> <parameter name=quot;browserquot; value=quot;*operaquot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> </suite>
  • 78. TestNG properties <suite name=quot;Examplequot; parallel=quot;testsquot; thread-count=quot;3quot;> <test name=quot;iexplorequot;> <parameter name=quot;browserquot; value=quot;*iexplorequot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> <test name=quot;firefox2quot;> <parameter name=quot;browserquot; value=quot;*firefox2quot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> <test name=quot;operaquot;> <parameter name=quot;browserquot; value=quot;*operaquot;/> <packages> <package name=quot;org.appfuse.webapp.seleniumquot; /> </packages> </test> </suite>
  • 79. breakpoint Selenium tests in Maven IT project running locally in several browsers
  • 80.
  • 81. and now in the Cloud
  • 82.
  • 83.
  • 86. Machines cost money Bandwidth costs money Electricity costs money
  • 87. Machines cost money Bandwidth costs money Electricity costs money Server administration costs money
  • 88. Machines cost money Bandwidth costs money Electricity costs money Server administration costs money
  • 89. Resource Optimization test servers working 10-20% of the time
  • 91. Predictions cost money Infrastructure Cost $ Predicted Demand time Source: Amazon
  • 92. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware time Source: Amazon
  • 93. Predictions cost money Infrastructure Cost $ Large Capital Expenditure Predicted Demand Traditional Hardware time Source: Amazon
  • 94. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware time Source: Amazon
  • 95. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware Actual Demand time Source: Amazon
  • 96. Predictions cost money Infrastructure Cost $ Predicted Demand Opportunity Traditional Cost Hardware Actual Demand time Source: Amazon
  • 97. Predictions cost money Infrastructure Cost $ You just lost customers Predicted Demand Opportunity Traditional Cost Hardware Actual Demand time Source: Amazon
  • 98. Predictions cost money Infrastructure Cost $ Predicted Demand Traditional Hardware Actual Demand Automated Virtualization time Source: Amazon
  • 99. Availability Can you get 3000 machines in 3 days?
  • 100. Amazon EC2 Elastic Compute Cloud Machines on demand
  • 101. Amazon EC2 pay per hour same price for 10 machines / 1 hour 1 machine / 10 hours unlimited number of machines start in couple minutes
  • 102. AMIs Amazon Machine Images Bundle your own
  • 103. Countless possibilities Internet Explorer Firefox 2 Opera Safari Firefox 3 Firefox 2 no OS X :(
  • 104. Amazon AMIs Create AMIs for different environments to test
  • 105. Amazon AMIs Read user data to customize the images at runtime where is the Selenium Hub
  • 106. 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
  • 107.
  • 109. Starting point Selenium Continuum Hub SVN Jetty Master AMI Amazon EC2
  • 110. Starting point Selenium OS X Continuum Hub SVN Jetty Master AMI
  • 111. Build is triggered Selenium OS X Continuum Hub SVN Jetty Master AMI
  • 112. Start Images Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 113. Register with Hub Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 114. Tests call Selenium Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 115. Distribute tests Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 116. Run tests against webapp Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 117. Return results to Hub Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 118. Return results to builder Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 119. Kill Images Selenium OS X Continuum Hub SVN Jetty Master AMI Windows Server 2003 Windows Server 2003 Linux Linux
  • 120.
  • 121.
  • 123. eu z. he nc sa s lo ar c w. ww Thanks g r .o e ch pa a s@ rlo ca

Editor's Notes

  1. 10
  2. 15
  3. 20
  4. 25
  5. 30
  6. 35