„Robot Framework“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
LA+ |
→Weblinks: Projekt ist nach GitHub umgezogen |
||
(22 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<noinclude> |
|||
{{Löschantragstext|tag=8|monat=Dezember|jahr=2023|titel=Robot Framework|text=''Die enzyklopädische Relevanz dieses Test-Frameworks ist im Artikel nicht dargestellt bei vllständigem Verzicht auf Außenwahrnehmung und unabhängige Belege.'' [[Benutzer:Millbart|Millbart]] [[Benutzer Diskussion:Millbart|<small>talk</small>]] 09:57, 8. Dez. 2023 (CET)}} |
|||
----</noinclude> |
|||
{{Infobox Software |
{{Infobox Software |
||
| Name = |
| Name = |
||
Zeile 18: | Zeile 15: | ||
| Kategorie = [[Softwaretest|Test]]-[[Framework]] |
| Kategorie = [[Softwaretest|Test]]-[[Framework]] |
||
| Lizenz = [[Apache-Lizenz]] 2.0 |
| Lizenz = [[Apache-Lizenz]] 2.0 |
||
| Deutsch = |
| Deutsch = |
||
| Website = [http://www.robotframework.org robotframework.org] |
| Website = [http://www.robotframework.org/ robotframework.org] |
||
}} |
}} |
||
'''Robot Framework''' ist ein generisches [[Open Source|Open-Source]]-Automatisierungs-[[Framework]], das sowohl für [[Testautomatisierung]] als auch für [[Robotic Process Automation]] genutzt werden kann<ref name="Homepage">[http://www.robotframework.org/ Robot Framework Homepage] (englisch)</ref>. |
|||
Robot Framework ist eines der bekanntesten Frameworks<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/ratgeber/Keyword-Driven-Testing-jenseits-des-Hypes-Eine-kritische-Bestandsaufnahme-2819884.html |titel=Keyword-Driven Testing jenseits des Hypes: Eine kritische Bestandsaufnahme |datum=2015-09-18 |sprache=de |abruf=2023-12-10}}</ref> für [[Keyword-Driven Testing]], unterstützt aber auch [[Behavior Driven Development]] mittels Gherkin Notation (Angenommen/Wenn/Dann). |
|||
Die Testfälle werden als Textdateien abgelegt und können grundsätzlich mit jedem beliebigen Text-Editor bearbeitet werden. Es gibt einige [[Integrierte Entwicklungsumgebung|IDE]]<nowiki/>s, die sich auf Robot Framework konzentrieren, so zum Beispiel Robot IDE (RIDE)<ref name="RIDE">[https://github.com/robotframework/RIDE RIDE Homepage] (englisch)</ref> und RED<ref>{{Internetquelle |autor= |url=https://github.com/nokia/RED |titel=Robot Editor |werk=Github |hrsg=Nokia |datum= |abruf=2020-06-16 |sprache=en}}</ref>, die auf [[Eclipse (IDE)|Eclipse]] basiert. Diese bieten Funktionen wie Code-Vervollständigung, vereinfachte Verwaltung von Schlüsselwörtern und [[Debugging]]. Darüber hinaus gibt es von der Community getriebene Plugins für weitere gängige Entwicklungsumgebungen wie zum Beispiel [[PyCharm]], [[Project Jupyter|Jupyter]] und [[Microsoft Visual Studio Code]]. |
|||
Es setzt dabei auf eine einfache [[Prozedurale Programmierung|prozedurale]] [[Skriptsprache]], die darauf ausgelegt ist, möglichst einfach menschenlesbar und erlernbar zu sein. Die Robot-Framework-Skriptsprache wird über Erweiterungen<ref>{{Internetquelle |url=https://robotframework.org/?tab=tools#resources |titel=Robot Framework Tools |sprache=en |abruf=2023-12-10}}</ref> von vielen [[Integrierte Entwicklungsumgebung|IDEs]] und [[Editor (Software)|Texteditoren]] unterstützt, um beispielsweise [[Syntaxhervorhebung]], [[Debugger|Debugging]], [[Refactoring]] und [[Autovervollständigung]] zu ermöglichen. |
|||
Robot Framework ist in [[Python (Programmiersprache)|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.<ref name=":0">{{Internetquelle |url=https://pypi.org/search/?q=robotframework-&o=&c=Framework+%3A%3A+Robot+Framework |titel=Robot Framework Libraries on PyPi.org |sprache=en |abruf=2023-12-10}}</ref> |
|||
Die Weiterentwicklung des Frameworks wird von der Robot Framework Foundation<ref name=":1">{{Internetquelle |url=https://robotframework.org/foundation/ |titel=Robot Framework Foundation |datum=2016-04-12 |sprache=en |abruf=2023-12-10}}</ref> finanziert, die auch Rechteinhaber der Wortmarke Robot Framework<ref>{{Internetquelle |url=https://euipo.europa.eu/eSearch/#details/trademarks/018168378 |titel=EU Wortmarke - Robot Framework |hrsg=European Union Intellectual Property Office |datum=2020-05-29 |sprache=en |abruf=2023-12-10}}</ref><ref>{{Internetquelle |url=https://tsdr.uspto.gov/#caseNumber=88932637&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch |titel=US Trademark - Robot Framework |hrsg=United States Patent and Trademark Office (USPTO) |datum=2021-06-15 |sprache=en |abruf=2023-12-10}}</ref> ist. |
|||
== Geschichte == |
== Geschichte == |
||
Die grundlegende Idee zum Robot Framework wurde 2006 in der [[Masterarbeit]]<ref>[http://eliga.fi/writings.html Laukkanen, Pekka: „Data-Driven and Keyword-Driven Test Automation Frameworks“, 2006]</ref> |
Die grundlegende Idee zum Robot Framework wurde 2004 entwickelt und 2006 in der [[Masterarbeit]] von Pekka Klärck (damals Pekka Laukkanen)<ref>[http://eliga.fi/writings.html Laukkanen, Pekka: „Data-Driven and Keyword-Driven Test Automation Frameworks“, 2006]</ref> 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.<ref name=":2">{{Internetquelle |autor=Eficode |url=https://www.eficode.com/blog/en/blog/robot-framework |titel=Robot Framework: Past, Present and Future |abruf=2023-12-10}}</ref> |
||
Die Version 2.0 wurde am 24. Juni 2008 als [[Open Source]] unter der [[Apache-Lizenz]] 2.0 veröffentlicht.<ref>{{Internetquelle |url=https://code.google.com/archive/p/robotframework/downloads |titel=Google Code Archive of Robot Framework |sprache=en |abruf=2023-12-10}}</ref><ref>{{Internetquelle |url=https://pypi.org/project/robotframework/#history |titel=Robot Framework Versionen auf PyPI.org |datum=2008-06-26 |sprache=en |abruf=2023-12-10}}</ref> |
|||
Das in der [[Python (Programmiersprache)|Programmiersprache Python]] entwickelte Framework hat eine aktive Community. Es unterliegt der [[Apache-Lizenz|Apache 2.0 Lizenz]] und kann auf der Homepage des Projekts heruntergeladen werden. |
|||
[[Datei:Downloads Robot-Framework.svg|alt=Robot Framework Downloads pro Monat seit 2016, starkes Wachstung seit 2018. Bis 2018 ca. 100.000 Downloads monatlich, Q3 2023 im ca. 1,8 Millionen Downloads pro Monat.|links|mini|Downloads pro Monat]] |
|||
Seit der Veröffentlichung wuchs die Anzahl der Nutzer außerhalb von Nokia hauptsächlich im finnischen Markt.<ref>{{Internetquelle |url=https://www.copado.com/resources/blog/what-is-robot-framework-the-story-behind-a-robotic-testing-ecosystem-crt |titel=What is Robot Framework? The Story Behind a Robotic Testing Ecosystem |abruf=2023-12-10}}</ref> 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'',<ref>{{Internetquelle |url=https://yhdistysrekisteri.prh.fi/notificationInformation?recordNumber=2015/511935Y |titel=Vereinsanmeldung Robot Framework ry |hrsg=Patentti- ja rekisterihallitus (Patent- und Registrierungsamt, Finnland) |datum=2015-07-17 |sprache=fi |abruf=2023-12-10}}</ref> 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''<ref>{{Internetquelle |autor= |url=https://robocon.io/ |titel=Robocon |werk= |hrsg=Robot Framework Foundation |datum= |sprache=en |abruf=2023-12-10}}</ref> 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.<ref>{{Internetquelle |url=https://www.youtube.com/c/RobotFrameworkChannel |titel=Robot Framework - YouTube |abruf=2023-12-10}}</ref> |
|||
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.<ref name=":1" /> |
|||
== Erweiterungen == |
|||
Für Robot stehen zahlreiche Bibliotheken zur Verfügung, beispielsweise die [[Selenium]] Library<ref name="Selenium">[https://github.com/robotframework/SeleniumLibrary Robot Selenium Library] (englisch)</ref> zum Testen von [[Webanwendungen]]. |
|||
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<ref>{{Internetquelle |url=https://pypi.org/security-key-giveaway/ |titel=PyPI 2FA Security Key Giveaway |sprache=de |abruf=2023-12-10}}</ref>. |
|||
Bibliotheken können besonders gut in [[Python (Programmiersprache)|Python]] implementiert werden. Auch andere Programmiersprachen sind möglich, wenn sie einen RemoteServer auf Basis des sogenannten RemoteInterface<ref>{{Internetquelle |autor= |url=https://github.com/robotframework/RemoteInterface |titel=RemoteInterface |werk=Github |hrsg= |datum= |abruf=2020-06-16 |sprache=en}}</ref> 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 (Programmiersprache)|Java]] implementiert sind. |
|||
== Syntax == |
|||
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<ref>{{Internetquelle |autor= |url=https://github.com/MarketSquare |titel=Robot Framework Community's shared code repositories |werk=Github |hrsg= |datum= |abruf=2020-06-16 |sprache=en}}</ref>. |
|||
Robot-Framework-Testspezifikation ist in Dateien und Ordnerstrukturen organisiert. Die standardmäßige Dateiendung ist <code>*.robot</code> 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 (Programmiersprache)|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 [[Senkrechter Strich|senkrechtem Strich]].<ref>{{Internetquelle |url=https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#test-data-syntax |titel=Robot Framework User Guide |abruf=2023-12-10}}</ref> Das bedeutet, dass Keyword-Aufrufe und deren Argumente nicht wie beispielsweise in Python durch Klammern und Kommata getrennt werden wie hier <code>login_user("User1", "123456")</code> sondern durch zwei oder mehr Leerzeichen wie hier <code>Login User User1 123456</code> . Somit sind einfache Leerzeichen valide Zeichen innerhalb eines Keywords oder Wertes. |
|||
Des Weiteren sind alle Argumente standardmäßig [[Zeichenkette]]n (Stings) und müssen nicht wie sonst üblich mit [[Anführungszeichen]] begrenzt werden. Durch diese Bevorzugung von Zeichenketten müssen im Gegensatz dazu [[Variable (Programmierung)|Variablen]] sonderbehandelt werden und mit Dollar und geschweiften Klammern geschrieben werden. (bsp. <code>${my_variable}</code>) |
|||
Der Code ist in Sektionen aufgeteilt, die mit <code>*** Sektionsname ***</code> definiert werden. Erlaubte Sektionen sind u. a. <code>Settings</code>, <code>Variables</code>, <code>Test Cases</code> und <code>Keywords</code>. |
|||
=== Beispiel (test.robot) === |
|||
In dem folgenden Beispiel sind zwei Testfälle zu sehen, die jeweils vier Keywords aufrufen, die aus der Resource <code>keywords.resource</code> importiert wurden. |
|||
Das Keyword <code>Login User</code> hat in diesem Beispiel zwei Argumente, ''<code>login</code>'' und ''<code>password</code>, welche mit der Variablen <code>${user}</code> und dem Wert <code>1234567890</code>'' besetzt werden. |
|||
<syntaxhighlight lang="robotframework" line="1"> |
|||
*** Settings *** |
|||
Documentation A test suite for valid login. |
|||
... |
|||
... Keywords are imported from the resource file |
|||
Resource keywords.resource |
|||
Default Tags positive |
|||
*** Variables *** |
|||
${user} max0815 |
|||
== Beispiele == |
|||
Folgender Testfall implementiert das obligatorische [[Hello world|Hello-World]]-Beispiel:<syntaxhighlight lang="robotframework"> |
|||
*** Test Cases *** |
*** Test Cases *** |
||
Login User with Password |
|||
Logge 'Hello World' |
|||
Connect To Server |
|||
Login User ${user} 1234567890 |
|||
</syntaxhighlight><code>Log</code> ist ein eingebautes Schlüsselwort, das den nachfolgenden Parameter als Log-Eintrag in den Test-Report schreibt. |
|||
Verify Valid Login Max Mustermann |
|||
[Teardown] Close Server Connection |
|||
Denied Login with Wrong Password |
|||
[Tags] negative |
|||
Connect To Server |
|||
Run Keyword And Expect Error *Invalid Password Login User ${user} 123 |
|||
Verify Unauthorised Access |
|||
[Teardown] Close Server Connection |
|||
</syntaxhighlight> |
|||
=== 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: <code>Login User</code> und <code>Verify Valid Login</code>. |
|||
Mit Hilfe der SeleniumLibrary<ref name="Selenium" /> werden genauso einfach Tests für [[Webanwendungen]] formuliert:<syntaxhighlight lang="robotframework"> |
|||
<syntaxhighlight lang="robotframework" line="1"> |
|||
*** Settings *** |
*** Settings *** |
||
Library |
Library MyServerAPI |
||
*** Test Cases **** |
|||
*** Keywords *** |
|||
Teste Google-Suche |
|||
Login User |
|||
Open Browser https://www.google.de ie |
|||
[Arguments] ${login} ${password} |
|||
Set Login Name ${login} |
|||
Set Password ${password} |
|||
Execute Login |
|||
Verify Valid Login |
|||
[Arguments] ${exp_full_name} |
|||
${version}= Get Server Version |
|||
Should Not Be Empty ${version} |
|||
${name}= Get User Name |
|||
Should Be Equal ${name} ${exp_full_name} |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
Der hier zu sehende Programmcode würde in Python, wie folgt aussehen: |
|||
<syntaxhighlight lang="python3" line="1"> |
|||
from MyServerAPI import * |
|||
def login_user(login, password): |
|||
set_login_name(login, password) |
|||
set_password(password) |
|||
execute_login() |
|||
def verify_valid_login(exp_full_name): |
|||
version = get_server_version() |
|||
assert len(version) != 0 |
|||
name = get_user_name() |
|||
assert name == exp_full_name |
|||
</syntaxhighlight> |
|||
=== 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. |
|||
<syntaxhighlight lang="robotframework" line="1"> |
|||
*** Settings *** |
|||
Documentation Feature: Login shall only be granted for authenticated users. |
|||
Resource keywords.resource |
|||
Test Teardown Close Server Connection |
|||
*** Test Cases *** |
|||
Login User with valid Password |
|||
Given the server is connected |
|||
When the user "max0815" with the password "1234567890" is logged in |
|||
Then the user "Max Mustermann" should be logged in |
|||
*** Keywords *** |
|||
the server is connected |
|||
Connect To Server |
|||
the user "${login}" with the password "${pwd}" is logged in |
|||
Login User ${login} ${pwd} |
|||
the user "${full_name}" should be logged in |
|||
Verify Valid Login ${full_name} |
|||
</syntaxhighlight> |
|||
=== Übersetzungen === |
|||
Aufgrund des hohen internationalen Interesses and vor allem der starken Verbreitung von Robot Framework auf dem deutschen Markt<ref>{{Internetquelle |url=https://www.youtube.com/watch?v=jlhgitypC5Q |titel=RoboCon 2022 - 1.01 Keynote: Robot Framework |sprache=de-DE |abruf=2023-12-13}}</ref> wurde mit Version 6.0<ref>{{Internetquelle |url=https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-6.0.rst |titel=robotframework/doc/releasenotes/rf-6.0.rst at master · robotframework/robotframework |sprache=en |abruf=2023-12-10}}</ref> Unterstützung für weitere Sprachen neben Englisch eingebaut. |
|||
Derzeit sind die folgenden Sprachen unterstützt:<ref>{{Internetquelle |autor=Pekka Klärck |url=https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-6.0.rst#localization |titel=Localization in RF 6.0 |datum=2023-01-08 |sprache=en |abruf=2023-12-10}}</ref> <blockquote>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)</blockquote>Das vorherige Gherkin-Beispiel würde dann so aussehen: |
|||
<syntaxhighlight lang="text"> |
|||
language:de |
|||
*** Einstellungen *** |
|||
Dokumentation Feature: Login soll nur für authentifizierte Benutzer erlaubt sein. |
|||
Ressource keywords.resource |
|||
Testnachbereitung Close Server Connection |
|||
*** Testfälle *** |
|||
Anmelden eines Benutzers mit validen Benutzerdaten |
|||
Angenommen der Server ist verbunden |
|||
Wenn der Benutzer "max0815" sich mit dem Passwort "1234567890" anmeldet |
|||
Dann soll der Benutzer "Max Mustermann" angemeldet sein |
|||
</syntaxhighlight> |
|||
== Erweiterungen == |
|||
Für Robot Framework stehen hunderte Bibliotheken zur Verfügung<ref name=":0" />, beispielsweise die [[Selenium]] basierte ''SeleniumLibrary'' oder die Playwright-basierte Browser-Bibliothek zum Testen von [[Webanwendungen]]. |
|||
Bibliotheken können nativ in [[Python (Programmiersprache)|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: |
|||
<syntaxhighlight lang="python"> |
|||
from TestObject import TestObject |
|||
from robot.api.logger import info, debug, trace, console |
|||
class MyServerAPI: |
|||
def __init__(self) -> None: |
|||
self.session = None |
|||
self.login = '' |
|||
self.password = '' |
|||
self.connection: TestObject = None |
|||
def connect(self, ip): |
|||
self.connection = TestObject(ip) |
|||
def disconnect(self): |
|||
self.connection = None |
|||
def set_login_name(self, login): |
|||
'''Sets the users login name and stores it for authentication.''' |
|||
self.login = login |
|||
info(f'User login set to: {login}') |
|||
def set_password(self, password): |
|||
'''Sets the users login name and stores it for authentication.''' |
|||
self.password = password |
|||
info(f'Password set.') |
|||
def execute_login(self): |
|||
'''Triggers the authentication process at the backend and stores the session token.''' |
|||
self.session = self.connection.authenticate(self.login, self.password) |
|||
if self.session: |
|||
info(f'User session successfully set.') |
|||
debug(f'Session token is: {self.session}') |
|||
self.login = self.password = '' |
|||
def get_username(self, user_id=None): |
|||
'''Returns the users full name of the given user_id or if None the own user data.''' |
|||
return self.connection.get_user_name(self.session, user_id) |
|||
def get_server_version(self): |
|||
return self.connection.get_version(self.session) |
|||
</syntaxhighlight> |
|||
Auch andere Programmiersprachen sind möglich, wenn sie einen RemoteServer auf Basis des sogenannten RemoteInterface<ref>{{Internetquelle |autor= |url=https://github.com/robotframework/RemoteInterface |titel=RemoteInterface |werk=Github |hrsg= |datum= |sprache=en |abruf=2020-06-16}}</ref> 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 (Programmiersprache)|Java]] implementiert sind. |
|||
Während der Robocon 2020 wurde die sogenannte MarketSquare-Organisation auf [[GitHub|Github]] gegründet, unter der Bibliotheken der Community gesammelt und gemeinsam weiter entwickelt werden können<ref>{{Internetquelle |autor= |url=https://github.com/MarketSquare |titel=Robot Framework Community's shared code repositories |werk=Github |hrsg= |datum= |sprache=en |abruf=2020-06-16}}</ref>. |
|||
== 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):<blockquote>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.</blockquote>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.<ref>{{Internetquelle |url=https://362604.seu2.cleverreach.com/m/14922691 |titel=Your Robot Framework News November 2023! |abruf=2023-12-10}}</ref> |
|||
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 Beispiel[[Cucumber (Software)|Cucumber]], 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<ref>{{Internetquelle |url=https://github.com/getgauge/gauge/issues/1732 |titel=Gauge and Taiko in 2021 · Issue #1732 · getgauge/gauge |sprache=en |abruf=2023-12-10}}</ref> und Cucumber.<ref>{{Internetquelle |autor=Matt Wynne |url=https://mattwynne.net/new-beginning |titel=Every ending is a new beginning |datum=2023-02-23 |sprache=en |abruf=2023-12-10}}</ref> |
|||
== RPA == |
== RPA == |
||
Zwar wurde Robot Framework ursprünglich dazu entwickelt, die Abläufe bei manuellem Testen zu automatisieren, jedoch eignet sich das Framework auch zu [[Robotic Process Automation|Robotergesteuerter Prozessautomatisierung]]. Dazu wurde der Sprachgebrauch mit der Version 3.1<ref>{{Internetquelle |autor=Pekka Klärck |url=https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-3.1.rst |titel=Robot Framework 3.1 - Release Notes |werk= |hrsg= |datum= |abruf=2020-06-16 |sprache=en}}</ref> um sogenannte ''Tasks'' erweitert. Technisch verhalten sich Tasks wie Testfälle:<syntaxhighlight lang="robotframework"> |
|||
Zwar wurde Robot Framework ursprünglich dazu entwickelt, die Abläufe bei manuellem Testen zu automatisieren, jedoch eignet sich das Framework auch zu [[Robotic Process Automation|Robotergesteuerter Prozessautomatisierung (RPA)]]. Dazu wurde der Sprachgebrauch mit der Version 3.1<ref>{{Internetquelle |autor=Pekka Klärck |url=https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-3.1.rst |titel=Robot Framework 3.1 - Release Notes |werk= |hrsg= |datum= |sprache=en |abruf=2020-06-16}}</ref> um sogenannte ''Tasks'' erweitert. Technisch verhalten sich Tasks wie Testfälle: |
|||
<syntaxhighlight lang="robotframework"> |
|||
*** Settings *** |
*** Settings *** |
||
Library SeleniumLibrary |
Library SeleniumLibrary |
||
Zeile 70: | Zeile 251: | ||
Click Button Google-Suche |
Click Button Google-Suche |
||
Capture Screenshot |
Capture Screenshot |
||
</syntaxhighlight> |
|||
</syntaxhighlight>Durch die nahe Verwandtschaft von RPA und Testautomatisierung gelingt es Teams, die bereits Robot Framework einsetzen, verhältnismäßig leicht RPA zu betreiben, in dem sie auf ihrer bestehenden Infrastruktur aufbauen.<ref>{{Internetquelle |autor=André Rist, Markus Stahl |url=http://www.sigs.de/media/GTM-1-2019-Digital.pdf#page=20 |titel=Qualität komplexer Systeme mit Open-Source-Tools verifizieren. |werk=German Testing Magazin |hrsg=SIGS DATACOM GmbH |datum=2019-05 |seiten=20–23 |abruf=2020-06-16 |format=PDF |sprache=de}}</ref> |
|||
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.<ref name=":3">{{Internetquelle |autor=André Rist, Markus Stahl |url=https://webreader.objektspektrum.de/de/profiles/7d30f3fc5f62-objektspektrum/editions/german-testing-magazin-01-2019/pages/page/11 |titel=Qualität komplexer Systeme mit Open-Source-Tools verifizieren. |werk=German Testing Magazin |hrsg=SIGS DATACOM GmbH |seiten=20–23 |datum=2019-05 |sprache=de |abruf=2023-12-10}}</ref> |
|||
== Literatur == |
|||
Robot Framework wird im Kontext des Keyword-Driven Testing in mehreren Veröffentlichungen erwähnt oder behandelt. |
|||
=== Buch Keyword-Driven Testing === |
|||
René Rohner und Matthias Daigl behandeln Robot Framework umfangreich<ref>{{Literatur |Autor=René Rohner, Matthias Daigl |Titel=Keyword-Driven Testing |Verlag=dpunkt.verlag |Datum= |ISBN=978-3-86490-570-4 |Seiten=145-206}}</ref> in dem Buch ''Keyword-Driven Testing / Grundlage für effiziente Testspezifikation und Automatisierung.''<ref>{{Literatur |Titel=René Rohner, Matthias Daigl |Verlag=dpunkt.verlag |Datum=2022 |ISBN=978-3-86490-570-4}}</ref> |
|||
Im ''Openbook zu Keyword-Driven Testing Frameworks''<ref>{{Internetquelle |autor=René Rohner, Matthias Daigl |url=https://www.assets.dpunkt.de/openbooks/OpenBook_Keyword-Driven-Testing-Frameworks.pdf |titel=Openbook zu Keyword-Driven Testing Frameworks |hrsg=dpunkt.verlag |format=PDF |sprache=de |abruf=2023-12-10}}</ref> werden die Kriterien der ISO 29119-5 auf Robot Framework und eine Auswahl von Erweiterungen angewendet. Robot Framework erfüllt dabei bis auf sehr wenige Ausnahmen, bsp. ''Manual Testing'', die Kriterien. |
|||
=== Wissenschaftliche Arbeiten === |
|||
Robot Framework wird mehrfach in wissenschaftlichen Arbeiten behandelt. |
|||
Beispiele: |
|||
* [https://www.researchgate.net/publication/372765701_Comparative_Study_of_Robot_Framework_and_Cucumber_as_BDD_Automated_Testing_Tools/fulltext/64c6fc06545060019e3edac8/Comparative-Study-of-Robot-Framework-and-Cucumber-as-BDD-Automated-Testing-Tools.pdf Comparative Study of Robot Framework and Cucumber as BDD Automated Testing Tools] |
|||
* [https://www.ijsdr.org/papers/IJSDR1811080.pdf Robot Framework, A boon for Automation] |
|||
* [https://ieeexplore.ieee.org/abstract/document/9559826 Low Cost Automated OS Security Audit Platform Using Robot Framework] |
|||
* [https://ntrs.nasa.gov/citations/20160006113 Spaceport Command and Control System] |
|||
* [https://www.theseus.fi/bitstream/handle/10024/752521/Thesis_Alatalo_Tatu.pdf?sequence=2 Static code analysis in Robot Framework] |
|||
=== Blogs und andere Beiträge === |
|||
* André Rist, Markus Stahl (Deutsche Post Adress): ''Qualität komplexer Systeme mit Open-Source-Tools verifizieren.''<ref name=":3" /> |
|||
* Dmytro Borysov: ''Robot Framework vs Pytest.''<ref>{{Internetquelle |autor=Dmytro Borysov |url=https://www.tesena.com/en/news/robot-framework-vs-pytest |titel=Robot Framework vs Pytest |hrsg=tesena s.r.o. |datum=2022-11-29 |sprache=en |abruf=2023-12-14}}</ref> |
|||
* Lisa Crispin: ''Team Commitment to Quality''<ref>{{Internetquelle |autor=Lisa Crispin |url=https://lisacrispin.com/2010/03/29/team-commitment-to-quality/ |titel=Team Commitment to Quality |datum=2010-03-29 |sprache=en-US |abruf=2023-12-10}}</ref> |
|||
* [[Heise online|Heise Online]]: ''Automatisierte Tests mit dem Robot-Framework''<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/hintergrund/Automatisierte-Tests-mit-dem-Robot-Framework-1834917.html |titel=Automatisierte Tests mit dem Robot-Framework |datum=2013-04-05 |sprache=de |abruf=2023-12-10}}</ref> |
|||
* Christian Müller (Noser Engineering): ''Einfache Testautomatisierung mit Robot Framework''<ref>{{Internetquelle |autor=Christian Mueller |url=https://blog.noser.com/einfache-testautomatisierung-mit-robot-framework/ |titel=Einfache Testautomatisierung mit Robot Framework |werk=Noser Blog |datum=2018-06-26 |sprache=de-DE |abruf=2023-12-10}}</ref> |
|||
* Joe Colantonio: ''Robot Framework Creator Pekka Klärck [PODCAST]''<ref>{{Internetquelle |autor=joecolantonio |url=https://testguild.com/episode-91-the-robot-framework/ |titel=Robot Framework Creator Pekka Klärck |datum=2016-02-25 |sprache=en-US |abruf=2023-12-10}}</ref> |
|||
* Paul Laihonen (Eficode): ROBOT FRAMEWORK: PAST, PRESENT AND FUTURE<ref name=":2" /> |
|||
* Katri Ordning (KONE): ROBOT FRAMEWORK AT KONE<ref>{{Internetquelle |url=https://www.kone.com/en/careers/professionals-and-technical-experts/blogs/robot-framework-at-kone.aspx |titel=Robot Framework At Kone |sprache=en |abruf=2023-12-10}}</ref> |
|||
== Weblinks == |
== Weblinks == |
||
* [https://robotframework.org robotframework.org] |
|||
* [http://code.google.com/p/robotframework/w/list Bibliotheken] |
|||
* [https://github.com/robotframework/robotframework Projekt auf GitHub] |
|||
== Einzelnachweise == |
== Einzelnachweise == |
Aktuelle Version vom 25. April 2025, 16:50 Uhr
Robot Framework
| |
---|---|
![]() | |
Basisdaten
| |
Hauptentwickler | Pekka Klärck, Janne Harkonen et al. |
Erscheinungsjahr | 24. Juni 2008[1] |
Aktuelle Version | 7.2.2[2] (7. Februar 2025) |
Betriebssystem | Plattformübergreifend |
Programmiersprache | Python |
Kategorie | Test-Framework |
Lizenz | Apache-Lizenz 2.0 |
robotframework.org |
Robot Framework ist ein generisches Open-Source-Automatisierungs-Framework, das sowohl für Testautomatisierung als auch für Robotic Process Automation genutzt werden kann[3].
Robot Framework ist eines der bekanntesten Frameworks[4] 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[5] 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.[6]
Die Weiterentwicklung des Frameworks wird von der Robot Framework Foundation[7] finanziert, die auch Rechteinhaber der Wortmarke Robot Framework[8][9] ist.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Die grundlegende Idee zum Robot Framework wurde 2004 entwickelt und 2006 in der Masterarbeit von Pekka Klärck (damals Pekka Laukkanen)[10] 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.[11]
Die Version 2.0 wurde am 24. Juni 2008 als Open Source unter der Apache-Lizenz 2.0 veröffentlicht.[12][13]

Seit der Veröffentlichung wuchs die Anzahl der Nutzer außerhalb von Nokia hauptsächlich im finnischen Markt.[14] 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,[15] 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[16] 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.[17]
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.[7]
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[18].
Syntax
[Bearbeiten | Quelltext bearbeiten]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.[19] 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)
[Bearbeiten | Quelltext bearbeiten]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.
*** Settings ***
Documentation A test suite for valid login.
...
... Keywords are imported from the resource file
Resource keywords.resource
Default Tags positive
*** Variables ***
${user} max0815
*** Test Cases ***
Login User with Password
Connect To Server
Login User ${user} 1234567890
Verify Valid Login Max Mustermann
[Teardown] Close Server Connection
Denied Login with Wrong Password
[Tags] negative
Connect To Server
Run Keyword And Expect Error *Invalid Password Login User ${user} 123
Verify Unauthorised Access
[Teardown] Close Server Connection
Keyword Beispiel (keywords.resource)
[Bearbeiten | Quelltext bearbeiten]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
.
*** Settings ***
Library MyServerAPI
*** Keywords ***
Login User
[Arguments] ${login} ${password}
Set Login Name ${login}
Set Password ${password}
Execute Login
Verify Valid Login
[Arguments] ${exp_full_name}
${version}= Get Server Version
Should Not Be Empty ${version}
${name}= Get User Name
Should Be Equal ${name} ${exp_full_name}
Der hier zu sehende Programmcode würde in Python, wie folgt aussehen:
from MyServerAPI import *
def login_user(login, password):
set_login_name(login, password)
set_password(password)
execute_login()
def verify_valid_login(exp_full_name):
version = get_server_version()
assert len(version) != 0
name = get_user_name()
assert name == exp_full_name
Gherkin Notation (Behavior Driven)
[Bearbeiten | Quelltext bearbeiten]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.
*** Settings ***
Documentation Feature: Login shall only be granted for authenticated users.
Resource keywords.resource
Test Teardown Close Server Connection
*** Test Cases ***
Login User with valid Password
Given the server is connected
When the user "max0815" with the password "1234567890" is logged in
Then the user "Max Mustermann" should be logged in
*** Keywords ***
the server is connected
Connect To Server
the user "${login}" with the password "${pwd}" is logged in
Login User ${login} ${pwd}
the user "${full_name}" should be logged in
Verify Valid Login ${full_name}
Übersetzungen
[Bearbeiten | Quelltext bearbeiten]Aufgrund des hohen internationalen Interesses and vor allem der starken Verbreitung von Robot Framework auf dem deutschen Markt[20] wurde mit Version 6.0[21] Unterstützung für weitere Sprachen neben Englisch eingebaut.
Derzeit sind die folgenden Sprachen unterstützt:[22]
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:
language:de
*** Einstellungen ***
Dokumentation Feature: Login soll nur für authentifizierte Benutzer erlaubt sein.
Ressource keywords.resource
Testnachbereitung Close Server Connection
*** Testfälle ***
Anmelden eines Benutzers mit validen Benutzerdaten
Angenommen der Server ist verbunden
Wenn der Benutzer "max0815" sich mit dem Passwort "1234567890" anmeldet
Dann soll der Benutzer "Max Mustermann" angemeldet sein
Erweiterungen
[Bearbeiten | Quelltext bearbeiten]Für Robot Framework stehen hunderte Bibliotheken zur Verfügung[6], 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:
from TestObject import TestObject
from robot.api.logger import info, debug, trace, console
class MyServerAPI:
def __init__(self) -> None:
self.session = None
self.login = ''
self.password = ''
self.connection: TestObject = None
def connect(self, ip):
self.connection = TestObject(ip)
def disconnect(self):
self.connection = None
def set_login_name(self, login):
'''Sets the users login name and stores it for authentication.'''
self.login = login
info(f'User login set to: {login}')
def set_password(self, password):
'''Sets the users login name and stores it for authentication.'''
self.password = password
info(f'Password set.')
def execute_login(self):
'''Triggers the authentication process at the backend and stores the session token.'''
self.session = self.connection.authenticate(self.login, self.password)
if self.session:
info(f'User session successfully set.')
debug(f'Session token is: {self.session}')
self.login = self.password = ''
def get_username(self, user_id=None):
'''Returns the users full name of the given user_id or if None the own user data.'''
return self.connection.get_user_name(self.session, user_id)
def get_server_version(self):
return self.connection.get_version(self.session)
Auch andere Programmiersprachen sind möglich, wenn sie einen RemoteServer auf Basis des sogenannten RemoteInterface[23] 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[24].
Finanzierung und Organisation
[Bearbeiten | Quelltext bearbeiten]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.[25]
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[26] und Cucumber.[27]
RPA
[Bearbeiten | Quelltext bearbeiten]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[28] um sogenannte Tasks erweitert. Technisch verhalten sich Tasks wie Testfälle:
*** Settings ***
Library SeleniumLibrary
Task Teardown Close Browser
*** Tasks ***
Suche 'Robot Framework' mit Google
Open Browser https://www.google.de headlesschrome
Input Text lst-ib Robot Framework
Click Button Google-Suche
Capture Screenshot
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.[29]
Literatur
[Bearbeiten | Quelltext bearbeiten]Robot Framework wird im Kontext des Keyword-Driven Testing in mehreren Veröffentlichungen erwähnt oder behandelt.
Buch Keyword-Driven Testing
[Bearbeiten | Quelltext bearbeiten]René Rohner und Matthias Daigl behandeln Robot Framework umfangreich[30] in dem Buch Keyword-Driven Testing / Grundlage für effiziente Testspezifikation und Automatisierung.[31]
Im Openbook zu Keyword-Driven Testing Frameworks[32] werden die Kriterien der ISO 29119-5 auf Robot Framework und eine Auswahl von Erweiterungen angewendet. Robot Framework erfüllt dabei bis auf sehr wenige Ausnahmen, bsp. Manual Testing, die Kriterien.
Wissenschaftliche Arbeiten
[Bearbeiten | Quelltext bearbeiten]Robot Framework wird mehrfach in wissenschaftlichen Arbeiten behandelt.
Beispiele:
- Comparative Study of Robot Framework and Cucumber as BDD Automated Testing Tools
- Robot Framework, A boon for Automation
- Low Cost Automated OS Security Audit Platform Using Robot Framework
- Spaceport Command and Control System
- Static code analysis in Robot Framework
Blogs und andere Beiträge
[Bearbeiten | Quelltext bearbeiten]- André Rist, Markus Stahl (Deutsche Post Adress): Qualität komplexer Systeme mit Open-Source-Tools verifizieren.[29]
- Dmytro Borysov: Robot Framework vs Pytest.[33]
- Lisa Crispin: Team Commitment to Quality[34]
- Heise Online: Automatisierte Tests mit dem Robot-Framework[35]
- Christian Müller (Noser Engineering): Einfache Testautomatisierung mit Robot Framework[36]
- Joe Colantonio: Robot Framework Creator Pekka Klärck [PODCAST][37]
- Paul Laihonen (Eficode): ROBOT FRAMEWORK: PAST, PRESENT AND FUTURE[11]
- Katri Ordning (KONE): ROBOT FRAMEWORK AT KONE[38]
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ code.google.com. (abgerufen am 3. Dezember 2013).
- ↑ Release 7.2.2. 7. Februar 2025 (abgerufen am 28. Februar 2025).
- ↑ Robot Framework Homepage (englisch)
- ↑ heise online: Keyword-Driven Testing jenseits des Hypes: Eine kritische Bestandsaufnahme. 18. September 2015, abgerufen am 10. Dezember 2023.
- ↑ Robot Framework Tools. Abgerufen am 10. Dezember 2023 (englisch).
- ↑ a b Robot Framework Libraries on PyPi.org. Abgerufen am 10. Dezember 2023 (englisch).
- ↑ a b Robot Framework Foundation. 12. April 2016, abgerufen am 10. Dezember 2023 (englisch).
- ↑ EU Wortmarke - Robot Framework. European Union Intellectual Property Office, 29. Mai 2020, abgerufen am 10. Dezember 2023 (englisch).
- ↑ US Trademark - Robot Framework. United States Patent and Trademark Office (USPTO), 15. Juni 2021, abgerufen am 10. Dezember 2023 (englisch).
- ↑ Laukkanen, Pekka: „Data-Driven and Keyword-Driven Test Automation Frameworks“, 2006
- ↑ a b Eficode: Robot Framework: Past, Present and Future. Abgerufen am 10. Dezember 2023.
- ↑ Google Code Archive of Robot Framework. Abgerufen am 10. Dezember 2023 (englisch).
- ↑ Robot Framework Versionen auf PyPI.org. 26. Juni 2008, abgerufen am 10. Dezember 2023 (englisch).
- ↑ What is Robot Framework? The Story Behind a Robotic Testing Ecosystem. Abgerufen am 10. Dezember 2023.
- ↑ Vereinsanmeldung Robot Framework ry. Patentti- ja rekisterihallitus (Patent- und Registrierungsamt, Finnland), 17. Juli 2015, abgerufen am 10. Dezember 2023 (finnisch).
- ↑ Robocon. Robot Framework Foundation, abgerufen am 10. Dezember 2023 (englisch).
- ↑ Robot Framework - YouTube. Abgerufen am 10. Dezember 2023.
- ↑ PyPI 2FA Security Key Giveaway. Abgerufen am 10. Dezember 2023.
- ↑ Robot Framework User Guide. Abgerufen am 10. Dezember 2023.
- ↑ RoboCon 2022 - 1.01 Keynote: Robot Framework. Abgerufen am 13. Dezember 2023 (deutsch).
- ↑ robotframework/doc/releasenotes/rf-6.0.rst at master · robotframework/robotframework. Abgerufen am 10. Dezember 2023 (englisch).
- ↑ Pekka Klärck: Localization in RF 6.0. 8. Januar 2023, abgerufen am 10. Dezember 2023 (englisch).
- ↑ RemoteInterface. In: Github. Abgerufen am 16. Juni 2020 (englisch).
- ↑ Robot Framework Community's shared code repositories. In: Github. Abgerufen am 16. Juni 2020 (englisch).
- ↑ Your Robot Framework News November 2023! Abgerufen am 10. Dezember 2023.
- ↑ Gauge and Taiko in 2021 · Issue #1732 · getgauge/gauge. Abgerufen am 10. Dezember 2023 (englisch).
- ↑ Matt Wynne: Every ending is a new beginning. 23. Februar 2023, abgerufen am 10. Dezember 2023 (englisch).
- ↑ Pekka Klärck: Robot Framework 3.1 - Release Notes. Abgerufen am 16. Juni 2020 (englisch).
- ↑ a b André Rist, Markus Stahl: Qualität komplexer Systeme mit Open-Source-Tools verifizieren. In: German Testing Magazin. SIGS DATACOM GmbH, Mai 2019, S. 20–23, abgerufen am 10. Dezember 2023.
- ↑ René Rohner, Matthias Daigl: Keyword-Driven Testing. dpunkt.verlag, ISBN 978-3-86490-570-4, S. 145–206.
- ↑ René Rohner, Matthias Daigl. dpunkt.verlag, 2022, ISBN 978-3-86490-570-4.
- ↑ René Rohner, Matthias Daigl: Openbook zu Keyword-Driven Testing Frameworks. (PDF) dpunkt.verlag, abgerufen am 10. Dezember 2023.
- ↑ Dmytro Borysov: Robot Framework vs Pytest. tesena s.r.o., 29. November 2022, abgerufen am 14. Dezember 2023 (englisch).
- ↑ Lisa Crispin: Team Commitment to Quality. 29. März 2010, abgerufen am 10. Dezember 2023 (amerikanisches Englisch).
- ↑ heise online: Automatisierte Tests mit dem Robot-Framework. 5. April 2013, abgerufen am 10. Dezember 2023.
- ↑ Christian Mueller: Einfache Testautomatisierung mit Robot Framework. In: Noser Blog. 26. Juni 2018, abgerufen am 10. Dezember 2023 (deutsch).
- ↑ joecolantonio: Robot Framework Creator Pekka Klärck. 25. Februar 2016, abgerufen am 10. Dezember 2023 (amerikanisches Englisch).
- ↑ Robot Framework At Kone. Abgerufen am 10. Dezember 2023 (englisch).