+ All Categories
Transcript
Page 1: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

TaaS - Test Automation as a Service

Oren Rubin

What have the cloud done for us lately?

Page 2: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Testim.io CEO

Applitools Director of R&D

WixWeb Architect

Cadence Compiler Engineer

IBM Cloud Engineer

Google Developer ExpertOrenRubin

[email protected]

Mentor Google Launchpad

External LecturerTechnion University

Meetup Co-organizerSelenium-IL, GDG, Ember

...

Page 3: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Testing Theory

La järɡən

Page 4: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Testing Theory

La järɡən

● Scope

○ Unit○ Integration○ End to End

● Type

○ Functional○ Visual○ Performance○ Load○ Stress

● Accuracy

○ Smoke○ Acceptance○ Coverage

Page 5: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Black Box

Check against an API

Page 6: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

White Box

Look inside

Page 7: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

BeholdThe Interweb!

So simple..

Page 8: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

So simple.. Not!

E2E Path of Requests and Cache Hierarchy

BeholdThe Interweb!

FRONT END BACK END

Page 9: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Load/Stress Testing

Page 10: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Why linear? Why not hard start/stop?

CommonScenario

Page 11: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Metrics: CPU / Memory / Response

CommonScenario

Page 12: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Response Metrics: Throughput, Average, Median, Deviation

CommonScenario

Page 13: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Testing the Backend

Page 14: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Number of Threads | Ramp-Up | Loop Count

JMeter

Page 15: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

JMeter in the Cloud

JMeterIn The Cloud

||Equivalent

Page 16: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Why Front-End/E2E

Matters?

Page 17: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Depends on the app

Front EndMatters

More Than Ever

Page 18: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Who Moved My Code?

FRONT ENDBACK END FRONT ENDBACK END

1997 2017

Page 19: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

How to test Front End?

Page 20: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Meet Selenium

Page 21: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Many Languages

Page 22: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Many OS

BrowsersAll major browsers

On all major (desktop) operating systems

Page 23: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Can anyone suggest a good architecture?

Page 24: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

HTTP as a universal language

?TheWire

Protocol

Binding(SDK) Driver

Page 25: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

One (W3C) Standard to rule them all!

https://code.google.com/p/selenium/wiki/JsonWireProtocol http://www.w3.org/TR/webdriver/

Page 26: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Selenium != Selenium IDE

Page 27: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Meet Selenium's Hello World

Selenium

Page 28: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Meet Selenium IDE

Why Record/Playback

Sucks

Unreliable, Unreadable, Uneditable

Page 29: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Use Machine Learning to find elements

MeetTestim.io

Page 30: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Selenium Grid

Page 31: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

new Chrome(); chromedriver.exe

Browser

HTTP Request

localhost:8989/click

driver = new Chrome();...submitBtn.click();

driver (Binding)

What We Want

Page 32: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

What We Want

new Chrome();

chromedriver.exe

Browser

HTTP Request

localhost:8989/click

driver = new Chrome();...submitBtn.click();

driver (Binding)

Machine 1 Machine 2

Page 33: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

java -jar selenium.jar -port 4444 -role hub

selenium hub

Node 0 on 10.0

Selenium Grid

Page 34: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Selenium Grid

Node 1 on 10.1

Node 2 on 10.2

selenium node

java -jar selenium.jar -role webdriver -browser firefox -hubHost 10.0 –port 8989

java -jar selenium.jar -port 4444 -role hub

selenium node

java -jar selenium.jar -role webdriver -browser chrome -hubHost 10.0 –port 8989

selenium hub

Node 0 on 10.0

chromedriver.exe

firefox-webdriver.dpi

Page 35: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Selenium Grid

driver (Binding)

new Chrome();

BrowserHTTP Request

10.0:4444/chrome

hub = new URL("10.0:4444/wd/hub")cap = new Capabilities ("chrome", "v3", "windows")driver = new RemoteWebDriver( hub, cap );...

my computer / CI server Node 2 on 10.2

selenium node

java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989

java -jar selenium.jar -port 4444 -role hub

selenium node

java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989

selenium hub

Node 0 on 10.0

HTTP Request

10.2:8989/chrome

chromedriver.exe

firefox-webdriver.dpi

Node 1 on 10.1

Page 36: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Node 1 on 10.1

new Chrome();

BrowserHTTP Request

10.0:4444/click

driver = ...

submitBtn = driver.find(By.id("submit"));submitBtn.click();

driver

my computer / CI server Node 2 on 10.2

selenium node

java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989

java -jar selenium.jar -port 4444 -role hub

selenium node

java -jar selenium.jar -role webdriver -hubHost 10.1 –port 8989

selenium hub

Node 0 on 10.0

HTTP Request

10.2:8989/click

chromedriver.exe

firefox-webdriver.dpiSelenium Grid

Page 37: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

You need to get the drivers :(

?TheWire

Protocol

Binding(SDK) Driver

Page 38: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Protractor to the rescue

> npm install -g > webdriver-manager

> webdriver-manager update

> webdriver-manager start

Page 39: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Don't you lovedocker?

$ docker run -d -P --name selenium-hub selenium/hub:3.4.0-einsteinium

$ docker run -d --link selenium-hub:hub selenium/node-chrome:3.4.0-einsteinium$ docker run -d --link selenium-hub:hub selenium/node-firefox:3.4.0-einsteinium

Page 40: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Load Balance

Selenium Grid works well for only 25 nodes

https://github.com/seleniumkit/gridrouter

Page 41: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Selenium in the cloud

Page 42: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Browsers in the cloud

SaaS Open Source

Page 43: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Visual Validation

Page 44: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Can you spot the differences?

Page 45: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

1 image is worth a 1000 assertions

Page 46: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Pixels Matters

BTW, CSS is Crosscutting

Page 47: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989
Page 48: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989
Page 49: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989
Page 50: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989
Page 51: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989
Page 52: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Use Machine Learning to find elements

MeetTestim.io

Page 53: TaaS - Test Automation as a Service... · Selenium Grid Node 1 on 10.1 Node 2 on 10.2 selenium node java -jar selenium.jar -role webdriver -browser firefox-hubHost 10.0 –port 8989

Thank you :)

[email protected] | @shexman | linkedin

Oren Rubin


Top Related