Automatisierte Tests (IT)Senior Automation QA Engineer

Wie würden Sie ein automatisiertes Testframework für die Validierung von End-to-End-Geschäftsworkflows in legacy ERP-Systemen entwerfen, die keine modernen API-Schnittstellen haben, zustandsbehaftete GUI-Interaktionen über modulare Screens erfordern und eine Echtzeit-Datenbankzustandsüberprüfung vorschreiben, während die Testisolierung in gemeinsam genutzten Sandbox-Umgebungen gewährleistet wird?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort auf die Frage

Vorgeschichte der Frage

Legacy-ERP-Systeme wie SAP ECC und Oracle E-Business Suite sind nach wie vor für wichtige Geschäftsoperationen von Fortune-500-Unternehmen verantwortlich, aber diese monolithischen Architekturen sind Jahrzehnte älter als moderne, API-first-Designmuster. Die Frage entstand organisch, als Unternehmen versuchten, DevOps-Transformationsstrategien auf Brownfield-Umgebungen anzuwenden, die sich gegen Containerisierung und Mikrodienst-Zerlegung sträuben. Traditionelle Automatisierungsansätze scheitern hier, da diese Systeme die Präsentationslogik eng mit Geschäftsregeln in proprietären ABAP- oder PL/SQL-Codebasen verbinden. Organisationen stellten fest, dass die bloße Anwendung von Selenium-basierter Webautomatisierung auf dick-klient SAPGUI-Schnittstellen zu katastrophalen Wartungskosten und falsch positiven Ergebnissen führte.

Das Problem

Das grundlegende Impedanz-Mismatch ergibt sich aus ERP-Systemen, die sich auf zustandsbehaftete GUI-Frameworks mit umfangreicher clientseitiger Sitzungsverwaltung und ohne freigegebene REST-Schnittstellen stützen. Direkte Datenbankprüfung birgt das Risiko, die in zahlreichen Zeilen von Legacy-Trigger-Code eingebetteten Geschäftsregeln der Anwendungsebene zu verletzen, was zu falsch negativen Testergebnissen führt. Gemeinsame Sandbox-Umgebungen verschärfen diese Schwierigkeiten, da ABAP-Transaktionen oft autonome Commits verwenden, die Datenbank-Rollback-Mechanismen umgehen und die Testisolierung durch standardmäßige Transaktionsbefestigungen verhindern. Darüber hinaus erfordert die Echtzeitvalidierung die Erkennung von Zustandsänderungen, die hinter UI-Bestätigungen zurückbleiben können, aufgrund asynchroner RFC (Remote Function Call)-Verarbeitungswarteschlangen oder nächtlicher Batch-Job-Zeitpläne.

Die Lösung

Implementierung einer Hybrid-Automatisierungsarchitektur, die RPA-ähnliche Bildschirmautomatisierung mit ereignisgesteuerter Datenbankvalidierung durch Change Data Capture (CDC)-Mechanismen kombiniert. Bereitstellung von Data Virtualization-Tools wie Delphix oder Redgate SQL Clone, um isolierte, beschreibbare Teilmengen von Datenbanken für jeden parallelen Test-Thread bereitzustellen, ohne gesamte Terabyte-große Umgebungen zu duplizieren. Verwendung von proprietären Automatisierungsadaptern wie SAP CBTA oder SapShell-Wrapper um Selenium, um dynamische Dynpro-Steueridentifikatoren ohne brüchige XPath-Locatoren zu behandeln. Einrichtung eines Event Bus unter Verwendung von Apache Kafka, um SAP Change Pointers oder Datenbanktransaktionsprotokolle zu konsumieren, wodurch asynchrone Assertions ermöglicht werden, die Pollingverzögerungen beseitigen und die Übereinstimmung von UI- und Datenbankzuständen überprüfen.

Lebenssituation

Ein globales Fertigungsunternehmen benötigte die Automatisierung ihres Procure-to-Pay-Workflows, der die SAP ECC 6.0-Module für Einkaufsanforderung, Liefergenehmigung, Wareneingang und Rechnungsprüfung umfasste. Die Zielumgebung war eine gemeinsame SANDBOX-Instanz, die gleichzeitig von manuellen Testern, Batch-Job-Zeitplänen und zwölf parallelen Automatisierungsströmen über verschiedene geografische Teams hinweg genutzt wurde. Der Workflow beinhaltete komplexe Zustandsübergänge, bei denen die Erstellung einer Bestellung Kreditlimitprüfungen über RFC-Aufrufe an ein separates SAP BW-System auslöste, gefolgt von asynchronen Bestandsaktualisierungen.

