Beiträge

Feature Image der Selenium Conference Chicago 2023

Eröffnung-Keynote

Selenium by numbersUnter dem Motto „meetup automate innovate“ fand vom 28. bis 30. März die Selenium Konferenz in Chicago statt. Ich hatte das Vergnügen, diese besuchen zu. Die Keynote präsentierte Diego Molina von Sauce Labs mit einem Vortrag, in dem er den Stand der Entwicklung umriss (Selenium: State of the Union). Man kann es wohl nicht oft genug sagen, dass Selenium ein Werkzeug zur Browserautomatisierung ist, auf dem Frameworks aufsetzen können. Es sieht sich selbst als „low level“ Bibliothek oder Plattform, welche die Grundfunktionen bereitstellt.

Diego Moline legt besonderen Wert darauf zu betonen, dass das Selenium Projekt ein Gemeinschaftsprojekt ist und durch die Zusammenarbeit mit Anderen das Software-Testen verbessern möchte. Als prominentes Beispiel führt er an, wie Jason Huggins (Selenium) und Simon Stewart (WebDriver) zusammenarbeiten. Des Weiteren gibt er Ausblick auf kommende Verbesserungen und Entwicklungen, die in absehbarer Zukunft verfügbar werden. Wie der Selenium Manager, der die Einrichtung der Treiber vereinfacht. Besonders interessant auch die Entwicklung zu WebDriver BiDi, welches das Potenzial hat, die Browserautomatisierung auf ein neues Level zu heben.

Außerdem wird die Community hinter dem Projekt vorgestellt und einige Wege aufgezeigt, wie man sich in diese einbringen kann. Unter anderem direkt im Chat über IRC oder Slack. Oder das Melden eines Bugs im Tracker auf GitHub.

Verpasste Chancen

As automators we ... Are strategist, planners and advocates Support teams by speeding up feedback loops Help teams by automating more than just checksDie zweite Keynote des Eröffnungstages wurde von Erika Chestnut präsentiert. Ihr Themenschwerpunkt: Verpasste Chancen oder Missed Opportunities. Sie spricht darüber, wie Qualität leidet, wenn die QA-Mitarbeiter in Schubladen gesteckt werden. Denn so viele Bereiche beeinflussen die Qualität eines Produkts, dass man als QA-Verantwortlicher die Chancen ergreifen sollte, wo man sie sieht, um die eigene Firma zu verbessern. Als Tester braucht man ein umfassendes Verständnis für die Software, was sie tut, womit sie interagiert und wie die Kunden sie benutzt. Wenn das nicht klar kommuniziert wird, ist es auch die Aufgabe der QA-Verantwortlichen darauf zu verweisen und Lösungen aufzuzeigen.

Was macht Testautomatisierung?

What does an automator do?Die Keynote des zweiten Konferenztags präsentierte Mark Winteringham vom Ministry of Testing mit der berechtigten Frage, was genau machst du denn in der Testautomatisierung?  Unter Einbeziehung des Publikums geht er der Frage nach, was wir als Testautomatisierer denn täglich, wöchentlich und monatlich so machen. Er berichtet, wie er zu Beginn seiner Karriere als Erstes die Frage stellte, welches Tool er lernen sollte. Eine Analyse des Stellenmarkts zeigt auch, dass immer nach den Werkzeugen gefragt wird, die man kann.

Im weiteren Verlauf kommt er zu dem Punkt, dass die Tools nur Mittel zum Zweck sind. Das Ziel bei der Automatisierung ist, die sich wiederholenden Aufgaben wegzuautomatisieren, Überprüfungen einzubauen, die allen Beteiligten schnell Rückmeldung geben und diese Ergebnisse zu kommunizieren. Es gibt kein Framework, mit dem man alles erschlägt. Unsere Aufgabe ist, das richtige Werkzeug für die anstehende Aufgabe zu wählen, was auch heißt neue Werkzeuge auszuprobieren. Entsprechend auch eine Strategie entwickeln, was automatisiert werden soll, in welcher Reihenfolge und mit welchen Mitteln. Dazu gehört auch die Risikoabschätzung für die Aufgaben. Wo haben wir den größten Nutzen?

Empfehlungen

Ich kann jedem nahelegen, sich die drei verlinkten Keynotes anzusehen. Sie decken eine Menge allgemeingültige Bereiche des weiter gefassten Umfelds der Qualitätssicherung ab. Einige der Folgevorträge gehen zum Teil näher auf angesprochene Themen ein oder richten sich an spezielle Problemstellungen. Alle Vorträge wurden aufgezeichnet und sind auf dem YouTube-Kanal der Selenium Conference verfügbar.

