33
- Björn Wilmsmann - Acceptance Testing / Automatisierte _ Web _ App _ Tests _ mit _ CasperJS /

Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Embed Size (px)

DESCRIPTION

PhantomJS und das darauf basierende CasperJS sind WebKit-basierte Lösungen, mit denen Web Anwendungen automatisiert getestet werden können. Über JavaScript können damit Navigationsabläufe und Anwendungsfälle aus Nutzersicht abgebildet werden. Acceptance Tests werden so zu einer wertvollen Ergänzung des Testablaufs.

Citation preview

Page 1: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

- Björn Wilmsmann -

Acceptance Testing/ Automatisierte _ Web _ App _ Tests _ mit _ CasperJS /

Page 2: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

CasperJS

• Frontend Testing für Web Applikationen

• Automatisierte Acceptance Tests

• Headless Browser Testing für die Kommandozeile

• HTML5 und JavaScript

Page 3: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Test-Driven Development

Page 4: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Unit Tests

• Individuelle Source Code Einheiten

• Kleinste testbare Einheit

• Isoliertes Testen kleiner Einheiten

Page 5: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Integration Tests

• Testen von Modulen

• Test der Zusammenarbeit einzelner Komponenten

• Zwischen Unit Tests und Acceptance Tests

Page 6: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Acceptance Tests

• Sind die funktionalen Anforderungen an eine Software erfüllt?

• User Stories

• High Level Tests

Page 7: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Continuous Integration

Page 8: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

PhantomJS

• Headless WebKit Browser

• JavaScript Umgebung ähnlich Node.js

• Voller HTML5 Funktionsumfang

• Scripting in JavaScript und CoffeeScript

• http://phantomjs.org

Page 9: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

WebKit

• Konqueror

• Safari

• Chrome

Page 10: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Anwendungsfälle

Page 11: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Screenshots

• Rendering von Websites

• Export als PNG, JPEG, GIF oder PDF

• Unterstützt SVG und Canvas

Page 12: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Automatisierung

• Makros

• Automatisierung von wiederkehrenden Aufgaben

• Cronjob für Websites

• Unterstützt JavaScript

Page 13: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Monitoring

• Untersuchung von Datenverkehr

• onResourceRequested, onResourceReceived

• Export in HAR (HTTP Archive) Format

Page 14: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Code Beispiele

Page 15: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

PhantomJS ist kein Test Framework

Page 16: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Testing

• Headless Testing von Websites

• Test Frameworks

• Capybara (via Poltergeist)

• Mocha

• …

• CasperJS

Page 17: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

CasperJS

• Nutzt PhantomJS als Grundlage

• Testing Framework

• Scripting in JavaScript und CoffeeScript

• http://casperjs.org

Page 18: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Funktionsumfang

• Navigation Scripting

• Formulare ausfüllen & abschicken

• DOM Manipulation

• Asserts & xUnit Ergebnisse

Page 19: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Test Suites

• Vollständige Testabläufe

• Strukturierte Tests

• Set up and tear down

Page 20: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

DOM Manipulation

• DOM Selectors

• CSS3

• XPath

Page 21: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Events

• Event Handler ähnlich Node.js

• Filter

• http://casperjs.org/events-filters.html

Page 22: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Hilfsfunktionen

• Utils: Hilfsfunktionen / JavaScript Erweiterungen

• Client Side Utils

• Logging

• Debugging

• Vererbung (via Prototypes)

Page 23: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Down to business

Page 24: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Und cross-browser Kompatibilität?

Page 25: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Slimer.js

• Nutzt Gecko (Mozilla) statt WebKit

• Wird von CasperJS seit 1.1-beta1 ebenfalls unterstützt

• http://slimerjs.org/

Page 26: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

TrifleJS

• Headless Internet Explorer (via .NET API)

• API analog PhantomJS

• http://triflejs.org/

Page 27: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Tools

Page 28: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Resurrectio

• Chrome Erweiterung

• Aufnahme von Scripts und Abläufen

• https://github.com/ebrehault/resurrectio

Page 29: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

SpookyJS

• CasperJS aus Node.js fernsteuern

• https://github.com/WaterfallEngineering/SpookyJS

Page 30: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

PhantomFlow

• Visualisierung von Nutzerführung

• https://github.com/Huddle/PhantomFlow

Page 31: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

PhantomCSS

• Visual diff für CSS

• https://github.com/Huddle/PhantomCSS

Page 32: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Weitere Links

• https://github.com/BjoernKW/CasperJS_presentation

• http://blog.codeship.io/2013/03/07/Smoke-Testing-with-Casperjs.html

Page 33: Acceptance Testing - Automatisierte Web App Tests mit CasperJS

Björn WilmsmannStefan-George-Str. 15a 46117 Oberhausen !

Website: http://wilmsmann.de eMail: [email protected] Tel.: +49-151-25209060