Make your selenium test code fully reusable by using models and templated data. 
Make your tests suite easier to reason about and thread safe! 
A walk through of five projects showing how to test applications in a deterministic way, with increasingly less code duplication.   The business value of the application under test is clearly highlighted at every level of abstraction, the standard page object, a model, and test scoped data.  Clean, decoupled use of cucumber-jvm to drive tests will also be demonstrated in the final project.
Based on testing libraries used successfully in anger at medium sized companies (hundreds of devs).
2 favorite thumb_down thumb_up 0 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist

Outline/structure of the Session

Ten minute talk followed by a walk through of 5 sample projects, about 5 minutes a piece which will be available in github.   This projects will show a minimal extra effort required to gain higher levels of code reuse.  Followed by 10 minutes QA.

Learning Outcome

An example of how to reuse code cleanly in a test library in a thread safe way.

Make your tests read like this:

    public void simpleWebDriverTest() {
        ApplicationContext context = Context.getContext();
        ConcatonatorModel model = context.getBean(ConcatonatorModel.class);
        Person person = context.getBean(Person.class);
        assertThat(model.concatonate()).isEqualTo(person.getFirstName() + " " + person.getLastName());        

Or with minimal extra effort, like this:

Feature: Simple Concatenation 

  Scenario: Standard User Test
    Given I am A Tester
    When I enter my data
    Then my name is stated for the record

Target Audience

Anyone who believes they have room for improvement in code reuse in their test suites.

schedule Submitted 3 years ago

Comments Subscribe to Comments

comment Comment on this Submission

    • Liked Sarah Thompson

      Sarah Thompson - DevOps meets QA - Using Puppet to set up and manage your Selenium Grid

      Sarah Thompson
      Sarah Thompson
      QE UI Toolsmith
      Puppet Labs
      schedule 3 years ago
      Sold Out!
      45 Mins

      For testers, setting up and maintaining a Selenium Grid infrastructure can be timely and costly. A lot of the time, we are asked to do this as part of our day to day job when we really want to focus on testing the product!

      There are some great cloud based alternatives out there that allow you to easily run your tests on a wide range of Operating Systems and against multiple browser types (at a price).

      But what if you already have plenty of devices available within your own company (be it physical machines, virtual machines or cloud based resources) and you want to be able to setup and manage your own grid infrastructure:

      • to allow you greater control over the configuration (perhaps you want to have a headless browser like PhantomJS available on your grid)
      • to run your tests faster (the cloud based alternatives are a good bit slower for obvious reasons)
      • or to simply save money.
    • Liked Herman Ching

      Herman Ching - Using genetic algorithm to do exploratory testing with cucumber and selenium.

      Herman Ching
      Herman Ching
      QA Engineer
      schedule 3 years ago
      Sold Out!
      45 Mins
      Experience Report

      Writing selenium tests has an inherent problem in which we can only automate what we know the steps for. It is primarily used for regression and can scale very quickly. We generally optimize regression for sprint's relevant features or have smoke tests to get quicker feedback. In addition negative testing is very expensive to write. This entire process is very manual and the maintenance of tests become more costly than the actual writing of tests. 

      We can change this. By using genetic algorithm and cucumber steps we can create new feature files to discover where in the application may be be problematic. The goal of each individual would be to find the most defect. The two individuals that find the most defects then create children that follows the sequences of how new individuals are form through genetic algorithms. They will breed the next generation of testers which will focus on problematic areas. 

      Let's find out when and if this strategy can be deemed effectively.