45

Jasmine presentation Selenium Camp 2013

Embed Size (px)

DESCRIPTION

Presentation given by Dima Kovalenko at Jasmine Camp 2013

Citation preview

Page 1: Jasmine presentation Selenium Camp 2013
Page 2: Jasmine presentation Selenium Camp 2013

Francois Reynoud

Selenium Grid

Page 3: Jasmine presentation Selenium Camp 2013

Less Selenium, more unit testing

(With Jasmine)Dima Kovalenko

@dimacus

Page 4: Jasmine presentation Selenium Camp 2013

What do you use for “in browser” testing?

Page 5: Jasmine presentation Selenium Camp 2013

Selenium has some issues

Page 6: Jasmine presentation Selenium Camp 2013

Selenium Issues

• Reliability / Stability

Page 7: Jasmine presentation Selenium Camp 2013

Stability

Page 8: Jasmine presentation Selenium Camp 2013

Selenium Stability Last 2 months

Page 9: Jasmine presentation Selenium Camp 2013

Selenium Stability Last 12 months

Page 10: Jasmine presentation Selenium Camp 2013

Selenium Issues

• Reliability / Stability• Speed

Page 11: Jasmine presentation Selenium Camp 2013

Build Time – 400 Selenium on 3 machines 6 parallel cores

Page 12: Jasmine presentation Selenium Camp 2013

Typical Selenium Flow

Page 13: Jasmine presentation Selenium Camp 2013

Typical Selenium Flow

Page 14: Jasmine presentation Selenium Camp 2013

Typical Selenium Flow

Page 15: Jasmine presentation Selenium Camp 2013

Typical Selenium Flow

Page 16: Jasmine presentation Selenium Camp 2013

Source: GIS

Page 17: Jasmine presentation Selenium Camp 2013

Why so slow?

• Browser speed• JS speed• Machine speed• External URLs

Page 18: Jasmine presentation Selenium Camp 2013

Selenium Issues

• Reliability / Stability• Speed• Internet Explorer / Browser Compatibility

Page 19: Jasmine presentation Selenium Camp 2013

Internet Explorer

Source: GIS

Page 20: Jasmine presentation Selenium Camp 2013
Page 21: Jasmine presentation Selenium Camp 2013

Don’t use Selenium to test JavaScript!

Use it to test application flow instead.

Page 22: Jasmine presentation Selenium Camp 2013
Page 23: Jasmine presentation Selenium Camp 2013

http://pivotal.github.com/jasmine/

Page 24: Jasmine presentation Selenium Camp 2013

Jasmine

• Reliability / Stability

Page 25: Jasmine presentation Selenium Camp 2013

Jasmine

• Reliability / Stability• Browser Compatibility

Page 26: Jasmine presentation Selenium Camp 2013

Jasmine

• Reliability / Stability• Browser Compatibility • Speed

Page 27: Jasmine presentation Selenium Camp 2013

Build Time (3,500+ tests)

Page 28: Jasmine presentation Selenium Camp 2013

Jasmine is a BDD tool

(Behavior Driven Development)

Page 29: Jasmine presentation Selenium Camp 2013

What is BDD

In software engineering, behavior-driven development (abbreviated BDD) is a software development process based on test-driven development (TDD).[1][2] Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software developers and business analysts with shared tools

and a shared process to collaborate on software development.

Source: Wikipedia

Page 30: Jasmine presentation Selenium Camp 2013

BDD In the Nutshell

Write tests that describe application flow.

Page 31: Jasmine presentation Selenium Camp 2013

What BDD looks like

“Purchase flow should accept VISA”

Page 32: Jasmine presentation Selenium Camp 2013

Jasmine Test Sample

Page 33: Jasmine presentation Selenium Camp 2013

It’s Just Functions!

• “describe” “context” “it”…• Can use any JS code to make a test work

Page 34: Jasmine presentation Selenium Camp 2013
Page 35: Jasmine presentation Selenium Camp 2013

Jasmine Features

• Mocks / Spies• Fixtures• Matchers• Setup / Teardown• Asynchronous Support and Callbacks

Page 36: Jasmine presentation Selenium Camp 2013

Mocks / Spies

• Double any function• Monitors the calls the function• Monitors the arguments passed in• Can create a “bare” spy• Mock the Clock

Page 37: Jasmine presentation Selenium Camp 2013

Fixtures

• Adding elements to page on the fly

Page 38: Jasmine presentation Selenium Camp 2013

Matchers

• expect()• toEqual()• not()• toBeFalsy()• toThrow()• Custom matchers

Page 39: Jasmine presentation Selenium Camp 2013

Setup / Teardown

• beforeEach()• afterEach()

Page 40: Jasmine presentation Selenium Camp 2013

Asynch support

• Using spies to verify Callbacks• runs()• waitsFor()

Page 41: Jasmine presentation Selenium Camp 2013

What it is written in

• HTML• JavaScript• Ruby– Rake– ERB– Rspec

Page 42: Jasmine presentation Selenium Camp 2013

Workflow in Ruby

• Rake• ERB (Generate HTML)• Selenium• Tests in Loaded JS• Rspec

Page 43: Jasmine presentation Selenium Camp 2013

Environments supported

• Ruby• Rails• Spider Monkey• Node• Scala• Java• Django• .Net• Perl• HTML

Page 44: Jasmine presentation Selenium Camp 2013

Installation

• gem install jasmine• jasmine init

Page 45: Jasmine presentation Selenium Camp 2013

Questions?