Die Tests zeigten extreme Flatterigkeit aufgrund von Datenbankkonkurrenz - die Automatisierung erstellte eine Bestellung mit der ID 450001, aber bevor die Assertion ausgeführt wurde, modifizierte ein konkurrierender Test die gleichen Lieferanten-Masterdaten oder verbrauchte das verfügbare Budget im Kostenstelle. Die SAPGUI-Screens verwendeten dynamisch generierte Steuer-ID basierend auf Runtime-ABAP-Bildschirmsequenzen, wodurch standardmäßige Selenium-Locatoren bei geringfügigen Konfigurationsänderungen in der Entwicklung versagten. Darüber hinaus wurden kritische Unternehmensvalidierungen erst nachnächtlicher ABAP-Batch-Jobs durchgeführt, was eine zeitgerechte Testfeedback-Rückmeldung mit einfachen UI-gesteuerten Ansätzen unmöglich machte.

Reine UI-Automatisierung mit erweiterten Wartezeiten stellte die erste betrachtete Lösung dar. Diese Strategie beruhte ausschließlich auf SAP CBTA mit expliziten Synchronisationspunkten und aggressiven Polling-Schleifen zur Erkennung von UI-Zustandsänderungen. Vorteile umfassten einen minimalen Infrastrukturaufwand und die Ausrichtung an den offiziell unterstützten Automatisierungs-Toolsets von SAP, für die keine zusätzlichen Lizenzen über die Standard-Testmodule hinaus erforderlich waren. Nachteile umfassten steigende Ausführungszeiten von über 50 Minuten pro Testfall aufgrund fester Pollingintervalle, die vollständige Unfähigkeit, die erfolgreiche Verarbeitung von Backend-IDoc (Intermediate Document) zu verifizieren, und anhaltende falsch-positive Ergebnisse, wenn Batch-Jobs unvorhersehbar länger als die maximalen Wartezeiten dauerten.

Direkte Datenbankmanipulation diente als zweite Alternative. Dieser Ansatz umging die UI vollständig für Assertions und verwendete JDBC-Verbindungen zur Überprüfung von Tabelleneinträgen in den Tabellen EKKO (Einkaufsdokumentenkopf) und EKPO (Einkaufsdokumentposition) sofort nach GUI-Aktionen. Vorteile umfassten Geschwindigkeiten in der Validierung im Sub-Sekunden-Bereich und theoretische Immunität gegenüber Frontend-Rendering-Änderungen, was es ermöglichte, Tests ohne SAPGUI-Client-Installation auszuführen. Nachteile umfassten Wartungsprobleme, wenn die ABAP-Validierungslogik geändert wurde, aber die SQL-Abfragen nicht aktualisiert wurden, hohes Risiko, Implementierungsdetails zu testen anstelle von benutzerrepräsentativen Geschäftsprozessen, und Verletzung von Datenintegritätsbeschränkungen, wenn direkte Updates die Autorisierungsprüfungen auf Anwendungsebene umgingen.

Hybridarchitektur mit vorgelagerte Testdaten war die dritte implementierte Option. Die Lösung nutzte SAP TDMS (Test Data Migration Server), um isolierte, client-spezifische Daten-Pockets innerhalb der gemeinsamen Sandbox zu erstellen, wobei jeder Automatisierungs-Thread eindeutige Unternehmenscodes zugewiesen wurden. Wir verwendeten Selenium mit SapShell-Automatisierungs-Wrappers für UI-Interaktionen, gekoppelt mit Kafka-Listenern, die die Tabellen CDPOS (Change Document Items) zur Echtzeitbenachrichtigung über Zustandsänderungen über CDC überwachten. Vorteile umfassten echte parallele Ausführung ohne Kreuzkontamination, 80% schnellere Validierung durch ereignisgesteuerte Assertions im Vergleich zum Polling und Widerstandsfähigkeit gegen Änderungen bei UI-Locator durch KI-basierte Objekterkennung-Tools wie TestPlant oder Micro Focus UFT‘s KI-Engine. Nachteile erforderten eine erhebliche Investition in die Infrastruktur für die TDMS-Konfiguration und komplexe Testdaten-Workflow-Logik zur Verwaltung von Datenalterung und Auffrischungszyklen.

Die Hybridarchitektur wurde ausgewählt, da sie die Hauptursache - die Isolierung von Testdaten - adressierte, anstatt bloß Symptome durch Zeitverzögerungen zu maskieren. Während die ersten Setup drei Wochen Zusammenarbeit mit einem Basis-Administrator zur Konfiguration der TDMS-Slices erforderte, ermöglichte sie eine echte CI/CD-Integration für das Legacy-System und reduzierte den Feedback-Zyklus von drei Tagen auf unter zwei Stunden. Dieser Ansatz bot deterministische Ausführungsgewißheiten, die die reine UI-Automatisierung nicht bieten konnte, während er die benutzerzentrierte Validierungsperspektive beibehielt, die direkte Datenbankabfragen opferten.

