Transcript
Page 1: Testing your Single Page Application

tweet #tarabica14

Page 2: Testing your Single Page Application

tweet #tarabica14

Testing Your SPA

Wekoslav [email protected]/sweko@swekster

Page 3: Testing your Single Page Application

tweet #tarabica14

Page 4: Testing your Single Page Application

tweet #tarabica14

>whoami• Senior Developer in Seavus• Coding professionally since last century• Rabid about code qualty• Cofounder of Macedonian .net community• I love C#• I hate JavaScript, but I love web development

Page 5: Testing your Single Page Application

tweet #tarabica14

What will this talk be about• A little bit of history • A little bit of present• What is and what isn’t an SPA?• Why test software?• Design for quality• How can I test Single Page Applications?• Demo

Page 6: Testing your Single Page Application

tweet #tarabica14

A little bit of history• What’s the deal with this web thing?

• What is this thing called Javascript???

• Build in Netscape in 1995, focused on non-

professional developers.

• Standardized as ECMAScript (in 1999) – a.k.a.

Internet Prehistory

• What is this thing called DOM???

Page 7: Testing your Single Page Application

tweet #tarabica14

A little bit of present

• The rise of the Single-Page Application

• Heavy client logic, getting heavier

• Stateless web is dead and more alive than ever

• The attack of the APIs and services

• Ongoing M/V separation

Page 8: Testing your Single Page Application

tweet #tarabica14

So what is an SPA• Desktop-like user experience• Starts, and stays on a single page load• Client-side development• The server should be as thin and as stateless as

possible

Page 9: Testing your Single Page Application

tweet #tarabica14

Dataset

SQL

Database Server Desktop Client

Classic Client-Server (VB6)

Page 10: Testing your Single Page Application

tweet #tarabica14

Dataset

SQL

Database Server Desktop Client

Web ServerWeb Client

Modern Client-Server (SPA)

HTTP API Request

JSON Data

Page 11: Testing your Single Page Application

tweet #tarabica14

Why is testing needed• Software has bugs• Users and clients have bugs too• The problem space is extremely complex – almost-

exponential complexity• Software is never done done.• Some aspects are prone to automation• Unit tests• Functional tests• Integration tests• Regression tests

Page 12: Testing your Single Page Application

tweet #tarabica14

Quality by design – Pit of Success• KISS / DRY / YAGNI / SOLID

• Refactoring

• Separate responsibilities

• Avoid mixing of different levels of abstraction

• Manage dependencies

• Write testable code

• Code that does not exist, cannot have bugs

Page 13: Testing your Single Page Application

tweet #tarabica14

Testing libraries• QUnit• Jasmine• Mocha• Chai• Selenium• Phantom.js• Buster.js• Blanket.js• Casper.js• Chutzpah

• Sinon.js• JsMockito• jqMock• mockjax• Watir / WatiN• Sahi• expect.js• YUI Test• JSTestDriver• ….

Page 14: Testing your Single Page Application

tweet #tarabica14

How should I test JavaScript• Javascript code is just code!• Dynamic structure actually helps• Unit test frameworks• Headless browsers• Regular browsers• Integration with CI tools

Page 15: Testing your Single Page Application

tweet #tarabica14

How should I test everything else?• The old, tried way – Eyeballs on the job• Browser automation• Taking and comparing screenshots• Selenium WebDriver

Page 16: Testing your Single Page Application

tweet #tarabica14

DEMOA very simple knockout.js based SPA tested with QUnit, Chutzpah and PhantomJS

Page 17: Testing your Single Page Application

tweet #tarabica14


Top Related