Apps und Anwendungen aller Art analysieren

10 Open-Source-Tools für jedes Testszenario

| Autor / Redakteur: Mirco Lang / Stephan Augsten

In diesem Beitrag stellen wir vom Bugtracker bis hin zum GUI-Analyzer die beliebtesten quelloffenen Testing-Tools vor.
In diesem Beitrag stellen wir vom Bugtracker bis hin zum GUI-Analyzer die beliebtesten quelloffenen Testing-Tools vor. (Bild gemeinfrei: testbytes - Pixabay.com)

Ob einfacher Syntax-Test für Skripte oder aufwändiger Blackbox-Test für komplexe Web-Anwendungen: Mit den passenden Tools geht das Testing flott und mit Freude von der Hand. Hier zeigen wir zehn Open-Source-Werkzeuge, die man kennen sollte.

Unsere Auswahl umfasst Tools aus unterschiedlichsten Bereichen, von „simplen“ Shell-Skript-Tests mit BATS über Assessability-Anforderungen von GUIs mit LDTP bis hin zu Management-tauglichen Verhaltenssimulationen mit Cucumber. Alle vorgestellten Werkzeuge sind als Open-Source-Versionen verfügbar, einige bieten darüber hinaus erweiterte kommerzielle Varianten.

1. Selenium – Web App Testing

Selenium IDE ist im Grunde ein erweiterter Makro-Rekorder für Chrome oder Firefox.
Selenium IDE ist im Grunde ein erweiterter Makro-Rekorder für Chrome oder Firefox. (Bild: Lang / Selenium)

Selenium gehört zu den bekanntesten Open-Source-Testing-Werkzeugen überhaupt. Das Tool (oder besser die Tool-Sammlung) dient zum Testen von Web-Applikationen und – quasi nebenher – zum Automatisieren von administrativen Aufgaben. Kurz und mit Seleniums eigenen Worten ausgedrückt: „Selenium automatisiert Browser.“

Das Projekt existiert bereits seit 2004 und wurde 2008 mit WebDriver zusammengeführt. Heute besteht die Suite aus vier unterschiedlichen Tools: Selenium 2 ist der Zusammenschluss von Selenium und WebDriver, der „Selenium only“-Vorgänger existiert zwar noch unter dem Namen Selenium 1, wird aber nicht weiter gepflegt.

Die Selenium IDE ist als reines Prototyping Tool gedacht: Implementiert als Firefox- beziehungsweise Chrome-Plug-in, können Nutzerinteraktionen im Stil eines Makro-Rekorders aufgezeichnet und abgespielt werden. Als echte Test-Anwendung kommt die IDE jedoch nicht in Frage, da Möglichkeiten zur Iteration und zu bedingten Statements fehlen. Als viertes Tool im Bunde lässt sich Selenium-Grid nutzen, um Selenium-1-Tests über eine verteilte Umgebung, also von mehreren Hosts gleichzeitig, laufen zu lassen, um beispielsweise die Performance zu verbessern.

Testing-Einsteiger sollten mit Selenium IDE beginnen, Experten können gleich auf Selenium 2 setzen. Selenium 1 ist im Grunde nur für die Abwärtskompatibilität und insofern Bestandsnutzer interessant.

2. Appium – Mobile App Testing

Der Name lässt es bereits vermuten, Appium ist spezialisiert auf die Testautomatisierung für mobile Anwendungen unter iOS und Android. Interessanterweise kommt auch hier im Hintergrund das bereits oben erwähnte WebDriver zur Hilfe. Im Grunde ist Appium das Selenium für Apps – auch wenn es nicht ganz so plakativ beworben wird wie das ähnlich gelagerte Tool Selendroid, das sich selbst als „Selenium for Android“ bezeichnet.

Appium setzt also entsprechend auf automatisierte Blackbox-Tests und simuliert einfach gesagt echte Nutzer. Zwei Aspekte machen Appium besonders interessant: Zum einen testet das Projekt die tatsächlich veröffentlichte, finale App – keine für interne Testzwecke modifizierte Version. Zum anderen versucht Appium seinen Nutzern möglichst viele Freiheiten zu geben.

Die Tests laufen von einem HTTP-Server mit Node.js und können (derzeit) mit den Sprachen Ruby, C#, Java, JavaScript, Objective-C, PHP, Python, Perl und Clojure geschrieben werden. Das Ganze funktioniert sowohl auf Emulatoren und Simulatoren als auch auf realen Endgeräten. Dank starker Cross-Platform-Fokussierung funktioniert Appium tatsächlich als sehr universelles Testing-Werkzeug.

3. Selendroid – Android Testing

Eben schon erwähnt, versteht sich Selendroid als Selenium für Android: Tests werden über die Selenium-2-API realisiert und können mobile Web- und native Android-Anwendungen gleichermaßen testen.

Auch hier dürfen Tests sowohl über Emulatoren als auch auf echten Smartphones und Tablets laufen. Zu den Highlights gehören Hot Plugging echter Hardware, Unterstützung von Gesten, Integration in ein Selenium Grid, keine Modifizierung der zu testenden App oder auch die Ansprache über die Android-API seit Version 10.

4. Cucumber – BDD Testing

Ein simples Beispiel aus der Cucumber-Dokumentation.
Ein simples Beispiel aus der Cucumber-Dokumentation. (Bild: Cucumber)

Einen sehr interessanten Ansatz – auch für das Management – verwendet Cucumber. Cucumber lässt Tests ablaufen, die im Stile des Behavior Driven Development (BDD) geschrieben werden. Hier werden in der Sprache Gherkin erwartete Verhaltensweisen definiert, also beispielsweise, dass eine Anwendung auf die Frage nach dem Wochentag eine korrekte Antwort liefert.

