PATTERNS OF A “GOOD” TEST AUTOMATION FRAMEWORK! Anand Bagmar Software Quality Evangelist
PATTERNS OF A “GOOD” TEST AUTOMATION FRAMEWORK!
Anand Bagmar
Software Quality Evangelist
ABOUT ME
@BagmarAnand
Blog - essenceoftesting
about.me/anand.bagmar
WHAT DO YOU EXPECT FROM THIS SESSION?
TELL ME ...
¨ Any Managers in the room?
¨ Developers / Testers / Automation “folks” in the room?
¨ What toolset do you use for Automation?
¨ How many automated tests do you have?
¨ Have you heard the phrase - ”Test Automation code should be of Production Quality”?
¨ Do you believe it?
¨ Anyone in the room does not code / understand code?
4
Disclaimer
What is a Pattern?
https://en.wikipedia.org/wiki/Software_design_pattern
Have you heard-of or used any
Pattern(s) in Test Automation?
COMMON PATTERNS USED IN TEST AUTOMATION
¨ Page-Object
¨ Business Layer
¨ Singleton
¨ Composition
¨ Factory
¨ Builder
Test Automation Framework Patterns
Code sample - #1
Page-Object Pattern
PAGE OBJECT PATTERN
Model pagesin code
Simulates user actions
One place change
Reduces code duplication
Snippets of page
Code sample - #2
AUTOMATION FRAMEWORK WITH PAGE OBJECTS
LIMITATIONS OF PAGE-OBJECT PATTERN
¨ Test intent gets polluted
¨ Duplication of Test intent & implementation
¨ Intent becomes Imperative
¨ Maintenance challenges
¨ Scaling challenges
Business-Layer
Page-Object Pattern
BUSINESS-LAYER PAGE-OBJECT PATTERN
Code sample - #3
ADVANTAGES OF BUSINESS-LAYER PAGE-OBJECT PATTERN
¨ Validate what is important - Business requirements
¨ Test Pyramid remains sane
¨ Abstraction layers allow separation-of-concerns
¨ Changes are isolated
¨ Maintenance & Scaling becomes ‘easier’
Test Data Patterns
Why do we need to think differently about Test Data?
CRITERIA FOR TEST DATA
¨ Data is complex
¨ Needs to mimic “real” data
¨ Needs to be unique
¨ Data can be nested
¨ Though specified as static, may need to be Dynamic
¨ Data can be shared and reused
DIFFERENT WAYS TO SPECIFY TEST DATA
¨ In Test implementation
¨ In Test specification / intent
¨ In code … separate data structures / classes / etc.
¨ External files
TEST DATA SPECIFICATION EXAMPLES
¨ Excel
¨ CSV
¨ Property
¨ XML
¨ YAML
¨ Database
¨ Json
Code sample - #4
CRITERIA FOR SELECTION
¨ Easy to specify
¨ Easy to read and consume (by test framework)
¨ Ability to override specified data, easily
¨ Usable
TIPS FOR IMPLEMENTATION
¨ Consistent way to specify test data
¨ Read the data – as Business Entities
¨ Override as appropriate
¨ Create DSL to give meaning to data
¨ Use in test implementation
¨ Implement Test Data Entity Utilities – Build, Equals, Copy, Find, etc.
Locators’ Patterns
DIFFERENT WAYS TO SPECIFY ELEMENT LOCATORS
¨ In Page-Objects
¨ In separate files, per Page-Object
¨ In external files / locator files
Advantages of using Patterns for Test Automation
ADVANTAGES OF PATTERNS
¨ Well known, well understood
¨ Tried & tested solutions for common problems
¨ Reduces complexity
¨ Language neutral
¨ Aid in communication
ADVANTAGES OF PATTERNS IN TEST AUTOMATION
Saves time & effort (eventually)
Single ownership
Test Automation Code is of Production Quality!
Single point of change
Easy to –- Implement - Maintain- Debug- Scale
WHICH IS THE “BEST” PATTERN TO USE ?
It DEPENDS!on the
Context!
REFERENCES
Page Objects – Google
https://code.google.com/p/selenium/wiki/PageObjects
Page Objects – Martin Fowler
http://martinfowler.com/bliki/PageObject.html
Perils of Page-Object Pattern – Anand Bagmar
http://essenceoftesting.blogspot.in/2014/09/perils-of-page-object-pattern.html
Test Design Consideration
http://docs.seleniumhq.org/docs/06_test_design_considerations.jsp
Sample Test Framework implementation
https://github.com/anandbagmar/cuke-jvm-sample
@BagmarAnand
Blog - essenceoftesting
about.me/anand.bagmar
THANK YOU