Testautomatisierungs-Evaluation für Webformular eines Förderprogramms der öffentlichen Verwaltung
Produkt
Unser Testobjekt ist ein öffentlich zugängliches Webformular. Dieses ermöglicht einer autorisierten Firma, einen Antrag auf Förderung zu stellen.
Unsere Aufgabe
Um den Kunden die Möglichkeit zu geben, sich nicht von vorneherein festlegen zu müssen, welche Testautomatisierungs-Software die richtige Lösung ist, bekam er von Qytera die Option, einen repräsentativen Testfall mit mehreren Tools umzusetzen. Der Vorteil hiervon ist, die Stärken und Schwächen der unterschiedlichen Ansätze herauszuarbeiten und zusammen mit dem Kunden zu besprechen.
Zwecks Festlegung eines sinnvollen und überschaubaren Rahmens für einen ersten Testfall, haben wir uns mit dem Kunden auf 3 Werkzeuge geeinigt:
Cypress auf Basis von TypeScript
Selenium Webdriver auf Basis von JavaScript
Codeception auf Basis von PHP
Wieso haben wir diese Technologien ausgewählt? Die Anwendung wurde in PHP und TypeScript geschrieben. Es war uns wichtig, die Nähe zur Programmierung beizubehalten.
Der Toolvergleich
Wir hatten ehrlicherweise anfänglich einen Favoriten mit Cypress, mit dem wir schon erfolgreich Testautomatisierung in der Vergangenheit umgesetzt hatten. In diesem Fall zeigte sich jedoch gleich im Szenario-Anfang beim Login eine Schwäche von Cypress. Das Login-Fenster wurde nach dem Klick auf Anmelden in einem eigenen Tab geöffnet.
Cypress’ interne Architektur ließ es aber nicht zu, diesen eigenständigen Tab zu erreichen und die Aktionen dazu zu automatisieren. Zwar konnten wir einen Workaround schreiben, aber in der Gesamtlösung war dies negativ beurteilt worden.
Bei der zweiten Toolwahl mit Selenium sahen wir die Nähe zur Programmierung und der Nutzung von einigen Zusatzbibliotheken, wie z.B. für das Reporting, als kritisch an. Somit fiel dieses aus dem Rennen.
Letztendlich konnten wir mit dem auf PHP basierenden Testautomatisierungswerkzeug Codeception überzeugen. Technisch ausgereift, im Funktionsumfang alle benötigten Bestandteile enthalten, konnten wir alle wichtigen Kriterien gelöst bekommen. Somit führten wir diese Lösung im Projektverlauf erfolgreich fort.
Die Qytera-Lösung
Typisch im dargestellten Szenario waren viele Formularseiten, die gewisse Eingabefelder und Drop-Down-Boxen umfassten. Das Aufrufen der Oberflächenelemente konnte überwiegend über HTML-Attribute wie ID oder Klassennamen erreicht werden. Nur bei den Drop-Down-Boxen Listeneinträgen war dies durch dynamische Inhalte nicht einfach möglich. Aber auch hier fanden wir einen programmatischen Ansatz, der stabil und performant zu den richtigen Einträgen springen konnte.
Eine weitere Herausforderung war, dass je Login nur einmalig ein Formular vollständig ausgefüllt werden konnte. Wurde das Formular abgesendet, dann konnte für dieses Login der Testfall nicht mehr wiederholt werden. Hierzu organisierten wir eine große Zahl an Testusern und implementierten einen Mechanismus, der den “verbraucht” dokumentieren konnte und beim nächsten Start mit einem anderen Login den Test ausführte. Neben den Formulardaten gab es noch weitere administrative Prozesse zu automatisieren, die den Workflow zur Auftragsfreigabe darstellen. Nach wenigen Wochen konnten wir die vereinbarten Szenarios komplett umsetzen und zur Ausführung bringen.
Ergebnis
Wir erreichten durch die implementierten Szenarios ein regressives Testset, das nun vom Kunden selbstständig wiederholt durchgeführt werden kann und somit dem Projekt die Sicherheit gibt, dass sich mit Auslieferung eines Softwareupdates keine Fehler einschleichen. Die am Ende durchgeführten Schulungen und Einweisungen sowie die bereitgestellte Dokumentation ermöglichen es bis heute dem Kunden, selbstständig die Testautomatisierungslösung weiterzuentwickeln und auszuführen.
Fazit
Durch die Evaluation der unterschiedlichen Softwareprodukte konnten wir feststellen, welche Lösung die geeignetste für die eingesetzte Technologie ist. Der anfängliche Invest in Zeit und Kosten lohnte sich: Unser Kunde erhielt von Qytera eine gut wartbare Lösung, die allen Best-Practices, wie Page-Object Design Pattern entspricht. Er konnte durch die Übergabe in die Lage versetzt werden, die Lösung selbstständig weiterzuentwickeln. Somit erreichte er in kurzer Zeit den Einstieg in die Testautomatisierung und erhielt somit die Sicherheit, dass jede Version der entwickelten Software den Qualitätsansprüchen entspricht.