untestable thingsDer Vortrag über WebDriver BiDi bietet einen detaillierteren Einblick in die Entwicklung und was uns dort erwartet. Sehr spezifisch war der Vortrag über Crawler von Noemi Ferrera, wenn auch eher selten in der Anwendung im Alltag des Testers (Shift Left), ist es doch immer hilfreich, außerhalb der eigenen Box etwas zu lernen. Wer kennt es nicht bei dem Test einer Webseite, diesen einen Knopf zu drücken, funktioniert manuell wunderbar, aber aus irgendeinem Grund scheitert die Automatisierung. Wem das vertraut vorkommt, dem sei der Vortrag UNTestable nahegelegt, in dem Shi Ling-Tai einige der gemeinen Konstrukte moderner Webseiten aufzeigt und wie man sie testet.

Fazit

Hier alle Vorträge aufzulisten, würde den Rahmen sprengen. Lest die Kurzbeschreibungen der Vorträge auf der Agenda-Seite der Selenium Conf Webseite. Schaut euch die Aufzeichnungen auf YouTube an. Interessiert euch ein Thema, seht es euch an. Und wenn ihr die Gelegenheit habt, persönlich auf ein Treffen zu gehen, nutz diese. Die Gespräche mit anderen Teilnehmern zwischen den Vorträgen waren auch sehr aufschlussreich. Menschen aus den unterschiedlichsten Branchen, mit ähnlichen Herausforderungen und unterschiedlichen Lösungen.

Mir hat es Spaß gemacht, die Konferenz zu besuchen und meine Auffassung, was alles in den Bereich der Qualitätssicherung fällt, wurde deutlich erweitert.  Wenn ihr ein Meetup besucht habt oder eines empfehlen wollt, lasst es mich in den Kommentaren wissen. Vielleicht trifft man sich dann schon bald persönlich.

Allure Reporting ist eines der beliebtesten Open Source Produkte im Testbereich. Aus gutem Grund! Die Reports aggregieren die benötigten Daten sehr übersichtlich. Die Anbindung an die meisten Testframeworks wie Cucumber, TestNG, Selenide und andere funktioniert in der Regel reibungslos.

Spannend wird es bei Allure nur, wenn es um spezielle Anforderungen geht. Es können Postprocessing Aggregationen von unterschiedlichen Runs sein, aber auch das Anhängen von Dateien (Log Files oder Screenshots…) im Test-Lebenszyklus. Um den letzten Punkt geht es in diesem Artikel.

Weiterlesen

Testautomatisierung mit Cypress vs. Selenium Cypress und Selenium sind bekannte Testwerkzeuge, die für die Automatisierung von Webapplikationen eingesetzt werden. Selenium ist ein Open-Source-Automatisierungsframework, das in unterschiedlichen Produktversionen vorhanden ist.  Die Automatisierungslösung Selenium existiert schon seit 2004 und ist ein etabliertes Produkt mit einer großen Nutzerbasis weltweit. Das End-to-End-Tool Cypress hingegen ist seit 2014 ein Newcomer auf dem Markt, welches sich wie Selenium für die Automatisierung von Webapplikationen eignet. Cypress hat in den letzten Jahren durch seine […]

Open-Source SeleniumDragDrop Nuget

Vor einigen Jahren haben wir in einem unserer Blog Beiträge für die Lösungsmöglichkeit berichtet, wie man auf HTML 5 Seiten Drag & Drop Testautomatisierung mit HTML 5 implementeiren kann.

Der Hintrgrund war, dass die offizielle Selenium Drag & Drop API aus der Actions Klasse auf HTML 5 Seiten nicht richtig funktioniert und selbst die Referenz-Implementierungen von W3C Standard nicht autoamtisieren kann. Der zugehörige Bug-Request für Selenium Web Driver wurde bereits im Jahr 2012 angelegt. Leider ist er nach inzwischen 8 Jahren immer noch ungelöst 🙁

Da die Notwenigkeit der Drag & Drop Testautomtisierung mit Selenium aufgrund von immer komplexer Geschäftsapplikationen im Web immer häufiger angefragt wird, haben wir die Drag&Drop Implementeirung auf GitHub als Open Source Projekt bereitgestellt und ein fertiges Nuget Paket für C# veröffentlicht.

Im Rahmen dieser Implementierung wird die bereits beschriebene alternative Drag & Drop Umsetzung mit einem JavaScript umgesetzt, das automatisch augerufen wird.