Das eigentlich Besondere: Derartige Testfälle formuliert Gherkin in für Menschen verständlicher Sprache und definierte Schlagwörter wie „When“ und „Then“, so dass es in einfachen Fällen zunächst fast wie typischer Pseudo-Code wirkt. Natürlich müssen diese Testfälle noch in konkrete Programmiersprache überführt werden, standardmäßig via Ruby. Es gibt aber auch Portierungen für Java, JavaScript und Python.

Sinn und Zweck dieser Art der Testaufbauten ist, dass sie die Kommunikation zwischen Programmierern und Management beziehungsweise fachlichen Betreuern der Anwendungen vereinfachen. Cucumber selbst liefert zwar keine Automatisierung für Web-Anwendungen/Browser, kann aber mit Selenium zusammenarbeiten.

5. JMeter – Load Testing

Apache JMeter ist eine reine Java-Anwendung, um funktionale Lasttests zu fahren und die Performance zu testen. Zu den möglichen Testobjekten gehören HTTP, FTP, LDAP, Mail-Protokolle, TCP und Java-Objekte. JMeter ist in diesem Umfeld das etablierteste Werkzeug und kann auf über 20 Jahre Entwicklung zurückblicken.

Das Apache-Tool ist plattformunabhängig, beherrscht Multi-Threading, kann mit Plug-ins erweitert werden, liefert von Haus aus dynamische HTML-Reports und lässt sich sowohl via GUI als auch per Kommandozeile einsetzen. JMeter sollte zumindest als Referenz bekannt sein – aber es gibt auch Konkurrenz, etwa The Grinder.

6. The Grinder – Load Testing

Mit „The Grinder“ lässt sich die Performance von allem Testen, was eine Java-API hat – und zwar von mehreren Geräten gleichzeitig aus. Das Tool setzt bei den Testskripten auf die Sprachen Jython (Java-Implementierung von Python) und Clojure und spricht in erster Linie Entwickler an.

Wo JMeter durch Komplexität, Community und erweiterte Features wie Berichte punktet, ist The Grinder eher geradeaus und überzeugt mit Performance und Testing aus einer verteilten Umgebung heraus – und könnte insofern auch für überzeugte JMeter-Nutzer ein Gewinn sein.

7. BATS – Bash Testing

Mit BATS lassen sich Unix-Programme relativ einfach aus dem Terminal testen, spezialisiert ist das Tool jedoch auf Bash-Skripte. Die Nutzung ist im Grunde äußerst simpel: Über eine schlanke Syntax werden die zu testenden Objekte mit Parametern aufgerufen, der Bericht erfolgt prompt über die Standardausgabe. Mit BATS kann man sich sehr schnell vertraut machen und selbst für Kleinstprojekte entsteht hier kein wirklicher Overhead. Für regelmäßige Bash-Skripter ein Muss!

8. Linux Desktop Testing Project – GUI Testing

Mit dem Linux Desktop Testing Project gibt es eine nicht ganz alltägliche Testsoftware für grafische Benutzeroberflächen. Reine Skripte und CLI-Programme automatisiert zu testen, ist verhältnismäßig simpel – bei GUIs sieht das schon deutlich komplizierter aus.

Jeder, der schon mal versucht hat, ein Makro mit Mauseinsatz aufzuzeichnen, kennt die Spitze der vielfältigen Probleme. Das LDT-Projekt nutzt zur Ansprache von GUIs daher einfach die Accessibility-Funktionen, die Gnome-Anwendungen, Mozilla, OpenOffice.org und Programme auf Basis von Qt 4 und KDE 4 bieten können.

Zudem gibt es auch Versionen für Mac OS X und Windows. So lassen sich auch GUIs standardisiert über Python-Skripte ansprechen. Das Projekt ist nicht so poliert und so ausführlich dokumentiert wie die großen (halb-)kommerziellen Test-Suiten, aber definitiv ein sehr interessanter Ansatz zum Testen grafischer Anwendungen.

9. Bugzilla – Bug Tracker

Bugzilla ist die omnipräsente Lösung zur Verwaltung von Bugs.
Bugzilla ist die omnipräsente Lösung zur Verwaltung von Bugs. (Bild: Mozilla)

Bugzilla ist seit über 20 Jahren ein steter Begleiter vieler, vieler Entwickler und weniger Testing-Tool, als ein Hilfsmittel – das jedoch in keiner Entwicklungs- oder Testumgebung fehlen sollte. Mit dem Bug Tracker lassen sich auch in sehr großen Teams und Organisationen Bugs jeglicher Art verwalten und verfolgen. Und somit dient Bugzilla gewissermaßen als Auffangnetz für die Ergebnisse der eigentlichen Testdurchläufe, schließlich werden durch automatisierte Tests gefundene Schwachstellen und Bugs selten umgehend gepatcht.

10. QMetry Automation Framework – Testmanagement

Zum Abschluss noch ein weiteres freies Tool, das nicht selbst testet, aber in Ihrer Open-Source-Tool-Sammlung nicht fehlen darf: Das QMetry Automation Framework ist ein komplexes Framework zum Ausführen und Schreiben von Tests. Das eigentliche Testing übernehmen im Hintergrund unter anderem alte Bekannte wie Selenium und Appium sowie TestNG und Perfecto.

Eine Integration in Test-Management-Plattformen wie QMetry, Rally oder ALM ist ebenfalls möglich, ebenso die Anbindung an populäre Systeme wie beispielsweise Jenkins. Vor allem aber unterstützt das Tool das eigentliche Test-Authoring, etwa durch Anbindung externer Testdaten via CSV, XML, Excel und so weiter. Und nicht zuletzt hilft ein schickes Dashboard, die ganzen Testing-Aktivitäten auch im Blick zu behalten.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45855089 / Testing)