patterns of a “good” test automation framework

Post on 21-Mar-2017

458 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related