5. April 2024 von Tobias Kirsch
Über das Testing in die Entwicklung - ein methodischer Weg
In meiner beruflichen und vor allem privaten Laufbahn durfte ich schon einige junge Menschen an verschiedene Themen heranführen. Vor allem bei Ausbildungen im Bereich der Sportpädagogik gab es eine Sache, die immer wieder wiederholt wurde: Der methodische Weg
- vom Bekannten zum Unbekannten,
- vom Einfachen zum Komplexen
- usw.
Nach langjähriger Tätigkeit in der IT, hauptsächlich als Entwickler, hatte ich die Möglichkeit, bei meinem Arbeitgeber vor adesso eine kleine Testabteilung von Grund auf aufzubauen. Das war eine sehr spannende und lehrreiche Zeit. Von Anfang an wollte ich verschiedene Kenntnisse aus privaten Aus- und Weiterbildungen sowie ehrenamtlichen Tätigkeiten einfließen lassen. Als ich meine Tätigkeit bei adesso aufnahm, konnte ich nahezu nahtlos an meine vorherige Tätigkeit anknüpfen. Fachlichkeit, Tooling und Komplexität waren sehr ähnlich.
Wie war der ursprüngliche Ausbildungsplan?
Generell gab es einen Plan für diejenigen, die sich auf die Technik konzentrierten und einen für diejenigen, die sich auf das Testmanagement konzentrierten. Gerade bei den Grundlagen gab es eine solide gemeinsame Basis. Ähnlich verhält es sich mit dem Ausbildungsprogramm des ISTQB, der Zertifizierungsstelle im Bereich Testen. Hier muss jeder die Basisqualifikation ISTQB Certified Tester Foundation Level absolvieren, bevor er sich auf Technik, Management oder Teamlead spezialisieren kann. Diese Basisqualifizierung sorgt für ein gemeinsames Grundverständnis von Technik und Testmanagement. Weiterführende Qualifikationen im technischen Bereich sind beispielsweise die oder der Test Automation Engineer oder der Technical Test Analyst. Die Stufen im Überblick:
Stufe 0 - Produktvorstellung
- Vorstellung der App
Stufe 1 - Basistools
- Einführung in Confluence
- Einführung in Jira in einem Kanban Projekt
- Einführung in XRay Testmanagement für Jira
Stufe 2 - Methodenverständnis
- Agile Werte und Prinzipien
- Herausforderungen in der Praxis
- Agile Methoden
Stufe 3 - Verständnis für Automatisierung
- CI/CD Theorie und Praxis im aktuellen Projekt
Stufe 4 - Testing in der Praxis
- Ad-hoc Testdurchführung mit XRay for Jira
- Review von Testspezifikationen und manuellen Testskripten
- Spezifikation von Tests (funktionale und nicht-funktionale Anforderungen, Verwendung von Datensätzen und Parametern)
- Gruppierung von Tests und Erstellung von Testplänen
- Auswertung der Tests
Stufe 5 - Start eines neuen Projekts: Webanwendung
- Konzeption einer Katalogdateiverwaltung von Grund auf
- Vorbereitung der Übergabe der Aktivitäten an adesso
Mein damaliger Vorgesetzter hat uns von Anfang an sehr unterstützt und uns freie Hand gelassen. Innerhalb von drei Monaten sollte so viel Wissen wie möglich an die Testabteilung weitergegeben werden, die zu diesem Zeitpunkt aus zwei Werkstudenten und zwei fest angestellten Testern bestand. Die festangestellten Tester hatten zusätzlich noch andere Aufgaben, wie zum Beispiel den First Level Support, was bei der Planung berücksichtigt werden musste. Nach einer Vorstellung von SCRUM einigte sich das Team darauf, das Projekt so weit wie möglich nach SCRUM umzusetzen.
Stufe 5 – Erste Schritte zur Webanwendung
- Gemeinsame Erarbeitung einer Produktvision
- Oberflächliche Ermittlung der benötigten Kataloge
- Vertiefung des Verständnisses für SCRUM
Ab Level 6 wird zwischen Testmanagerinnen beziehungsweise -mangern sowie Testautomatisiererinnen beziehungsweise -automatisierern unterschieden. Ich beschreibe hier nur den Weg der Testautomatisiererinnen beziehungsweise -automatisierer.
Stufe 6 – Erster Sprint
- Festlegung der Basisarchitektur (Angular, Express, Docker, Artifactory)
- Erstellung eines ersten GUI-Prototyps für die ersten drei Kataloge
Stufe 7 – Erste Schritte in der Testautomatisierung
- Einführung in Katalon Studio und Cypress
- Aufbau einer rudimentären CI/CD-Pipeline (Gitlab, Cypress)
- Einführung in Best Practices bei Cypress (DRY, Page Object Model usw.)
- API-Tests mit Postman und Automatisierung mit Newman
Stufe 8 – Einführung in die Entwicklung
- Einführung in Git
- Beginn mit kleinen Aufgaben zur Barrierefreiheit (WAVE, axe)
Weshalb diese Reihenfolge?
Diese Reihenfolge ist sicherlich kein Allheilmittel für jede Einsteigerin oder jeden Einsteiger, da die Vorkenntnisse, Interessen und Lernstile unterschiedlich sind. Außerdem konnte aus verschiedenen Gründen kein echtes SCRUM verwendet werden. Dennoch wurde Wert darauf gelegt, so viel wie möglich von diesem Framework zu vermitteln. Der methodische Ansatz wurde eingehalten, indem vom manuellen Testen über das automatisierte Testen zur Entwicklung übergegangen wurde. Beim manuellen Testen lag der Fokus auf dem Produkt und dem Team, während beim automatisierten Testen die Effizienz der Automatisierung hinzukam. Der Übergang zur Entwicklung profitierte von einem grundlegenden Qualitätsverständnis, von dem die Entwicklung durch erste Umsetzungen nach DRY (dont repeat yourself) in der Testautomatisierung profitieren konnte. Der Einstieg in das Testen kann leichter sein als in die Entwicklung, daher wurde zunächst das Verständnis für die Teamprozesse im Testen gefestigt, bevor der Schritt in die Entwicklung erfolgte. Durch den Schritt von manuell zu automatisiert konnte ein gewisser "Wow-Effekt" erzeugt werden und somit die Begeisterung für die Technik gesteigert werden.
Evaluierung bei adesso
Als ich bei adesso anfing, wurde mir zunächst ein detailliertes Testkonzept für das Projekt vorgestellt. In Kombination mit dem Architekturkonzept fühlte ich mich wie auf Wolke sieben. Es gab bereits einen hohen Automatisierungsgrad und einige für mich neue Technologien. Der große Schub kam von der Tester-Community, die jederzeit erreichbar und sehr hilfsbereit war. Dank einer SonarQube-Implementierung in der CI/CD-Pipeline wird ein gewisses Mindestmaß an Qualität eingehalten. Dazu gehört auch die Code-Abdeckung.
Im Dezember letzten Jahres fing einer der Werkstudenten an, den ich vorher bei meinem alten Arbeitgeber betreut hatte. Da er die meisten Tools bereits kannte und es Parallelen zum vorherigen Projekt gab, konnte ich ihm tiefergehendes Wissen vermitteln. Er begann wieder mit manuellen Tests und unterstützte bereits im ersten Monat bei der Testautomatisierung. Hier konnte er auch sein Wissen über Accessibility-Tests erweitern. Außerdem fand er sich sehr schnell in die Implementierung von cypress-axe ein. Cypress-axe ist eine Möglichkeit, Barrierefreiheit automatisiert mit Cypress zu testen. Nun wird er demnächst in der Entwicklung mit der Optimierung im Bereich Barrierefreiheit beginnen.