# Robot Framework

Robot Framework ist ein generisches Open-Source-Automatisierungs-Framework, das sowohl für Testautomatisierung als auch für Robotic Process Automation genutzt werden kann.
Robot Framework ist eines der bekanntesten Frameworks für Keyword-Driven Testing, unterstützt aber auch Behavior Driven Development mittels Gherkin Notation (Angenommen/Wenn/Dann).
Es setzt dabei auf eine einfache prozedurale Skriptsprache, die darauf ausgelegt ist, möglichst einfach menschenlesbar und erlernbar zu sein. Die Robot-Framework-Skriptsprache wird über Erweiterungen von vielen IDEs und Texteditoren unterstützt, um beispielsweise Syntaxhervorhebung, Debugging, Refactoring und Autovervollständigung zu ermöglichen.
Robot Framework ist in Python implementiert und kann mit beliebigen Bibliotheken zu Steuerung des Testobjektes oder der zu automatisierenden Software erweitert werden. Mehrere hundert Bibliotheken wurden von der Open-Source-Gemeinschaft zur freien Verwendung veröffentlicht.
Die Weiterentwicklung des Frameworks wird von der Robot Framework Foundation finanziert, die auch Rechteinhaber der Wortmarke Robot Framework ist.

## Geschichte

Die grundlegende Idee zum Robot Framework wurde 2004 entwickelt und 2006 in der Masterarbeit von Pekka Klärck (damals Pekka Laukkanen) veröffentlicht. Im Jahr 2005 wurde mit der Entwicklung einer ersten Version bei Nokia Siemens Networks (heute Nokia Solutions and Networks) begonnen. Aufgrund der wachsenden Verbreitung des Frameworks bei Nokia entstand im Entwicklungsteam um Robot Framework, das aus Pekka Klärck und weiteren externen Mitarbeitern bestand, die Idee, Robot Framework unter einer Open-Source-Lizenz zu veröffentlichen.
Die Version 2.0 wurde am 24. Juni 2008 als Open Source unter der Apache-Lizenz 2.0 veröffentlicht.
Seit der Veröffentlichung wuchs die Anzahl der Nutzer außerhalb von Nokia hauptsächlich im finnischen Markt. Mit der Reduktion der finanziellen Mittel durch Nokia und aufgrund der in Helsinki verbreiteten Nutzung von Robot Framework gründeten 7 Firmen im Juni 2015 den eingetragenen Verein Robot Framework ry, der hauptsächlich unter dem Namen Robot Framework Foundation bekannt ist, um die Weiterentwicklung von Robot Framework durch Pekka Klärck finanzieren zu können.
Im Januar 2018 fand die erste, seitdem jährlich stattfindende, Robot Framework Konferenz RoboCon in Helsinki (ausgenommen 2021) statt. Seit der COVID-19-Pandemie gibt es auch eine Online RoboCon, die 2021 das erste Mal organisiert wurde. Alle Vorträge aller RoboCon Konferenzen sind online frei verfügbar.
Seit 2018 sind nicht nur die weltweite Verbreitung von Robot Framework, sondern auch die Mitgliederzahl und somit die finanziellen Mittel der Robot Framework Foundation stark gestiegen.
Robot Framework konnte somit seit 2018 (Version 3.0) stark weiterentwickelt werden und die Verbreitung des Frameworks hat international stark zugenommen. Mit über 1,8 Millionen Downloads pro Monat zählt Robot Framework zu den 1 % als kritisch eingestuften Projekten auf PyPI.org.

## Syntax

