Vorwort

1999 schrieb Kent Beck "Extreme Programming Explained". Damit machte er die Welt mit Extreme Programming (XP) bekannt. Für viele Menschen war dies die erste Gelegenheit, von agiler Softwareentwicklung zu hören. Im Laufe der nächsten 20 Jahre verschwanden viele der Ideen aus dem Buch, aber eine Idee blieb bestehen: Wir sollten automatisierte Tests schreiben, um zu überprüfen, ob unser Code so funktioniert, wie er sollte. XP erwartet, dass diese Tests vor der Anwendungslogik geschrieben werden, was zu Test Driven Development (TDD) führt.

Heute wird TDD zwar nur noch selten praktiziert, aber die Idee, Tests zu schreiben, ist weit verbreitet (wenn auch nicht immer beliebt!). Die meisten Unternehmen erkennen die Notwendigkeit automatisierter Tests in irgendeiner Form an. Viele von uns schreiben tatsächlich Tests! Sogar "normale" QA-Rollen verlangen heute häufig, dass man Code schreibt.

2004 begann Jason Huggins mit Selenium bei einer Softwareentwicklungsberatung namens Thoughtworks, die sich auf agile Entwicklung spezialisiert hatte. Die Mitarbeiter waren durchdrungen von XP und begeisterte Befürworter von TDD. Von Anfang an war Selenium eng mit dem Testen verbunden.

Damals war es noch relativ einfach, Websites in einem Browser zu testen. Das waren die alten Zeiten, als es noch Dutzende von Browsern zur Auswahl gab und JS noch "JavaScript" geschrieben wurde. Die Websites waren klein, die Funktionalität begrenzt und die Interaktionen, die der Benutzer über den Browser durchführen konnte, waren ebenfalls begrenzt: vielleicht nur das Ausfüllen eines Formulars und das Klicken auf einen "Submit"-Button. In diese Welt wurde Selenium hineingeboren, und die APIs und Funktionen, die es anbot, waren so konzentriert wie die Plattform, die es testete.

Dann entdeckte die Welt, dass sich XMLHttpRequest im Internet Explorer versteckte, es wurde in Firefox implementiert, und plötzlich wurde "Web 2.0" zum heißen neuen Schlagwort. Google Maps zeigte der Welt, was Browser alles können, und die Welt liebte es! Websites boten immer mehr Funktionen, die durch sorgfältig ausgearbeitetes JS gesteuert wurden. Auch Selenium passte sich an und entwickelte sich weiter. Ich habe die WebDriver-APIs geschrieben, und diese traten in den Vordergrund. Obwohl sie darauf abzielten, die Menschen in eine bestimmte Richtung zu lenken, wurde Selenium durch die Komplexität dessen, was es zu automatisieren versuchte, zu einem immer komplizierteren Werkzeug.

Während ich dies schreibe, sind die Browser leistungsfähiger, mächtiger und flexibler als je zuvor. Wir schreiben keine "Websites" mehr. Wir schreiben "Web-Apps", die derzeitige ultimative Form davon ist die "Single Page App" oder SPA. Diese stellen die Browser vor größere Herausforderungen als je zuvor, aber sie sind eine natürliche Entwicklung. Glücklicherweise hat sich Selenium weiterentwickelt und ist gewachsen, damit diese Art von Apps automatisiert werden können. In Selenium 4 wurden eine Reihe neuer Funktionen hinzugefügt, um den neuen Testanforderungen gerecht zu werden. Diese neuen Funktionen haben Selenium zu einem noch komplexeren Werkzeug gemacht.

Doch obwohl Selenium im Laufe der Jahre immer komplizierter geworden ist, wird es von Menschen mit unterschiedlichen Programmierkenntnissen verwendet. Es gehört mehr dazu, einen erfolgreichen Selenium-Test zu schreiben, als "nur" die APIs zu lernen. Es gibt eine Fülle von Technologien, von den Test-Frameworks, die du verwenden kannst, über die Design Patterns, denen du beim Schreiben der Tests folgen kannst (und solltest!), bis hin zur Verwaltung der binären Abhängigkeiten, die für unsere Tests erforderlich sind. Wenn wir wollen, dass unsere Tests in einer angemessenen Zeit ablaufen, müssen wir Zugang zu einer Infrastruktur haben, die dies unterstützt.

Es gibt einfach so viel zu lernen, und es gibt erstaunlich wenig Anleitung, wie alle Teile zusammenpassen.

Deshalb bin ich so froh, dass Boni dieses Buch geschrieben hat. Zu Beginn wird erklärt, was Selenium ist und welche Komponenten es enthält. Dann baut jedes Kapitel auf dem vorherigen auf und führt nach und nach weitere Ideen und Konzepte ein, die sich natürlich und selbstverständlich anfühlen.

Aber Boni geht noch weiter, als nur zu erklären, wie man die APIs verwendet. Er beschreibt auch das Ökosystem von Diensten, Tools und Testläufern, die man verstehen muss, um das Beste aus dem Tool herauszuholen. Seine Erfahrung bei der Verwendung von Selenium und bei der Bereitstellung einiger dieser unterstützenden Tools kommt deutlich zum Vorschein: Hier bist du in den Händen eines Meisters.

Die Art und Weise, wie dieses Buch aufgebaut ist, ermöglicht es jedem, der Selenium benutzt, an dem Punkt einzusteigen, der sich für ihn richtig anfühlt. Du fängst gerade erst an? Dann fang am Anfang des Buches an, denn Boni erklärt dir die Grundlagen auf eine ansprechende und verständliche Weise. Vielleicht bist du mit Selenium vertraut, möchtest aber wissen, was in Selenium 4 neu ist oder welche weniger bekannten Funktionen es bietet? Dann spring einfach in die Mitte des Buches; es gibt so viel, dass sogar ich ein paar Dinge gelernt habe!

Ich hoffe, dass die Leser aus diesem Buch mitnehmen, dass Selenium nur ein Teil des Puzzles ist, das automatisierte Tests ausmacht. Boni geht auch darauf ein und zeigt den Lesern (dir!), wie du es in deine Test-Frameworks integrieren kannst, welche Unit-Testing-Bibliotheken du verwenden solltest und welche Design Patterns dir helfen, deine Tests wartbar und aktuell zu halten. Denn auch wenn es Zeit kostet, einen automatisierten Test zu schreiben, kann er jahrelang laufen, und es ist wichtig, dass du ihn problemlos bearbeiten kannst.

Dieses Buch ebnet den Weg, um Selenium zu beherrschen und es effektiv zu nutzen. Ich hoffe aufrichtig, dass es den Umgang mit Selenium einfacher und - ich wage es zu sagen - angenehmer macht.

Get Hands-On Selenium WebDriver mit Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.