Testautomatisierung / Softwaretesten


Softwaretesten Blogartikel


Testautomatisierung Blogartikel

Testautomatisierung mit Selenium EInführung
Testautomatisierung mit Selenium 1800 1200 Jakob R. Jaworski

Testautomatisierung mit Selenium

Testautomatisierung mit Selenium

Selenium ist das meist eingesetzte Testautomatisierungstool für Webanwendungen. Doch ist Selenium ein Testautomatisierungstool oder nur ein Automatisierungstool? Ist die Testautomatisierung mit Selenium für den agilen Softwareentwicklungsprozess überhaupt geeignet? Diese und weiter Fragen beantwortet der erste Teil des Artikels. Im zweiten Teil werfen wir einen Blick auf die fünf Schritte eines automatisierten Selenium-Testfalls und Aspekte, die bei der Testautomatisierung mit Selenium berücksichtigt werden sollten.

Die Serie “Testautomatisierung von Webanwendungen” beschäftigt sich mit Testautomatisierungstools, die für das automatisierte Testen von Webanwendungen eingesetzt werden. Jeder Teil der Serie stellt ein neues Tool vor und beschreibt die Einsatzgebiete und die Herausforderungen, die bei der Einführung entstehen können. Die Serie wird kontinuierlich erweitert.

Die Fülle an Browser-Versionen und die Tatsache, dass Webanwendungen auch auf mobilen Endgeräten funktionieren sollen, stellen Tester vor eine Herausforderung. Das manuelle Testen der Webanwendungen in allen gängigen Browser-Versionen ist in vielen Fällen auf Grund von mangelnden Projektressourcen nicht durchführbar. In der Webentwicklung haben sich Testautomatisierungstools langfristig etablieren können. Für das End-2-End-Testen von Webanwendungen gibt es eine Vielzahl an Testautomatisierungstools.

Unter diesen hat sich die Testautomatisierung mit Selenium in der Industrie als das meist eingesetzte Testautomatisierungstool für Webanwendungen bewährt. Eine Komponente von Selenium ist Selenium WebDriver. Dabei steht der Begriff Selenium zumeist stellvertretend für Selenium WebDriver.

Der erste Teil der Serie “Testautomatisierungstools für End-2-End-Tests von Webanwendungen” beinhaltet die Testautomatisierung mit Selenium. In diesem Teil der Serie, der sich „Testautomatisierung von Webanwendungen mit Selenium“ nennt, wird dargestellt, was Selenium ist, wofür es eingesetzt wird und was bei der Implementierung der Testautomatisierung mit Selenium zu beachten ist.

Testautomatisierung mit Selenium – Was ist Selenium?

Als Automatisierungstool interagiert die Testautomatisierung mit Selenium mit der Benutzeroberfläche der Webanwendung. Dabei führt es Aktionen auf den einzelnen Web-Elementen aus. Selenium ermöglicht es, Benutzer-Aktionen zu simulieren und diese zu automatisieren.

