Show TOC

HintergrundABAP Unit - Hinweise zur Verwendung Dieses Dokument in der Navigationsstruktur finden

 

ABAP-Unit-Modultests sind Entwicklertests. Mit ABAP Unit können Sie schnell und effizient entwicklungsbegleitende Tests implementieren, ausführen und auswerten.

Sie können ABAP-Unit-Modultests direkt aus den Entwicklungswerkzeugen starten. Sie können sie auch automatisch nach Änderungen oder Erweiterungen ausführen lassen, um die Integrität ganzer ABAP-Komponenten zu verifizieren.

Unter der Annahme, dass Sie ein ABAP-Class-Pool entwickeln, könnte ein 'test-driven' Entwicklungsverfahren bzw. ein durch Tests gesichertes Entwicklungsverfahren wie folgt aussehen:

  1. Legen Sie Methoden mitsamt Signaturen an.

  2. Legen Sie parallel dazu mithilfe des ABAP Unit Wizards die Modultests für die Methoden an.

    Der Wizard erzeugt für Sie eine lokale Testklasse mit Testmethoden für die Methoden, die Sie angegeben haben.

    Im Idealfall müssen Sie nur geringfügige Anpassungen vornehmen, um die Testmethoden fertig zu stellen, beispielsweise Eingabedaten für die Methodenaufrufe anpassen oder Assert-Bedingungen an die Bedürfnisse der jeweiligen Methoden anpassen.

    Wenn Sie weitere Methoden definieren wollen, wiederholen Sie diesen Schritt, um die Testklasse mit zusätzlichen Testmethoden zu ergänzen.

    Sie können das gleiche Verfahren bei Funktionsgruppen anwenden. Bei anderen Programmobjekten müssen Sie die lokalen Testklassen manuell anlegen.

  3. Aktivieren Sie die Klasse (einschließlich aller Includes).

  4. Während Sie die Methoden implementieren, wenden Sie die entsprechenden Testmethoden an, um die korrekte Funktion der Methoden unter allen Bedingungen zu überprüfen.

  5. Führen Sie die Modultests als Regressionstests nach jeder Änderung oder Erweiterung aus. So können Sie sicher sein, dass neuer Quelltext korrekt arbeitet und vorhandene Funktionen nicht beschädigt sind.

    Sie können ABAP-Unit-Modultests manuell oder automatisch ausführen.

Wenn Sie Modultests mit ABAP Unit implementieren, achten Sie auf die folgenden allgemeinen Empfehlungen:

  • Legen Sie ABAP-Unit-Modultests für jedes Programmobjekt an.

    Modultests von ABAP Unit füllen die Lücke zwischen statischen Prüfungen wie der ABAP Erweiterte Prüfung und Integrations- und Abnahme-Tests.

    Mit ABAP Unit können Sie die korrekte Funktion Ihrer Softwarekomponenten verifizieren, bevor sie die Entwicklungsumgebung verlassen.

    Mit ABAP Unit lassen sich vermeidbare Fehlfunktionen in der Integrations- und Abnahmephase verhindern.

  • Schreiben Sie Ihre Modultests, bevor Sie den Produktionscode schreiben.

    Der Testcode sollte überprüfen, ob der produktive Code wie gewünscht funktioniert. Wenn Sie Ihre Tests erst nach der Implementierung des Produktionscodes schreiben, riskieren Sie, dass die Testklasse lediglich Funktionen verifiziert, von denen Sie bereits wissen, dass sie fehlerfrei sind.

  • Stellen Sie sicher, dass Modultests einzelne Softwarekomponenten prüfen. In ABAP sind Softwarekomponenten in der Regel Methoden einer Klasse oder Funktionsbausteine einer Funktionsgruppe.

    Achten Sie darauf, nur einzelne Softwarekomponenten in ABAP Unit zu testen. Erstellen Sie keine Integrationstests in ABAP Unit.

    Ein Test, der nur von einer Komponente abhängt, kann bereits zu einem frühen Zeitpunkt durchgeführt werden. Die Ausführung des Tests ist schnell und die Eingrenzung der Fehlerursache ist einfach.

    In der Praxis ist es oft schwierig, zum Beispiel nur eine einzige Methode auszuführen. Es gibt oft Abhängigkeiten von anderen Methoden der gleichen oder anderer Klassen, so dass real existierende Tests oft mehr als eine Methode ausführen.

    Wichtig ist dabei, dass die Ausführung des Tests schnell ist und die Fehlerlokalisierung erhalten bleibt. Ein Test ist kein Modultest, wenn im Fehlerfall die Ursache unklar bleibt oder Daten in der Persistenzschicht vorhanden sein müssen oder bei der Ausführung eine Benutzerinteraktion erforderlich ist.

  • Wenden Sie Test-Driven-Programmiertechniken an, damit Ihre Modultests eine hohe Quellenabdeckung bei feiner Granularität erreichen. Stellen Sie beispielsweise sicher, dass Sie Abhängigkeiten auflösen, die Tests einschränken könnten, wie die direkte Verwendung von Datumsangaben über das Systemfeld SY-DATUM oder nicht verkapselte Datenbank-Operationen.

    Solche Abhängigkeiten können verhindern, dass ein Modultest nur die zu testende Code-Einheit verprobt oder dass ein Modultest überhaupt möglich ist.

  • Benutzen Sie die [class_]setup- und [class_]teardown-Methoden, um die für einen Modultest erforderliche Umgebung (Fixture) aufzubauen und dann wieder abzubauen.

    Braucht eine Methode Beispieldaten oder muss sie eine andere Komponente anwenden?

    Sie können die Fixture-Methoden von ABAP Unit verwenden, um erforderliche Testdaten und Testattrappen anzulegen und am Ende des Tests wieder zu entfernen.

  • Vergessen Sie nicht, die Risikoeinstufung der ABAP-Unit-Klasse (Risk Level) entsprechend zu setzen, wenn die Test-Fixture risikoreiche Änderungen am System vornimmt, wie etwa das Erzeugen von Testdaten in der Persistenzschicht.