46
TRANSFORM YOUR AUTOMATED TESTS WITH VISUAL TESTING Adam Carmi CTO @ Applitools

TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

TRANSFORM YOUR AUTOMATED

TESTS WITH VISUAL TESTING

Adam Carmi

CTO @ Applitools

Page 2: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

YOU CAN AND SHOULD

AUTOMATE YOUR

VISUAL TESTS!

Page 3: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 4: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

Q & A

Page 5: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHAT IS VISUAL TESTING?

A quality assurance activity aimed to verify that a Graphical

User Interface appears correctly to users

Page 6: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 7: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 8: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 9: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHY AUTOMATE?

The test matrix is too big to cover manually

Web browsers

Devices

Operating systems

Screen resolutions

Responsive design

L10n

3rd Party upgrades

Page 10: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHY AUTOMATE?

Mobile apps quality is critical

Harder to roll back changes

Can’t push daily

Updates take battery and data

Updates are not mandatory

Higher quality bar

Page 11: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHY AUTOMATE?

Release cycles keep getting shorter

Page 12: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

Q & A

Page 13: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

HOW DOES IT WORK?

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

Page 14: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

DEMOWebDriverCSS

Page 15: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

HOW DOES IT WORK?

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

Page 16: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 17: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 18: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 19: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 20: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 21: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

AND MORE…

1 pixel offsets in element positioning

Dynamic content

Moving elements

Images of different size

Performance

Page 22: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 23: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

IMAGE COMPARISON ENGINES

Page 24: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

IMAGE MAGICK

A command line tool for bitmap processing

Fuzzing is used to eliminate slight color differences

An error ratio is usually used to determine a match

$ compare –metric AE –fuzz 5% img1.png img2.png diff.png

2246

Page 25: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

THE JAVASCRIPT ENGINES

Resemble.jsPixel by pixel + error ratio + anti-aliasinghttp://huddle.github.io/Resemble.js

Blink-DiffPixel by pixel + error ratio + anti-aliasing + perceptual color distance computationhttps://github.com/yahoo/blink-diff

Looks-SamePixel by pixel + perceptual color distance computation + ignore Carethttps://github.com/gemini-testing/looks-same

Page 26: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

APPLITOOLS EYES

Handles anti-aliasing, pixel offsets, color similarity, and image scaling

Dynamic and moving content

Compare images of different sizes

No error ratio configuration required

Validates full UI pages

Fast!

Supports layout / structure matching

Page 27: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

DEMOVISUAL LAYOUT MATCHING

Page 28: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

HOW DOES IT WORK?

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

Page 29: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

MOTIVATION

Get fast feedback on code changes

Run tests locally in the background

CONS

Partial coverage

Chrome, IE?

Limited navigation

Tests stale browser versions

SETUP

Render screenshots with a headless

browser

PhatomJS, SlimerJS

Configuration file driven tests

QUICK FEEDBACK TOOLS

Page 30: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

VISUAL COVERAGE TOOLS

MOTIVATION

Verify that the app / site looks right in

all real execution environments

Test as many UI states as possible

Execute many tests in parallel

CONS

Requires test infrastructure

Implement and maintain test code

SETUP

Render screenshots using real

browsers on a variety of operating

systems and devices in parallel

WebDriver, Grid

Code driven tests

WebDriver, DSL

Page 31: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

CODE / SCRIPT● Needle (Python WD)

● WebDriverCss (JS WebDriverIO)

● Gemini (JS DSL)

● Selenium Visual Diff (Java WD)

● VisualCeption (PHP CodeCeption)

● Pix-Diff (JS Protractor)

● Shoov (JS WebDriverIO)

● Vizregress (.NET WD)

● Rspec Page Regression (Capibara)

● Applitools Eyes (All WD + Appium)

● PhantomCSS (JS CasperJS)

● Specter (JS DSL)

● FBSnapshotTestCase (XCTest)

CONFIGURATION● Viff

● CSS Visual Test

● GreenOnion

● Wraith-Selenium

● Wraith

● Dpdxt

● Grunt PhotoBox

● Snap And Compare

● BackstopJS

● CSSCritic

● Kobold

● DiffCop

● SUCCSS

SAMPLE TOOLS

Page 32: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

HOW DOES IT WORK?

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

Page 33: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

REPORT DIFFERENCES

As files on the file system

Page 34: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

REPORT DIFFERENCES

As a gallery

Page 35: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

REPORT DIFFERENCES

In your CI build report

Page 36: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

HOW DOES IT WORK?

Drive the AUT and take screenshots

Compare screenshots with baseline images

Report differences

Update the baseline

Page 37: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

UPDATE THE BASELINE

Gemini

Page 38: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

UI VERSION CONTROL

Keep CI tests green

Multiple app versions

Revert to previous baselines

A visual change log (documentation)

1 1 1

2

1

2

3 3

2

4

4

Page 39: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption
Page 40: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

DEMOAUTOMATED MAINTENANCE

Page 41: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

AGENDA

Why automated visual testing?

Tools & Technology

Where does it fit?

Q & A

Page 42: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHERE DOES IT FIT?

CODE UNIT INTEGRATION ACCEPTANCE PRODUCTION

Visual testing of frontend components by frontend developers

Page 43: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHERE DOES IT FIT?

CODE UNIT INTEGRATION ACCEPTANCE PRODUCTION

Full or partial validation of application screens

All team members can review and maintain

A collaboration tool

Page 44: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHERE DOES IT FIT?

CODE UNIT INTEGRATION ACCEPTANCE PRODUCTION

Validate your staging deployment using your production deployment as a baseline

Page 45: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

WHERE DOES IT FIT?

CODE UNIT INTEGRATION ACCEPTANCE PRODUCTION

No missing resources in production

No corruption due to 3rd party data, upgrades, hackers, etc.

Page 46: TRANSFORM YOUR AUTOMATED TESTS WITH …...2016/11/02  · CODE / SCRIPT Needle (Python WD) WebDriverCss (JS WebDriverIO) Gemini (JS DSL) Selenium Visual Diff (Java WD) VisualCeption

Adam Carmi (@carmiadam)

Co-Founder and CTO at Applitools

QUESTIONS?