Als Automatisierungstool wird Selenium meist für End-2-End-Tests eingesetzt. Selenium WebDriver ist ein Application Programming Interface (API), das mit allen gängigen Programmiersprachen (Java, C#, JavaScript, Python, Ruby, PHP, etc.) eingesetzt werden kann. Selenium ist eine Open Source, somit fallen keine Kosten bei der Nutzung an. Als Automatisierungstool wird es erst in Kombination mit einem Testingframework wie beispielsweise JUnit, TestNG oder NUnit zu einem Testautomatisierungstool. Selenium WebDriver ist im W3C Standard aufgenommen und unterstützt alle gängigen Browser.

Testautomatisierung mit Selenium – Cross Platform und Parallel Tests

Ein großer Vorteil Testautomatisierung mit Selenium WebDriver ist, dass es auf allen gängigen Betriebssystemen ausführbar ist. Die Testautomatisierung, die auf einem Windows-Rechner implementiert wurden, kann auf einem Linux- oder Mac-Rechner ausgeführt werden. Ebenso unterstützt Selenium WebDriver die Ausführung der automatisierten Tests auf allen gängigen Browsern (Chrome, Firefox, Internet Explorer etc.). Die automatisierten Tests lassen sich auch parallel ausführen, was ein schnelles Feedback ermöglicht und gerade bei einer großen Anzahl von Tests einen großen Mehrwert bietet.

Testautomatisierung mit Selenium – Integration in den agilen Softwareentwicklungsprozess

Die Integration von Selenium mit Behaviour Driven Development Frameworks (BDD) wie Cucumber ermöglicht es, die Testfälle für alle Beteiligten als lebende Dokumentationen transparent zu machen. Die automatisierten Selenium-Tests können durch die gängigen Continuous Integration Server (Jenkins, GitLab) ausgeführt werden.  Dadurch ermöglicht Testautomatisierung mit Selenium eine optimale Integration in die agilen Prozesse und die Tool-Landschaft. Die Testautomatisierungsframeworks und die automatisierten Selenium-Testfälle lassen sich schon zum Teil fertigstellen, bevor die Anwendung oder das Feature implementiert ist.

Testautomatisierung mit Selenium – Integration in kommerzielle und Open-Source-Lösungen

Selenium ist das meist eingesetzte Automatisierungstool für Webanwendungen. Dementsprechend gibt es eine große Anzahl an Services, die mit Selenium eingesetzt werden können, seien es kommerzielle oder Open-Source-Lösungen. Anbieter wie Applitools oder die Open-Source-Lösung Galen ermöglichen visuelles Testen. Weitere Anbieter, wie etwa SauceLabs und Perfecto, stellen eine Infrastruktur zur Verfügung. In diesen werden die automatisierten Tests für eine Vielzahl an Browser-Versionen und Plattformen remote ausführbar gemacht.

Testautomatisierung mit Selenium – Programmierkenntnisse und nicht out-of-the-box

Um wartungsfreundliche Testautomatisierungsframeworks in Selenium WebDriver zu implementieren, benötigt man fortgeschrittene Programmierkenntnisse. Das Einarbeiten erfordert einen hohen Zeitaufwand. Ein weiterer Nachteil bei der Testautomatisierung mit Selenium Webdriver gegenüber kommerziellen Testautomatisierungstools ist, dass man jede weitere Komponente, die man zu seinem Testautomatisierungsframework hinzufügen will (wie beispielsweise Reports und Logging), in das Testautomatisierungsframework integrieren muss.

Die automatisierten Tests von Selenium werden über das User Interface (Browser) ausgeführt. Gerade die Benutzeroberfläche ändert sich im Softwareentwicklungsprozess oft. Dies führt dazu, dass die Tests bei jeder Änderung angepasst werden müssen. Die stetige Angleichung betrifft auch kommerzielle Testautomatisierungstools, die über die Benutzeroberfläche automatisierte Tests ausführen.

Fünf Schritte – Testautomatisierung mit Selenium

Die Implementierung von automatisierten Selenium-Testfällen besteht in der Regel aus den folgenden fünf Schritten:

1.) Set-up

Damit wir automatisierte Tests mit Selenium implementieren können, müssen wir erst mal Selenium konfigurieren und den Browser festlegen.

2.) Elemente identifizieren

Um automatisierte Benutzeraktionen ausführen zu können, müssen wir die Elemente einer Webanwendung eindeutig identifizieren. Hierzu haben wir eine große Anzahl an Lokators, die uns bei Testautomatisierung mit Selenium zur Verfügung stehen.

3.) Aktionen ausführen

Nachdem wir die einzelnen Elemente einer Webanwendung identifiziert haben, können wir die Aktionen eines Benutzers automatisieren.

4.) Ist/Soll-Abgleich

Selenium ist an sich keine Testautomatisierungstool. Erst in Verbindung mit einem Testautomatisierungsframework wird es zu einem Testautomatisierungstool. Jede gängige Programmiersprache hat ein oder mehrere Testautomatisierungsframework für einen Ist/Soll-Abgleich.

5.) Anfangszustand herstellten

Nachdem unsere automatisierte Selenium Testfällen durchlaufen sind, wollen wir den Anfangszustand herstellen. Im Falle von Selenium wollen wir den Browser wieder schließen.

Testautomatisierung mit Selenium – Empfehlungen

Softwareentwicklungsprojekte sind komplex und bringen unterschiedliche Herausforderungen mit sich. Gerade am Anfang des Softwareentwicklungsprozess sind die Informationen, die für die Testautomatisierung mit Selenium gebraucht werden, noch nicht vollständig vorhanden. Die Berücksichtigung nachstehender Empfehlungen können eine gute Grundlage für den erfolgreichen Einsatz von Selenium schaffen.

Wissen

