ORR2016 - 2016-11-15.01

OpenRheinRuhr 2016
Ein Pott voll Software

Referenten
Daniel Maslowski
Programm
Tag 06.11.2016 - 2016-11-06
Raum Vortragsraum 1
Beginn 15:10
Dauer 01:00
Info
ID 521
Veranstaltungstyp Workshop
Track Programmierung
Sprache der Veranstaltung deutsch

Fail fast and succeed!

Test-Driven JavaScript Application Development

Mit der Zeit sind neben vielen Bibliotheken auch etliche Werkzeuge für die Entwicklung mit JavaScript entstanden. Dieser Talk soll eine detaillierte Übersicht über die verschiedenen Arten von Tests und die dafür jeweils einsetzbaren Tools bieten und eine Auswahl für Test-Driven Development (TDD) aufzeigen, um einen strukturierten Einstieg zu ermöglichen.

Kleine Vorwarnung: Diese Panoramasicht über eine traumhafte Toollandschaft kann Spuren von Buzzword-Bingo beinhalten. Dies dient lediglich dazu, Fortgeschrittenen die Zuordnungsmöglichkeit zu bieten und wird im Talk schnell aufgelöst. ;) Zunächst führen wir in das Thema ein, klären Terminologie und Theorie. Was ist ein Test, was sagt ein Test aus, was sind die einzelnen Werkzeuge? SuT (System under Test), Suite, Case, Testrunner, Unit-, Integrations- und Ende-zu-Ende-Tests, sowie die Eingliederung der Bibliotheken, die verschiedene Muster implementieren.

Dann betrachten wir Unit-Tests zum Einstieg mit dem simplen Assert-Modul von Node.js. Aufbauend kommt das Framework Jasmine hinzu mit Testrunner und deskriptiver Sprache, beziehungsweise Jest für React-Komponenten. Anwendungen sind jedoch wesentlich komplexer. Deshalb steigen wir tiefer ein und schauen auf Integrationstests, ebenso mit Jasmine, aber auch mit Mocha, Chai und Sinon. Hier führen wir die Idee von Test Doubles ein, eingeteilt in, aber nicht beschränkt auf Mocks und Stubs, und auf der Gegenseite Spies, um den Input der Test Doubles zu prüfen.

Zuletzt behandeln wir Ende-zu-Ende-Tests, die die Benutzeroberfläche, also Webbrowser, involvieren. Dazu setzen wir Chimp ein, das den Selenium-Wrapper WebdriverIO verwendet und die vorher kennengelernten Werkzeuge zu nutzen erlaubt mitsamt optionaler Integration der Applikationsentwicklungsplattform Meteor und PhantomJS als Headless-Browser.