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).

Outline/Structure of the Talk

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 7 years ago

  • 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 7 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.
  • Herman Ching

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

    Herman Ching
    Herman Ching
    QA Engineer
    schedule 7 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.