Die Testautomatisierung mit Selenium erfordert Wissen über die Grundlagen von Webanwendungen. Deshalb sollte der Verantwortliche für die Implementierung der Testautomatisierung von Selenium sollte HTML-, CSS-, Programmier- und Testautomatisierungskenntnisse besitzen. Bei der Testautomatisierung mit Selenium helfen HTML- und CSS-Kenntnisse dabei Elemente zu identifizieren und Selektoren zu erstellen. Gute Programmierkenntnisse ermöglichen es das Testautomatisierungsframework wartbarer zu implementieren wie im Abschnitt Design Pattern beschrieben.

Identifikation der Elemente

Damit bei der Testautomatisierung mit Selenium-Aktionen ausgeführt werden können, müssen die Elemente einer Webanwendung identifiziert werden. Dies kann oft eine Herausforderung sein, wenn bei der Implementierung der Webanwendung nicht darauf geachtet wird, dass die einzelnen Elemente einer Webanwendung eindeutig identifizierbar sind. Somit erleichtert die Testautomatisierung mit Selenium, wenn die Elemente eindeutige Attribute haben.

Clean Code

Der Code, der bei der Erstellung von Testautomatisierung mit Selenium implementiert wird, sollte die Regeln von Clean Code befolgen. Wie beispielsweise eindeutige Namen für Variablen, Funktionen und Klassen. Der Quellcode sollte einfach zu lesen und zu ändern sein.

Design Pattern

Automatisierte Selenium-Testfälle sind in der Regel wartungsaufwändiger als Unit-Tests oder Integrationstests, da sie mit der Anwendung über die Benutzeroberfläche agieren. Die Benutzeroberfläche einer Anwendung ändert sich im Softwareentwicklungsprozess mehrfach. Der Einsatz von Design Patterns reduziert den Wartungsaufwand der automatisierten Selenium-Testfälle und ermöglichen es, redundanten Code zu vermeiden und Code wiederzuverwenden.

Parallele Ausführung

Die Testautomatisierung von Selenium ist in der Regel langsamer in der Ausführung als Unit- und Integrationstests. Es sollte bei der Implementierung darauf geachtet werden, dass die automatisierten Selenium-Testfälle parallel ausgeführt werden. Dies führt zu schnellem Feedback.

Reporting

Damit die Testautomatisierung mit Selenium einen Mehrwert für den Softwareentwicklungsprozess liefert, ist es wichtig, den Fehlerzustand schnell zu identifizieren. Ein Report über die automatisierten Testfälle sollte uns die einzelnen Schritte, die ausgeführt werden, anzeigen. Bei einer Fehlerwirkung sollten ein Screenshot anzeigen, wo der automatisierte Testfall fehlgeschlagen ist.

Testautomatisierung mit Selenium – Fazit

Da automatisierte Selenium-Tests auf allen gängigen Browsern ausgeführt werden können, eignet sich die Testautomatisierung mit Selenium sehr gut für Webanwendungen. Durch die große Community an Selenium-Usern lassen sich für aufkommende Herausforderung auch im World Wide Web häufig Lösungen finden. Des Weiteren wird Selenium WebDriver kontinuierlich weiterentwickelt und ist immer up-to-date mit den neuesten Browser-Versionen. Zu beachten ist jedoch, dass man gute Programmierkenntnisse benötigt, um ein Testautomatisierungsframework zu implementieren.Im Softwareentwicklungsprozess sollte die Automatisierbarkeit der Anwendung berücksichtigt werden. Der Verantwortliche der Testautomatisierung mit Selenium sollte die Grundlagen der Softwareentwicklung von Webanwendungen beherrschen. Bei der Testautomatisierung mit Selenium sollten Clean Code Regeln und Design Pattern eingesetzt werden, um die Verständlichkeit des Quellcodes und die Wartbarkeit zu gewährleisten. Die automatisierten Selenium-Testfälle sollen parallel ausgeführt werden, um schnelles Feedback zu bekommen. Die Reports sollten es ermöglichen, Fehlerzustände schnell zu identifizieren.

Tutorials im Bereich „Testautomatisierung mit Selenium“ findest Du im Bereich: Testautomatisierung & Softwaretest Tutorials und auf unserem YouTube-Kanal: Testautomatisierung – Gewusst Wie

 

Testautomatisierungstools Appium
Testautomatisierung von mobilen Anwendungen mit Appium 1800 1205 Jakob R. Jaworski

Testautomatisierung von mobilen Anwendungen mit Appium

Testautomatisierung von mobilen Anwendungen mit Appium