Das Framework unterstützt jetzt täglich über 250 parallele Testausführungen über acht regionale Teams hinweg ohne Vorfälle von Kreuzkontamination. Die Flatterigkeit der Tests sank von 42% auf 1,8%, und die Ausführungszeit des kritischen Pfades vom Order-to-Cash sank von 6 Stunden auf 28 Minuten. Die Architektur wurde zum Unternehmensstandard für die Automatisierung anderer legacy Module, was zeigte, dass Systeme aus der Mainframe-Ära moderne Automatisierungsgeschwindigkeiten erreichen konnten, ohne riskante Rip-and-Replace-Modernisierungsstrategien.

Was Kandidaten oft übersehen

Wie gewährleisten Sie die Testisolierung in SAP-Systemen, die autonome Commits in ABAP-Code verwenden und somit standardmäßige Rollbacks von Datenbanktransaktionen zwischen Tests verhindern?

Kandidaten schlagen häufig vor, Tests in Datenbanktransaktionen zu verpacken, aber der ABAP-Befehl COMMIT WORK führt autonome Commits aus, die die JDBC-Transaktionsgrenzen ignorieren. Der richtige Ansatz implementiert Logical Tenant Isolation, indem bestimmte organisatorische Strukturen - wie Unternehmenscodes, Werk-IDs oder Einkaufsorganisationen - ausschließlich für Automatisierungs-Pipelines reserviert werden. Kombinieren Sie dies mit Temporal Isolation-Strategien, bei denen die Automatisierung Geschäftsdokumente mit einem Datum in sechs Monaten in der Zukunft erstellt, sodass sie für manuelle Tester und Batch-Jobs, die Transaktionen mit dem aktuellen Datum verarbeiten, unsichtbar bleiben. Zur Bereinigung nutzen Sie BAPI (Business Application Programming Interface)-Aufrufe wie BAPI_PO_DELETE, anstatt direkte SQL-Löschen durchzuführen, um die referentielle Integrität der Anwendungsschicht und die Autorisierungsprüfungen zu respektieren.

Welche Technik verhindert, dass die SAPGUI-Automatisierung fehlschlägt, wenn der SAP-Nachrichtendienst dynamisch Verbindungen zu unterschiedlichen Anwendungsservern in einer Lastenausgleichsumgebung umleitet?

Viele Kandidaten schlagen vor, am Lastenausgleichslevel anhaftende Sitzungen zu konfigurieren, aber dies erfordert Netzwerkverwaltungsrechte, die in Unternehmenslandschaften selten QA-Teams gewährt werden. Die richtige Lösung besteht darin, die spezifische Anwendungsserver-Instanznummer aus dem SAPGUI-Verbindungs-String unmittelbar nach dem Login zu erfassen und dann alle nachfolgenden Automatisierungsschritte an diesen speziellen Knoten unter Verwendung expliziter SAP Router-Strings zu leiten. Implementieren Sie ein Session Affinity Registry innerhalb Ihres Testkontexts, das Thread-IDs bestimmten Serverinstanzen zuweist, wobei die Funktionalität TH_SERVER_LIST von SAP verwendet wird, um proaktiv verfügbare Knoten zu identifizieren. Dies gewährleistet, dass zustandsbehaftete ABAP-Sitzungsvariablen über mehrere Bildschirmübergänge hinweg bestehen bleiben, ohne dass Infrastrukturänderungen oder die Deaktivierung des Lastenausgleichs erforderlich sind.

Wie synchronisieren Sie die Automatisierung mit der asynchronen Beendigung von SAP-Batchjobs, ohne sich auf fragiles Screen-Scraping der SM37-Transaktion zu verlassen?

Die meisten Kandidaten schlagen vor, den Bildschirm Job Overview abzufragen oder feste Verzögerungen zu implementieren, was sowohl Anfälligkeiten als auch unvorhersehbare Ausführungszeiten einführt. Die fortgeschrittene Lösung nutzt das XBP (External Batch Processing)-Interface von SAP über RFC (Remote Function Call)-Ziele und ermöglicht es der Automatisierung, BP_JOB_STATUS_GET programmgesteuert aufzurufen. Nachfolgend beispielhafte Python-Implementierung unter Verwendung von PyRFC:

from pyrfc import Connection def wait_for_batch_job(conn, job_name, timeout=300): """Ereignisgesteuertes Warten auf den Abschluss von SAP-Batchjobs""" import time start = time.time() while time.time() - start < timeout: result = conn.call('BP_JOB_STATUS_GET', JOBNAME=job_name, EXTERNAL_USER_NAME='AUTOMATION_USER') status = result['STATUS'] if status == 'F': # Fertig return True elif status == 'A': # Abgebrochen raise Exception(f"Job {job_name} abgebrochen") time.sleep(2) # Kurzes Polling, könnte aber durch Webhook ersetzt werden return False

Dies entkoppelt die Verifizierung von der GUI-Zeit, reduziert die Synchronisationsüberlastung von Minuten auf Millisekunden, wenn sie mit SAP's Event Mesh-Webhooks kombiniert wird, und bietet strukturierte Protokollanalysefähigkeiten für deterministische Fehleranalysen durch zusätzliche RFC-Aufrufe wie BP_JOBLOG_READ.