Talented Together
HOW TO IMPLEMENT EFFICIENT TEST
AUTOMATION IN AN AGILE PROJECT
Agile Business Conference, October 2014
Lukasz Grabinski & John OHare
1 How to Implement Efficient Test Automation in an Agile Project
CONTENTS
1 The Client & the Project
2 Application Overview
3 Implementing Automation
4 Tools, tools, tools
5 Evolution (DSL, Data, Structure)
6 Making the Process Work
7 Q&A
2 How to Implement Efficient Test Automation in an Agile Project
THE CLIENT & THE PROJECT
Business Background
Our client provides financial support to students, providing loans and non-repayable grants for living, studying
and tuition costs.
Smooth on-line loan application process is essential:
Aligned with the Governments Digital by Default strategy.
Positive experience for students .
Process of managing loans is extremely complex.
Project Background
Existing web portal was confusing for customers, with each loan application on average resulting in 3.6 calls to
the call centre for additional support.
Cost of avoidable contact was 2.9 million per year
Customer satisfaction was measured at 64% dissatisfied.
Move towards modern service provision via the development of a new customer web portal.
Aim is to drive traffic away from the call centre towards fully capturing applications on the web.
3 How to Implement Efficient Test Automation in an Agile Project
APPLICATION - OVERVIEW
Web portal to create, manage, submit and track application with captured customer data
Multiple screens
Many paths throughout the application process
Various data capture from simple Yes/No to complex recursive data objects
Integration with multiple legacy systems through web services
High focus on the usability and user experience aspects
4 How to Implement Efficient Test Automation in an Agile Project
IMPLEMENTING SUCCESSFUL AUTOMATION
Context
People
Tools
Processes
5 How to Implement Efficient Test Automation in an Agile Project
PLANNING AND ARCHITECTURE
Test Automation is software too:
Set clear objectives:
How much do you want to automate? API ? Front end? Full end to end?
How is it going to compliment other testing areas like unit tests, manual exploratory testing?
What about the level of component/system/integration automation
Consider project aspects:
Profile of your team - especially developers and testers,
Projects aspects : Is it front end heavy? Complex business rules?
Timescales, environments, etc...
Design:
Framework does not mean complex and high up-front cost, it means fit for purpose yet flexible design,
Think about users - test automation should focus on the most repetitive tasks and give testers more
time to design tests/exploratory testing,
How are you going to manage test data?
6 How to Implement Efficient Test Automation in an Agile Project
TOOLS, TOOLS, TOOLS
Gherkin
Java
Cucumber
Selenium
Pickles
Agile BDD
Jenkins CI
SVN
7 How to Implement Efficient Test Automation in an Agile Project
EVOLUTION: DSL - YOUR FRIEND OR ENEMY?
Before: No upfront DSL design led to over 600 step definitions, causing:
Minimal reuse of the existing steps/code
Lack of clear understanding what step does and how
No practical use of the tests as documentation of system to business
High cost of step implementation
Difficult maintenance and increasing technical debt in the test code
After: Core of ~30 designed, parameterised steps used in 95% of the tests
Easy test creation using steps as templates with parameters published in the project wiki
Clear understanding what to expect from the step
Tests useful for the analysts, testers, developers and business
High reusability
Test automation effort reduced several times over
Allow to use defined (business journeys) or explicit data (component/system tests)
Limited number of additional, component test focused steps
8 How to Implement Efficient Test Automation in an Agile Project
DSL EXAMPLES:
Before:
I click Next button
Button Yes has been clicked
I have clicked Save button
I use the previous page link
After:
I click the (.*)
All available buttons and links published on wiki
New elements easy to add to the mapping table (abstraction layer)
9 How to Implement Efficient Test Automation in an Agile Project
EVOLUTION: DATA DRIVES TESTS OR YOU CRAZY?
Before: No test data design or approach, causing:
Complex and difficult to understand scenarios
High duplication of steps in test scenarios
Difficult test data management
Reduced coverage of tests
After: Test data designed and stored as persona concept
Personas data leads to user story or specific test path with desired data
Short and concise scenario 2 steps to get to any point in the application process
Easy data management
Higher coverage at lower cost
Faster test execution ability to create application with required data through web services allow direct jump
to page directly rather than using Selenium
10 How to Implement Efficient Test Automation in an Agile Project
DATA EXAMPLES:
Before:
I login as user JOHN SMITH
I answer X for the first question
I enter A data
I answer Y for the second question
I enter B data
I click Next button
My first question data is A
My second question data is B
My third question data is C
After:
I am logged in persona JOHN SMITH on page X
I have completed page Y until and including question Z
My first page data is persisted
11 How to Implement Efficient Test Automation in an Agile Project
EVOLUTION: IDENTIFY YOUR PAGE ELEMENTS
Before: No abstraction from maze HTML ids, causing:
Difficult test creation
Confusing test scenarios and thus system documentation
More complex and less readable tests
After: Mapping abstraction layer from HTML id (part id) to a name
Meaningful name of the component be it a button, field or an error message
Clear to understand tests and thus system documentation
Easy to manage and update
Single place no confusion where to look for
12 How to Implement Efficient Test Automation in an Agile Project
EVOLUTION: STRUCTURE YOUR TESTS
Before: No clear structure and purpose for the tests, causing:
Difficult test management
Duplication of scenarios across tests
Missed crucial scenarios
Tests as documentation difficult to use by business
After: Split into Journey, Page and Component tests.
Journey tests are user story related scenarios - UAT if you like - taking persona for a journey through the full
or part of the application process
Page tests are classed as system tests, providing more detailed coverage for the specific page, business logic
or data handling
Component tests are focused on specific components of the application such as numeric data capture field
or address capture, providing most detailed coverage
Clear view what tests are required and what level of coverage are to be achieved
Easier test scenarios / execution management and partitioning
13 How to Implement Efficient Test Automation in an Agile Project
MAKING THE PROCESS WORK
14 How to Implement Efficient Test Automation in an Agile Project
QUESTIONS / ANSWERS
15 How to Implement Efficient Test Automation in an Agile Project
Team name Sopra
Lukasz Grabinski +44 (0) 131 332 3311 Orchard Brae House
John OHare +44 (0) 131 332 3311 30 Queensferry Road
Edinburgh
EH4 2HS
www.sopra.com
16 How to Implement Efficient Test Automation in an Agile Project