In dieser Folge der Serie Testautomatisierungstools für mobile Anwendungen schauen wir uns die Testautomatisierung von mobilen Anwendungen mit Appium an. Im Gegensatz zu Desktop- und Webanwendungen stellen mobile Anwendungen Tester vor eine größere Herausforderung: Die Technologien, auf denen diese ausgeführt werden, gestalten sich immer komplexer. Einerseits werden, wie der Name “mobile” schon sagt, die Anwendungen im täglichen Leben genutzt und deswegen stellen die Nutzer größere Anforderungen an sie. Auch wenn nur die zwei gängigen Betriebssysteme Android (75 % Marktanteil 2017) und iOS (24 % Marktanteil) genutzt werden, gibt es gerade im Android-Umfeld eine Vielzahl an Gerät- und Betriebssystem-Versionen. Nicht zu vergessen ist die Fülle an Sensoren eines Mobilgeräts, die mit der mobilen Anwendung interagieren.

Mobile Anwendungen brauchen eine andere Verteilung manueller und automatisierter Tests als Desktop- und Webanwendungen. Ein Automatisierungstool, welches in der Industrie eingesetzt wird und sich in der Praxis bewährt hat, ist Appium. Appium stellt, wie auch Selenium, den gängigen Programmiersprachen eine API bereit, damit diese mit der jeweiligen Programmiersprache genutzt werden können. Wie Selenium so ist auch Appium ein Tool, welches in Verbindung mit einem Framework (z.B. TestNG, NUnit) zur Testautomatisierung genutzt wird.

Cross-Platform-Test von nativen, hybriden und Web-Apps

Appium hat den großen Vorteil, dass damit sowohl Android- als auch iOS-Anwendungen automatisiert getestet werden können. Es lassen sich auf beiden Plattformen native, hybride und Web-Apps testen. Mittlerweile kann man mit Appium Windows- und Mac-Desktop-Apps testen. In Zukunft ist es vorgesehen, damit Internet of Things-Geräte automatisiert zu testen

Keine Lizenzkosten für die Nutzung von Appium

Appium ist wie Selenium ein Open-Source-Tool, somit fallen keine Lizenzkosten an. Appium hat zahlreiche Nutzer und verfügt über umfangreiche technische Dokumentationen.Mit Appium kann mal sowohl die mobilen Anwendungen auf physischen Geräten als auch auf Emulatoren und Simulatoren automatisiert testen. Genau wie bei Selenium, gibt es Cloud-Anbieter, die eine Infrastruktur bereitstellen, um die automatisierten Tests auf einer Vielzahl von Versionen von Betriebssystemen und Geräten automatisiert zu testen. Sogar Visual-Test-Automation ist mit Appium mit Anbietern wie Applitools möglich. Das aufgebaute Testing-Framework mit Appium und der jeweiligen Programmiersprache lässt sich ohne großen Aufwand in einen Continuous Integration Server integrieren. Die parallele Ausführung der Tests führt zu schnellem Feedback.

Nicht out-of-the-box

Um eine Test Automation Solution mit Appium zu erstellen, benötigt man gute Programmierkenntnisse. Das kann bei der Einarbeitung zu einem höheren Zeitaufwand führen. Wie auch bei Selenium gibt es bei dem Open-Source-Tool kein Service Level Support. Der Aufbau einer Test Automation Solution ist nicht out-of-the-box und muss individuell, den Projektanforderungen entsprechend, von Grund auf implementiert werden.

Fazit

Der richtige Einsatz von Appium kann einen großen Mehrwert für das automatisieren von funktionalen und visuellen Tests bedeuten. Wichtig ist zu beachten, dass gerade mobile Anwendungen so getestet werden, wie sie der Endnutzer beansprucht. Beispielsweise sollte im Falle einer Sport App nicht versucht werden, alles im Labor zu automatisieren, sondern so zu testen, wie sie im täglichen Leben genutzt wird. Für schnelles Feedback sollte man die Testautomatisierung mit Appium im Emulator und Simulator automatisiert testen. Man sollte jedoch die Mehrheit der Tests, manuelle und automatisierte, am echten Gerät ausführen.

Appium Tutorials

Kostenfreie Schulung zum Thema Testautomatisierung mit Appium findest Du im Tutorials Bereich und auf unserem YouTube Kanal „Testautomatisierung – Gewusst Wie

Softwaretester werden mit der Academy
Softwaretester werden 1800 1201 Jakob R. Jaworski

Softwaretester werden

Softwaretester werden per Quereinstieg. Geht das?

