SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
CONTINUOUS
INTEGRATION
WITH SELENIUM

    AT MARKTPLAATS.NL
CONTENT


PROCESS OVERVIEW
GRID
FRAMEWORK
SMOKE TESTS
LAYOUT TESTING
JENKINS & PIPELINE
BUILD
STATISTICS

               2.000      Se
     24        SELENIUM TESTS

BUILDS A DAY

             48.000
          TOTAL RUNS PER DAY

    11
DEMO DEPLOYS PER WEEK
KANBAN
PIPELINE


           TEST         READY
 STORY     CASES        FOR   PD
      PM           QA   DEV   QA




 PROD      L&P          DEMO
 DEPLOY    DEPLOY       DEPLOY
GRID
CONTINUOUS INTEGRATION WITH
SELENIUM
GRID
OVERVIEW


           GRID



  3               7
GRID
MAINTENANCE


BUILDER                          SSH




./all.sh uptime
root@10.32.85.13
 10:55:25 up 39 days, 20:32,   0 users, load average: 0.27, 0.44, 0.76
root@10.32.85.14
 10:54:53 up 39 days, 20:20,   2 users, load average: 0.21, 0.32, 0.69
root@10.32.85.15
 10:54:37 up 39 days, 20:21,   0 users, load average: 0.17, 0.22, 0.43
root@10.32.85.16
 10:56:42 up 39 days, 20:19,   0 users, load average: 0.01, 0.20, 0.58
TEST
FRAMEWORK
CONTINUOUS INTEGRATION WITH
SELENIUM
FRAMEWORK
ABSTRACTION




