Zu unseren langjährigen Kunden gehört ein bekannter Automobilhersteller im süddeutschen Raum, mit dem wir seit mehr als 15 Jahren erfolgreich Projekte durchführen. Unsere Beraterin Jenne Justin war ein wichtiger Teil des Test-Teams. In diesem Interview teilt sie ihre Erfahrungen zu den Themen Testing nach ISTQB und verbesserte Qualitätssicherung durch Automatisierung mit uns.
Mit in-factory zur erfolgreichen Customer Journey
Hallo Jenne, vielen Dank dass du uns an deinen Erfahrungen teilhaben lässt. Wir haben unserem Kunden zu einer erfolgreichen Customer Journey verholfen. Kannst du uns mehr darüber berichten, wie du dabei mitgewirkt hast?
Jenne: In dem Projekt, in dem ich eingesetzt war, ging es um den Kundendatenbereich (CRM). Möchte zum Beispiel eine Person eine Probefahrt absolvieren, meldet sie sich über die Homepage des Herstellers mit Kontaktdaten und Angaben zu dem gewünschten Testfahrzeug zu einem Termin an. Diese Daten werden über Sourcesysteme in eine Oracle-Datenbank nach dem DataVault-Ansatz geladen. Diese Datenbank wird ebenfalls von der in-factory GmbH betreut. Die geladenen Daten werden identifiziert, aggregiert und konsolidiert an Salesforce weitergeleitet. Die In-factory GmbH sorgt dafür, dass diese personenbezogenen Daten (inklusive der vollständigen Historie) in Echtzeit abgerufen werden können.
Im Kundenprojekt implementieren unsere Kolleginnen und Kollegen von der in-factory GmbH neue Funktionalitäten, erhöhen die Performance oder setzen Optimierungen um. Damit sichergestellt ist, dass alles reibungslos funktioniert und die Anforderung umgesetzt ist, ist ein gründliches Testing unverzichtbar. Um unseren hohen Qualitätsansprüchen gerecht zu werden, wurde ich vor Projektbeginn gründlich eingearbeitet und habe eine mehrtägige Schulung sowie eine ISTQB-Zertifizierung absolviert. Hier habe ich alles über die Grundlagen des Testings gelernt, von der Dokumentation bis hin zu Verantwortlichkeiten und Systemen.
Damit konntest du also direkt von der Theorie in die praktische Umsetzung einsteigen. Wie war das Testing-Team in eurem Projekt aufgebaut?
Jenne: Im Test-Team gibt es mehrere Rollen, wie die Testmanagerinnen und Testmanager, die für die Koordination, Überwachung des nächsten Projektplans und Kapazitätsverteilung verantwortlich sind. Zudem gibt es die Testerinnen und Tester, die die eigentlichen Tests durchführen. Die Arbeit erfolgt agil nach der Scrum-Methodik: Mit einem ersten Sprint für die Entwicklung, einem zweiten Sprint für das Testing der entwickelten Inkremente und einem dritten Sprint für die Live-Einführung. Dabei orientieren wir uns an dem Testprozess nach der ISTQB.
Optimierter Testprozess durch ISTQB-Konformität: Von der Theorie zur praktischen Umsetzung
Der Testprozess nach der ISTQB – was können wir uns darunter vorstellen?
Jenne: Der Testprozess beginnt mit der Erstellung eines Testplans. Dieser wird parallel zu der Entwicklung im ersten Sprint erstellt und beinhaltet auch ein Testkonzept. Der Testplan basiert auf den Storys, die vom Fachbereich erstellt wurden. Ein Beispiel für eine Story wäre: Es wird eine neue API-Anbindung benötigt, um Daten über die Bestellinformation aus der Datenbank herauszulesen. Anhand dieser Story wird das Testkonzept entwickelt. Darüber hinaus werden die Ziele sowie die Eingangs- und Ausgangskriterien definiert, welche der Test erfüllen muss, um sicherzustellen, dass die Anforderung der Story eingehalten wird. In diesem Beispiel bedeutet dies, dass die API funktioniert und die übertragenen Daten korrekt und auch richtig formatiert sind (Datentypen). Diese Steps werden in der Testplanung grob definiert. Im nächsten Schritt übernehmen die Testmanagerinnen und Testmanager die Testüberwachung sowie -steuerung. Diese Koordination ist wichtig, da viele Anforderungen Abhängigkeiten zu anderen Teams oder Storys haben.
Die Testanalyse und der Testentwurf erfolgen im 2. Sprint. Bei der Testanalyse wird durch die Testerinnen und Tester die Testbasis genauer untersucht. Daraus resultiert der Testentwurf, in dem bestimmt wird, welche Testfälle Priorität haben, d.h. es werden die logische Reihenfolge festgelegt und wichtige Voraussetzungen geprüft, wie zum Beispiel: Funktioniert die API? Sind die Umgebungen bereit? Stehen die korrekten Testdaten bereit? Des Weiteren wird der Entwurf der abstrakten Testfälle dokumentiert. Bei der folgenden Testrealisierung und Testdurchführung werden im ersten Schritt die Testfälle im Dokumentations-Tool (zum Beispiel Jira) genau beschrieben: Was ist die Anforderung von dem speziellen Testfall? Was wird als Ergebnis erwartet? Die Testdurchführung umfasst dann die eigentlichen Tests, bei denen jeder einzelne Testfall überprüft wird. Wenn Fehler (Bugs) auftauchen, werden diese durch das Defectmanagement an die Entwicklung zurückgegeben. Der Testabschluss wird von den Testmanagerinnen und Testmanagern koordiniert. Hier wird ein Arbeitsergebnis erstellt, in dem beschrieben wird, was geliefert wurde, ob es offene Fehler oder Abweichungen gab und ob die Anforderung erfüllt wurde. Zusätzlich wird für zukünftige Projekte dokumentiert.
Um noch kurz bei den Grundlagen zu bleiben: Wie wirken sich die verschiedenen Umgebungen auf das Testing aus?
Jenne: Das Testing beim Kunden wird auf verschiedenen Ebenen durchgeführt. Dazu gibt es die sogenannten Teststufen: Komponenten-, Integration-, System- und Abnahmetests. Diese Teststufen finden auf verschiedenen Umgebungen statt, von der Entwicklungsumgebung bis hin zur Produktionsumgebung. Beim Komponententest (Unit Testing) wird von unseren Entwicklerinnen und Entwicklern auf der Entwicklungsumgebung getestet. Der Integrationstest findet auf der Testumgebung statt. Dort wird ausschließlich die Funktionalität der Story getestet. Der Systemtest wird auf der Integrationsumgebung 1 ausgeführt. Dort wird das integrierte Gesamtsystem geprüft. Dabei werden nicht nur die Funktionalität, sondern auch die Effizienz und die Usability getestet, sogenanntes Whitebox-Testverfahren. Der Abnahmetest findet auf der Integrationsumgebung 2 statt, bei der es sich um eine Produktionsabgleichsumgebung handelt. Hierbei wird das Komplettsystem samt Schnittstellen in einem sogenannten Blackbox-Testverfahren geprüft.
Der komplette Prozess ist nach ISTQB definiert und wird in ähnlicher Form in vielen Projekten angewendet.
Optimierung durch Automatisierung: Effizienzsteigerung im Test-Prozess
Neben der Struktur des Test-Prozesses ist die Effizienzsteigerung ein wichtiger Faktor. Kannst du uns dazu deine Erfahrungen teilen?
Jenne: Wir haben unseren Test-Prozess optimiert: In unserem Kundenprojekt ist Automatisierung beim Testing wichtig und sinnvoll, da es sich um ein laufendes System handelt, bei dem immer wieder Optimierungen und Weiterentwicklungen durchgeführt werden. Außerdem sorgt die Automatisierung dafür, dass Tests schneller und zuverlässiger durchgeführt werden, was zu einer höheren Qualität des Endprodukts führt.
Durch die Automatisierung kann schnell und effizient sichergestellt werden, dass durch Optimierungen oder Weiterentwicklungen keine Probleme bei anderen, abhängigen Funktionalitäten auftreten. Zur Durchführung der Automatisierung wurde bei unserem Kunden ein Python Framework implementiert. Der Praxisaufwand für die Automatisierung je nach Story beträgt zwischen 1 und 4 Tage. Danach müssen die Teststufen sowie die Nachtests von Bugs nicht mehr manuell ausgeführt werden, sondern können automatisch durch ein Framework gesteuert werden. Die Anforderungen, wie z.B. die API-Aufrufe, werden in das Framework eingebettet und Testcases definiert sowie das erwartete Ergebnis festgehalten. Wenn das Framework ausgeführt wird, werden die API-Aufrufe automatisch auf bestimmte Testdaten in der Testdatenbank ausgeführt. Alle definierten Testcases in dem Framework werden durchlaufen und es wird überprüft, ob die ausgegebenen Daten korrekt sind. Falls es zu Unstimmigkeiten zum erwarteten Ergebnis kommt, wird automatisch ein Report generiert. In unserem Projekt wird jede Story automatisiert, das heißt die Testerinnen und Tester müssen nicht mehr manuell testen.
Das heißt der manuelle Aufwand wurde messbar reduziert? Gibt es noch weitere Vorteile?
Jenne: Ja, das ist richtig, der manuelle Aufwand wurde messbar reduziert. Auch gibt es noch einen weiteren Vorteil: Täglich und insbesondere nach jedem Deployment läuft das Framework automatisch auf allen Testumgebungen durch. Falls ein Testfall fehlschlägt, wird ein Report erstellt, so dass sofort erkennbar ist, wenn beim Deployment oder beim normalen Lauf Fehler aufgetreten sind und warum. Dies sorgt für eine große Zeitersparnis auf der Suche nach Bugs und gewährleistet kontinuierliche Qualität.
Für jeden Testabschluss gibt es ein Set mit automatisierten Testfällen, die während des Sprints erstellt wurden. Dieses Set wird in das gesamte Framework eingebunden. Dadurch ist es nicht mehr erforderlich, dass manuell getestet wird – es kann alles auf Knopfdruck automatisch getestet werden. Dabei ist es möglich, einen einzelnen Testfall, das gesamte Framework oder nur Teile davon durchlaufen zu lassen.
Vielen Dank für das interessante Interview! Hast du noch ein einige abschließenden Worte für uns?
Jenne: Abschließend kann ich sagen: Obwohl die Implementierung anfangs aufwändig war, hat die Automatisierung im Testing zu einer erheblichen Zeitersparnis für die Testerinnen und Tester sowie einer Steigerung der Qualität geführt.