Unternehmen verlangen heutzutage nicht zwingend einen Studienabschluss, um als Softwaretester tätig zu sein. Des Weiteren existiert keine Ausbildung und kein Studiengang, der sich damit befasst, Softwaretester zu werden. In einigen Informatik-Studiengängen gibt es zwar vereinzelt Module, die sich mit dem Thema befassen. Die Module in den Studiengängen gehen jedoch nicht in die Tiefe und die wichtige Praxiserfahrung fehlt.

Viele Softwaretester sind Quereinsteiger – zahlreiche weltweit anerkannte Softwaretest-Experten besitzen keinen Informatik-Hintergrund. Stattdessen haben viele der Experten und Expertinnen Fächer wie Politikwissenschaften oder Philosophie studiert. Mit dem richtigen Vorgehen kann man auch ohne Ausbildung oder Studium Softwaretester werden. Wie Du einen möglichen Einstieg meistern kannst, zeige ich Dir in den nächsten Abschnitten.

Zertifizierung als Softwaretester

Als Quereinsteiger sollte man dem zukünftigen Arbeitgeber zeigen, dass man sich mit dem Thema Softwaretesten auseinandersetzt und Fachkenntnisse vorweisen kann. Dies ist vor allem durch Zertifikate möglich: Das International Software Testing Qualification Board (ISTQB) ist eine weltweite anerkannte Organisation, welche Zertifizierungen für Softwaretester anbietet. Es gibt verschiedene Stufen von Zertifizierungen. Die Zertifizierung als „Certified Software Tester Foundation Level“ sollte für den Einstieg als Softwaretester ausreichen. Zwar ist der damit verbundene Abschlusstest für viele eine erste Hürde, die jedoch mit der richtigen Vorbereitung gut zu meistern ist.

Certified Softwaretester im Selbststudium

Mit dem Fachbuch „Basiswissen Softwaretest: Aus- und Weiterbildung zum Certified Tester – Foundation Level nach ISTQB-Standard“ kannst Du Dich optimal auf die Zertifizierung vorbereiten. Damit Du einen Einblick bekommst, wie die Fragen in der Prüfung aussehen können, empfehle ich Dir die Lernplattform smartwebapps. Dort kannst Du Dich kostenlos in den jeweiligen Kurs einschreiben und die Prüfung Certified Softwaretester Foundation Level mit Musterfragen üben. Der größte Vorteil des Selbststudiums ist das intensive Auseinandersetzten mit den Inhalten. Wem es leichter fällt, sich unter Anleitung auf die Prüfung vorzubereiten, der kann auch eine kostenpflichtige 3-tägige Schulung besuchen, die das Ablegen der Prüfung am letzten Tag beinhaltet. Anbieter hierfür sind bspw. iSQI

Nur mit Theorie geht’s auch nicht!

Die Zertifizierung ermöglicht es Quereinsteigern zwar, sich die theoretischen Grundlagen des Softwaretestens anzueignen, doch ganz ohne praktische Erfahrungen ist der Weg zum Softwaretester schwierig. Eine Möglichkeit Erfahrungen zu sammeln bietet Dir das Crowd-Testing. Hierbei testest Du Webanwendungen und mobile Anwendungen von Unternehmen und erhältst dafür eine Vergütung. Dabei lernst Du vor allem, wie Du Explorative Tests durchführst und Bug Reports schreibst. Zusätzlich erhältst Du Feedback von erfahrenen Testern. Mittlerweile gibt es eine große Anzahl an Crowd Testing-Anbietern. Zu empfehlen sind test.io und testbirds.

Fazit

Eine große Anzahl an Softwaretestern sind Quereinsteiger. Eine Zertifizierung bringt Dich Deinem Ziel, Softwaretester zu werden, näher. Ob Du Dich durch einen Schulungsanbieter oder im Selbststudium auf die Zertifizierung vorbereitest, liegt ganz bei Dir. Damit Du nicht nur Theorie lernst, sondern zeitnah Praxiserfahrung sammelst, solltest Du Dich jedoch bei 2-3 Crowd Testing-Anbietern anmelden. Nachdem Du die Grundlagen gelernt und Praxiserfahrung gesammelt hast, ist es an der Zeit, Dich mit dem Thema Testautomatisierung zu befassen. Testautomatisierung gewinnt in Softwareentwicklungsprojekte zunehmend an Bedeutung. Kostenfreie Schulungen dazu findest Du im Bereich Tutorials.

Back to top
Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.