Robot-Framework-Testspezifikation ist in Dateien und Ordnerstrukturen organisiert. Die standardmäßige Dateiendung ist *.robot und eine .robot-Datei bildet eine Test-Suite, die mehrere Testfälle enthalten kann. Jeder Ordner, der direkt oder indirekt eine oder mehrere .robot-Dateien enthält, ist wiederum eine Test-Suite.
Da Robot Framework selbst in Python implementiert ist, finden sich auch viele Konzepte aus Python wieder. So werden beispielsweise ähnlich wie bei einem Block in Python einzelnen Keyword-Aufrufe eines Testfalls in Robot Framework durch Einrückung mit mehreren Leerzeichen spezifiziert.
Die Syntax von Robot Framework ist optimiert auf Lesbarkeit und einfache Erlernbarkeit. Sie basiert meist auf einem durch mehrere Leerzeichen getrennten Format oder seltener anzutreffen auf einer Trennung der Anweisungen mittels senkrechtem Strich. Das bedeutet, dass Keyword-Aufrufe und deren Argumente nicht wie beispielsweise in Python durch Klammern und Kommata getrennt werden wie hier login_user("User1", "123456") sondern durch zwei oder mehr Leerzeichen wie hier Login User User1 123456 . Somit sind einfache Leerzeichen valide Zeichen innerhalb eines Keywords oder Wertes.
Des Weiteren sind alle Argumente standardmäßig Zeichenketten (Stings) und müssen nicht wie sonst üblich mit Anführungszeichen begrenzt werden. Durch diese Bevorzugung von Zeichenketten müssen im Gegensatz dazu Variablen sonderbehandelt werden und mit Dollar und geschweiften Klammern geschrieben werden. (bsp. ${my_variable})
Der Code ist in Sektionen aufgeteilt, die mit *** Sektionsname *** definiert werden. Erlaubte Sektionen sind u. a. Settings, Variables, Test Cases und Keywords.

### Beispiel (test.robot)

In dem folgenden Beispiel sind zwei Testfälle zu sehen, die jeweils vier Keywords aufrufen, die aus der Resource keywords.resource importiert wurden.
Das Keyword Login User hat in diesem Beispiel zwei Argumente, login und password, welche mit der Variablen ${user} und dem Wert 1234567890 besetzt werden.

### Keyword Beispiel (keywords.resource)

In Robot Framework können eigene zusammengesetzte Keywords erstellt werden, ohne in eine andere Programmiersprache wechseln zu müssen. Diese zusammengesetzten Keywords können entweder in eigenen Resource-Dateien oder in der Test-Suite selbst abgelegt werden.
Im folgenden Beispiel werden zwei Keywords definiert: Login User und Verify Valid Login.
Der hier zu sehende Programmcode würde in Python, wie folgt aussehen:

### Gherkin Notation (Behavior Driven)

Robot Framework kann neben der hauptsächlich in der Community verwendeten Keyword-Driven Testing-Methode auch Tests in Gherkin Notation verstehen. Diese Notation wird hauptsächlich zum Zwecke des Behavior Driven Development verwendet.

### Übersetzungen

Aufgrund des hohen internationalen Interesses and vor allem der starken Verbreitung von Robot Framework auf dem deutschen Markt wurde mit Version 6.0 Unterstützung für weitere Sprachen neben Englisch eingebaut.
Derzeit sind die folgenden Sprachen unterstützt:
   Bulgarian (bg), Bosnian (bs), Czech (cs), German (de), Spanish (es), Finnish (fi), French (fr), Hindi (hi), Italian (it), Dutch (nl), Polish (pl), Portuguese (pt), Brazilian Portuguese (pt-BR), Romanian (ro), Russian (ru), Swedish (sv), Thai (th), Turkish (tr), Ukrainian (uk), Chinese Simplified (zh-CN), Chinese Traditional (zh-TW)
Das vorherige Gherkin-Beispiel würde dann so aussehen:

## Erweiterungen

Für Robot Framework stehen hunderte Bibliotheken zur Verfügung, beispielsweise die Selenium basierte SeleniumLibrary oder die Playwright-basierte Browser-Bibliothek zum Testen von Webanwendungen.
Bibliotheken können nativ in Python implementiert werden. Hierbei ist die einfachste mögliche Bibliothek ein Python-Modul oder eine Python-Klasse und alle Funktionen in dem Modul oder der Klasse bilden die Keywords für Robot Framework:
Auch andere Programmiersprachen sind möglich, wenn sie einen RemoteServer auf Basis des sogenannten RemoteInterface implementieren. Der RemoteServer stellt mittels XML-RPC die Keywords zur Verfügung, damit in Testfällen auch Bibliotheken verwendet werden können, die zum Beispiel in Java implementiert sind.
Während der Robocon 2020 wurde die sogenannte MarketSquare-Organisation auf Github gegründet, unter der Bibliotheken der Community gesammelt und gemeinsam weiter entwickelt werden können.

