Im CodeCamp:N beschäftigen wir uns mit dem Thema Testautomatisierung. In den letzten Wochen haben wir im Team an einer Idee gearbeitet, um die Automatisierung von Oberflächentests in Zukunft zu vereinfachen. Im Folgenden berichte ich euch von unserer Idee und unseren Erfahrungen.

Testautomatisierung

Bugs in der Software – Wer kennt das nicht? Testen soll Fehler frühzeitig erkennen, Folgefehler vermeiden und ist ein wichtiges Qualitätskriterium in der Softwareentwicklung. Eine frühe Integration in den Entwicklungsprozess zahlt sich dabei meistens aus und sowieso kann es niemals genug Tests geben. Insbesondere im Bereich Versicherung und Finanzen sind eine hohe Testabdeckung und -qualität Voraussetzung für eine Produktabnahme, da Vertragsfehler schnell hohe Kosten verursachen oder zu Reputationsschäden führen können.

Die Automatisierung von Tests soll den manuellen Testaufwand auf ein Minimum reduzieren und Fehler noch schneller aufdecken. Dennoch stellt das Entwickeln von automatisierten Tests dabei einen nicht unerheblichen Mehraufwand da, der gerne vermieden werden würde.

Unsere Idee

Unsere Idee ist es genau hier anzusetzen: Wir möchten unter anderem den Aufwand für die Entwickler reduzieren, indem wir automatisierte Oberflächentests direkt aus den fachlichen Anforderungen generieren. In Kombination mit einem unternehmensweiten Testdatenmanagement soll dabei die Testentwicklung schneller und standardisierter ablaufen. Ebenfalls wollen wir mit diesem Ansatz eine schnellere Integration von Tests in den allgemeinen Softwareentwicklungsprozess erreichen und unternehmensweit die Qualität der Tests als auch der Testdaten erhöhen.

Ziel ist es, dass die Fachabteilungen den Ablauf von fachlichen Prozessen in der Software als Workflow modellieren. Fachliche Prozesse können dabei ein Registrierungsprozess oder ein Antragsprozess, d.h. von der Dateneingabe bis zum Vertragsabschluss, sein. Die Modellierung soll dabei ähnlich der BPMN-Notation (Business Process Model and Notation) erfolgen.

Im folgenden Bild wird der Workflow eines Registrierungsprozess dargestellt.

Workflow eines Registrierungsprozess

Jeder Schritt besteht aus einem Namen und einer Aktion. Die einzelnen Schritte können in Zukunft durch weitere Parameter wie zum Beispiel Default-Werte oder „Optional“, ergänzt werden. Durch Verzweigungen oder Bedingungen können deutlich komplexere Workflows abgebildet werden. Mit der BPMN-ähnliche Modellierung wollen wir erreichen, dass Fachabteilungen mit einer ihr meist bekannten Sprache arbeiten und die Hürde für den Einstieg in die Testautomatisierung senken. Diese dann entstandenen Workflows können auch als Basis für die Kommunikation zwischen der Softwareentwicklung, dem Fachbereich und dem Testmanagement dienen, da die fachliche Logik teilweise formalisiert wird.

Bei der Entwicklung der Weboberfläche werden mögliche Interaktionselemente mit einer ID oder anderem Attributs-Wert eindeutig gekennzeichnet. Elemente können dabei Eingabefelder, Buttons, Fehlermeldungen sein. Diese müssen dann lediglich den einzelnen Schritten der Workflows zugeordnet werden.

Registrierungsprozess

Testszenario

Ist ein Workflow erstellt und sind seine technischen Felder definiert, können Daten hinterlegt werden. Dazu erstellt die Fachabteilung oder das Testmanagement passende Testdaten oder wählt aus bereits bestehenden Datenpools Daten aus. Dadurch müssen Testdaten für bestimmte, häufiger vorkommende Anwendungsfälle nicht bei jedem Projekt neu erstellt oder in andere Formate konvertiert werden. Insbesondere Adressen, Namenslisten oder andere personenbezogene Daten werden häufig für einen Vertragsabschluss benötigt. Durch die Auswahl von Testdaten entsteht dann ein Testszenario mit verschiedenen Testfällen.

Die Ausführung des Testszenarios erfolgt dann in einem Browser, wobei für jeden Testfall eine neue Instanz erstellt wird. Technisch erfolgt dies über Kubernetes Cluster mit Selenium-Pods, welche dynamisch erstellt oder abgeschaltet werden können.

Nach Ausführung des Testszenarios erhalten die Fachabteilungen, Testmanager oder Stakeholder einen übersichtlichen Report über die ausgeführten Testfälle. Dies soll gleichzeitig als Dokumentation und Qualitätsnachweis für das Projektmanagement dienen. Im Fehlerfall können Screenshots des Browsers mitgegeben werden.

In unserem Proof of Concept haben wir angefangen diese Idee technisch umzusetzen. Nach zwei Wochen konnten wir einen einfachen ersten Testfall modellieren und auf einem statischen Worker ausführen.

Dadurch konnten wir zeigen, dass die Idee funktioniert und das mögliche Potential aufzeigen.

Falls das Thema bei euch auf Interesse gestoßen ist, freue ich mich über einen Austausch zu diesem Thema: samuel.stoehr@codecamp-n.com