TEST   FLOW   PAGE   DRIVER
FRAMEWORK
FLOW
adUrn = new SyiFlow(driver)!
         .selectL1Category(“Boeken”)!
         .selectBucket(“Overige”)!
         .selectL2Category(“E-books”)!
         .typeTitle(“test ad title”)!
         .typeDescription("test ad description”)!
         .typePrice("12,00")!
         .uploadImage(1, new File(“test-image.jpg”))!
         .typePostcode(“1097DN”)!
         .submitAndNavigateToRyiPage()!
         .getAdvertisementUrn();!
FRAMEWORK
PAGE MODELS
public class LoginPage extends MarktplaatsPage<LoginPage> {!
    public static final String LOGIN_URL = URLS.login();!
    private static final By USERNAME_FIELD_LOCATOR = By.xpath("//input[@name='j_username']");!
    private static final By PASSWORD_FIELD_LOCATOR = By.xpath("//input[@name='j_password']");!
    private static final By LOGIN_BUTTON_LOCATOR = By.id("account-login-button");!
    !
    public LoginPage(WebDriver driver) {!
       super(driver);!
    }!
!
    @Override!
    public LoginPage load() {!
       getDriver().get(LOGIN_URL);!
       return this;!
    }!
!
    @Override!
    public boolean isAvailable() {!
       return getEmailField().isAvailable() && getPasswordField().isAvailable();!
    }!
!
  !
FRAMEWORK
PAGE MODELS
     public void login(String username, String passwordText) {!
        loadAndWaitUntilAvailable();!
        getEmailField().inputText(username);!
        getPasswordField().inputText(passwordText);!
        loginButton().submit();!
     }!
!
     public TextInput getEmailField() {!
        return new TextInput(getDriver(), USERNAME_FIELD_LOCATOR);!
     }!
!
     public TextInput getPasswordField() {!
        return new TextInput(getDriver(), PASSWORD_FIELD_LOCATOR);!
     }!
     !
     public WebElement loginButton() {!
        return getDriver().findElement(LOGIN_BUTTON_LOCATOR);!
     }!
}!
!
FRAMEWORK
TEST STRATEGY

    FLOW        COMPONENT

   POSITIVE      FIELDS


   NEGATIVE      MESSAGES


                 XSS
SMOKE
TESTS
CONTINUOUS INTEGRATION WITH
SELENIUM
SMOKE TESTS
APPROACH
 SINGLE       PLATFORMS
 PLATFORM     INTEGRATION
SMOKE TESTS
OVERVIEW
PLAT   ENV    GRID


        INT

                     REPORT

       DEMO



       PROD
SMOKE TESTS
REPORT EXAMPLE
LAYOUT
TESTING
CONTINUOUS INTEGRATION WITH
SELENIUM
LAYOUT TESTING
BROWSER COMPATIBILITY

 PAGES          BROWSERS




                           REPORT


         GRID
LAYOUT TESTING
REPORT EXAMPLE
LAYOUT TESTING
REPORT EXAMPLE
JENKINS &
PIPELINE
CONTINUOUS INTEGRATION WITH
SELENIUM
JENKINS & PIPELINE
TEST JOBS

           GRID
           MAIN


          GRID
          PARALLEL
                     TEST ARE   DEMO
TRIGGER                         DEPLOY
                     GREEN
          NO GRID


           OTHER
           TESTS
JENKINS & PIPELINE
JOBS MONITOR
JENKINS & PIPELINE
REPORTING
JENKINS & PIPELINE
REPORTING




SELENIUM          PIPELINE   DATABASE
                                 `
TEST              APP
           REST
JENKINS & PIPELINE
DASHBOARD
CI & SELENIUM
SUMMARY
           PAST            PRESENT

SELENIUM
             30 – 50 MIN     14 - 18 MIN
FEEDBACK

FAILURE      30 – 50 MIN     RIGHT
FEEDBACK                     AWAY

BROWSER
SUPPORT

AMOUNT
             11              3
OF JOBS
ANY
QUESTIONS ?
CONTINUOUS INTEGRATION WITH
SELENIUM

                  ishubin@ebay.com

Weitere ähnliche Inhalte

Ähnlich wie Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin

Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructureLindsay Holmwood
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Optimizely
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Optimizely
 
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andi
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andiDynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andi
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andiDynatrace
 
Introduction to Venus.js
Introduction to Venus.jsIntroduction to Venus.js
Introduction to Venus.jsSeth McLaughlin
 
Test Smart, not hard
Test Smart, not hardTest Smart, not hard
Test Smart, not hardDiUS
 
Where Node.JS Meets iOS
Where Node.JS Meets iOSWhere Node.JS Meets iOS
Where Node.JS Meets iOSSam Rijs
 
Gluecon 2013 Keynote Ravello Systems
Gluecon 2013 Keynote Ravello SystemsGluecon 2013 Keynote Ravello Systems
Gluecon 2013 Keynote Ravello Systemsnavinthadani
 
Supporting Software Developers with a Holistic Recommender System
Supporting Software Developers with a Holistic Recommender SystemSupporting Software Developers with a Holistic Recommender System
Supporting Software Developers with a Holistic Recommender SystemLuca Ponzanelli
 
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce LabsHow To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce LabsSauce Labs
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)True-Vision
 
A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...Vincenzo Ferme
 
Super powered API testing
Super powered API testing Super powered API testing
Super powered API testing postmanclient
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JC4Media
 
2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD WorkshopWolfram Arnold
 

Ähnlich wie Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin (20)

Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Rtt preso
Rtt presoRtt preso
Rtt preso
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them
 
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andi
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andiDynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andi
Dynatrace: DevOps, shift-left &amp; self-healing a performance clinic with andi
 
Introduction to Venus.js
Introduction to Venus.jsIntroduction to Venus.js
Introduction to Venus.js
 
Test Smart, not hard
Test Smart, not hardTest Smart, not hard
Test Smart, not hard
 
Domain analysis in Software Testing
Domain analysis in Software TestingDomain analysis in Software Testing
Domain analysis in Software Testing
 
Where Node.JS Meets iOS
Where Node.JS Meets iOSWhere Node.JS Meets iOS
Where Node.JS Meets iOS
 
Gluecon 2013 Keynote Ravello Systems
Gluecon 2013 Keynote Ravello SystemsGluecon 2013 Keynote Ravello Systems
Gluecon 2013 Keynote Ravello Systems
 
Supporting Software Developers with a Holistic Recommender System
Supporting Software Developers with a Holistic Recommender SystemSupporting Software Developers with a Holistic Recommender System
Supporting Software Developers with a Holistic Recommender System
 
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce LabsHow To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
 
Sonar Review
Sonar ReviewSonar Review
Sonar Review
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
 
A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...
 
Testing smells
Testing smellsTesting smells
Testing smells
 
Super powered API testing
Super powered API testing Super powered API testing
Super powered API testing
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4J
 
2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop
 

Amsterdam Selenium Meetup - Continuous Integration with Selenium at Marktplaats.nl by Ivan Shubin