Bei der Verwendung von Nuget Paket für Drag&Drop kann die Testautomatisierung von Drag&Drop in nur wenigen Schritten realisiert werden:

  1. Drag & Drop Nugen Paket SeleniumDragDrop in C# Solution einbinden
  2. Quell- und Ziel-Elemente für Drag & Drop auf der Web Seite finden
  3. DragDropHelper instanzieren
  4. Drag & Drop Operation für Quell- und Ziel-Elemente aufrufen

Die Automatisierung von Drag&Drop auf der W3C Refernz-Seite für HTML 5 Drag & Drop kann damit etwa wie folgt aussehen:

    IWebDriver driver = new ChromeDriver(Environment.CurrentDirectory);
    try
    {
        driver.Navigate().GoToUrl("https://www.w3schools.com/html/html5_draganddrop.asp");

        IWebElement sourceEl = driver.FindElement(By.Id("drag1"));
        IWebElement targetEl = driver.FindElement(By.Id("div2"));

        SeleniumDragDrop.DragDropHelper dragdrop = new SeleniumDragDrop.DragDropHelper(driver);
        dragdrop.DragAndDrop(sourceEl, targetEl);

        Assert.IsNotNull(targetEl.FindElement(By.Id("drag1")));
    }
    finally
    {
        driver.Quit();
    }

Viel Spaß beim Ausprobieren.

Selenium Tests mit Edge

Selenium Framework bietet per sé sehr einfache Möglichkeit an die Tests mit unterschiedlichen Web Browsern durchzuführen und damit die Cross-Browser Test Strategie umzusetzen. Während die Einbindung von gängigen Browsern wie Chrome oder Firefox i.d.R. unproblematisch erfolgt, gilt es bei der Einbindung von Edge und Internet Explorer einige Besonderheiten zu beachten, die in diesem Blog zusammengefasst werden. Die Lösungen werden nachfolgend mit C# aufgezeigt. Die Vorgehensweise ist aber auch auf andere Sprachen wie Java übertragbar.

Weiterlesen

Selenium ist als Testautomatisierungstool für Webanwendungen absoluter Standard. Der Standard WebDriver an sich hat keinen integrierten Reporter und das ist auch nicht seine Kernaufgabe. Diese wird vom WebDriver an die Testframeworks (JUnit / NUnit / MSTest / Jasmine usw.) delegiert. Es kann aber trotzdem vorkommen, dass die von den Testframeworks zur Verfügung gestellten Reporter für Auswertung von den Tests nicht ausreichend sind.

Gute Testreports haben allgemein folgende Vorteile:

  • Bieten gute Übersicht über den Testlauf auf verschiedenen Ebenen an: von hoch-granaular als Testmanagement Sicht bis feingranular für die Analyse einzelner Testschritte
  • Als lesbarer strukturierter Text / HTML abgelegt, enthalten fachliche Schritte
  • Enthalten eingebetete Screenshots, was beim Nachvollziehen der Probleme hilft
  • Vereinfachen die Fehlersuche
  • Können archiviert werden
  • Können von Menschen ohne Programmier-Kenntnissen ausgewertet werden

Auf dem Markt existieren viele mehr oder weniger gute Lösungen, die das Reporting für Selenium Tests bereitstellen. Nicht alle erfüllen die davor genannten Anforderungen an gute Testberichte, aber je nach Anwendungsfall und Projekt ist es auch oft gar nicht notwendig.

Bei uns in den Projekten hat sich der Testreporter ExtentReports bewährt. Neben einer kostenpflichtigen Version, gibt es auch eine Community Edition, die für den Einsatz in den meisten Projekten absolut ausreichend ist.

In diesem Beitrag möchte ich aufzeigen, wie ExtentReports in ein .NET Projekt eingebunden und benutzt werden kann.

Weiterlesen

Tutorial-Ziel

Wir alle haben ab und zu Aufgaben, die wir gerne automatisieren möchten. Mit diesem Tutorial zeige ich, wie mit Hilfe von Selenium, bestimmte Aktionen in WordPress automatisiert werden können.
Ziel des Tutorials ist, automatisiert durch alle vorgegebenen Beiträge zu gehen und in jedem Beitrag eine bestimmte Kleinigkeit zu ändern und zu speichern.

In dem ersten Teil wird nochmal die komplette Einrichtung beschrieben, das ist bereits in einem anderen Tutorial auf der Seite ähnlich zu finden, wegen der Vollständigkeit habe ich das aber hier noch einmal hinzugefügt.

Weiterlesen

Meine persönliche Meinung ist, dass Java wohl die populärste Programmiersprache für Selenium Projekte ist. In diesem Beitrag möchte ich zeigen, wie du damit am einfachsten anfängst. Weiterlesen