Download - Testing your Single Page Application
![Page 1: Testing your Single Page Application](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/1.jpg)
tweet #tarabica14
![Page 3: Testing your Single Page Application](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/3.jpg)
tweet #tarabica14
![Page 4: Testing your Single Page Application](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/9.jpg)
tweet #tarabica14
Dataset
SQL
Database Server Desktop Client
Classic Client-Server (VB6)
![Page 10: Testing your Single Page Application](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/16.jpg)
tweet #tarabica14
DEMOA very simple knockout.js based SPA tested with QUnit, Chutzpah and PhantomJS
![Page 17: Testing your Single Page Application](https://reader036.vdocuments.net/reader036/viewer/2022062511/54c82e674a795927518b4599/html5/thumbnails/17.jpg)
tweet #tarabica14