## Finanzierung und Organisation

Rechteinhaber von Robot Framework ist heute die 2015 gegründete Robot Framework Foundation (Robot Framework ry), ein eingetragener Verein mit Sitz in Helsinki. Diese hat den Zweck, Robot Framework und dessen Community weiterzuentwickeln.
Zitat aus der Vereinssatzung (übersetzt aus dem Englischen, Stand Dezember 2023):
   2. Zweck und Form der Aktivitäten
   Zweck des Vereins ist, die Nutzung des Open-Source-Tools Robot Framework zu fördern und die Wartung und Weiterentwicklung des Tools zu ermöglichen und zu finanzieren. Der Verein hält das Tool für jeden im Internet frei verfügbar. Der Verein stellt sicher, dass das Robot Framework jetzt und in Zukunft für Testautomatisierung und Robotic Process Automation verwendet werden kann.
   Darüber hinaus ist es das Ziel des Vereins, die Community der Anwender zu unterstützen und Wissen über Testautomatisierung und robotische Prozessautomatisierung und deren Entwicklung mit Robot Framework zu verbreiten.
   Um den Einsatz des Tools zu fördern, ermöglicht und finanziert der Verein die Kernentwicklung und Wartung sowie Anwender- und Ökosystemprojekte. Darüber hinaus sind Community-Veranstaltungen und die Pflege und Unterstützung der Community-Plattformen sowie die Pflege der Dokumentation Arten der Aktivitäten.
2018 wurde der Verein für internationale Mitglieder geöffnet und ist seitdem stark gewachsen.
Als finanzielle Quellen dienen einerseits die Mitgliedsbeiträge der (Stand Dezember 2023) 65 Mitgliedsfirmen sowie die jährliche RoboCon. Aus den Mitteln wird hauptsächlich die Weiterentwicklung des Robot Framework Kerns finanziert sowie die Plattformen, wie Forum und Webseite und die Verwaltung des Vereins.
Der Vorstand des Vereins wird jährlich gebildet und besteht in den Jahren 2023 und 2024 aus acht Mitgliedern aus Finnland, Deutschland und Tschechien.
Mit dieser Organisationsform ist Robot Framework eine Ausnahme unter den Open-Source-Test-Frameworks. Wesentlich häufiger anzutreffen sind Organisationsformen, bei denen kommerzielle Firmen im Besitz der Open-Source-Software und deren Namen und Infrastruktur sind (zum BeispielCucumber, das im Besitz von SmartBear ist) oder die Projekte werden von unabhängigen Organisationen, wie beispielsweise der Software Freedom Conservancy finanziell unterstützt oder müssen selbstständig auf Sponsorensuche gehen.
Der Vorteil des eigenen Vereins ist die demokratische Organisation und Vergabe der Gelder, die aufgrund rechtlich bindender Formulierung der Vereinssatzung ausschließlich im Interesse des Frameworks stattfinden kann. Es ist durch diese Organisationsform praktisch ausgeschlossen, dass aufgrund finanzieller Interessen Einzelner die Weiterentwicklung eingestellt oder die freie Verfügbarkeit in der Zukunft eingeschränkt wird. Negativbeispiele, wo durch Firmenentscheidungen, die Weiterentwicklung von verbreiteten Frameworks komplett in die Verantwortung privater Entwickler oder der Community gegeben wurden, sind u. a. Gauge und Cucumber.

## RPA

Zwar wurde Robot Framework ursprünglich dazu entwickelt, die Abläufe bei manuellem Testen zu automatisieren, jedoch eignet sich das Framework auch zu Robotergesteuerter Prozessautomatisierung (RPA). Dazu wurde der Sprachgebrauch mit der Version 3.1 um sogenannte Tasks erweitert. Technisch verhalten sich Tasks wie Testfälle:
Durch die nahe Verwandtschaft von RPA und Testautomatisierung gelingt es Teams, die bereits Robot Framework einsetzen, verhältnismäßig leicht RPA zu betreiben, indem sie auf ihrer bestehenden Infrastruktur aufbauen.