1. Funktionstests
in SAP
Assertations & Breakopints, ABAP Unit und eCATT
… es geht auch einfach
2. Ariane 5 – Erstflug!
• 290.000.000 € Schaden
• Ursache: Arithmetischer Überlauf bei der Umwandlung einer 64-
Bit-Gleitkomma-Zahl in eine 16-Bit-Ganzzahl
• Für eine nicht mehr benötigte Softwarekomponente (Wurde für
Ariane 4 für Flugbahnberechnung verwendet)
… es geht auch einfach
3. Agenda
Software Tests
ABAP-Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
4. Agenda
Software Tests
ABAP-Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
5. Problemstellung
Eigenentwicklung
Customizing
Add Ons
Upgrade/Patches Transporte Transporte
SAP Kunde Kunde Kunde
Entwicklungssystem Test/Qualitätssystem Produktivsystem
• Upgrades, Eigenentwicklungen, Customizing verändern laufend das System
• Tests prüfen
– Führen die Veränderungen zum gewünschten Systemverhalten?
– Funktionieren Erweiterungen auch nach Patches oder Upgrades wie gewünscht?
… es geht auch einfach
6. Testtools
Entwicklertest Integrationstest Systemtest Akzeptanztest
•Assertations •ABAP Unit •eCATT
•Breakpoints •Gui Scripting
•ABAP Unit •eCATT
•eCATT
… es geht auch einfach
7. Entwicklertests
Entwicklertest Integrationstest Systemtest Akzeptanztest
•Assertations •ABAP Unit •eCATT
•Breakpoints •Gui Scripting
•ABAP Unit •eCATT
•eCATT
• Algorithmus, Logic
• Schnittstellen
• Fehlerhandling
… es geht auch einfach
8. Integrationstests
Entwicklertest Integrationstest Systemtest Akzeptanztest
•Assertations •ABAP Unit •eCATT
•Breakpoints •Gui Scripting
•ABAP Unit •eCATT
•eCATT
• Interaktion von Softwarekomponenten
– In Kombination von Softwarekomponenten kann das System fehlerhaft reagieren
• Schnittstellenfehler welche bei Entwicklertests nicht auftreten
• Timing Probleme
– Können bei Entwicklertests nicht erkannt werden
• Regression Tests
– Sicherstellung, dass neue Entwicklungen keinen negativen Einfluss auf bestehende
Module haben
… es geht auch einfach
9. Systemtests
Entwicklertest Integrationstest Systemtest Akzeptanztest
•Assertations •ABAP Unit •eCATT
•Breakpoints •Gui Scripting
•ABAP Unit •eCATT
•eCATT
• Vorwiegend Tests durch Fachbereich
– Wurden die Anforderungen korrekt umgesetzt?
… es geht auch einfach
10. Akzeptanztest
Entwicklertest Integrationstest Systemtest Akzeptanztest
•Assertations •ABAP Unit •eCATT
•Breakpoints •Gui Scripting
•ABAP Unit •eCATT
•eCATT
• Wie Systemtests, jedoch mit Kundeneinbindung
… es geht auch einfach
11. Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
12. ABAP Checkpoints
Assertions Breakpoints Logpoints
• ASSERT • BREAK-POINT
• ASSERT ID … CONDITION • BREAK-POINT ID … • LOG-POINT ID …
Zentral mit der Transaktion SAAB aktivierbar/deaktivierbar
… es geht auch einfach
13. Assertions
IF L_TEST EQ SPACE.
MESSAGE ‘ERROR‘ TYPE ‘X‘.
ENDIF.
ASSERT L_TEST NE SPACE.
ASSERT ID HUGO L_TEST NE SPACE.
… es geht auch einfach
14. Breakpoints
BREAK-POINT.
BREAK ‘USERNAME‘.
BREAK-POINT ID HUGO.
… es geht auch einfach
15. Logpoints
LOG-POINT ID HUGO.
… es geht auch einfach
16. Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
17. Unit (Modul)
– komplexer Codeabschnitt
– definiertem Input / Aktion
– überprüfbare Ergebnisse / Effekte
Methode, Funktionsbaustein, Forms, Reports,…
… es geht auch einfach
18. ABAP UNIT Tests
– ABAP
– SAP Entwicklungsumgebung (SE80, SE38,SE24…)
– Start aus Editor / ABAP UNIT Test Browser
– automatisiert und massenfähig (CI)
… es geht auch einfach
19. Aufbau
Testmethode
a
Testklasse 1
Testmethode
Unit b
Testmethode
Testklasse 2
a
… es geht auch einfach
20. Testklassen
– Lokale Klasse in ABAP-Programme - FOR TESTING
– Ausführbare Programme, Class-Pools,
Funktionsgruppen, Modul-Pools und Subroutinen-
Pools
– Testmethoden - FOR TESTING
… es geht auch einfach
21. Testmethoden
– parameterlose Instanzmethode
– private (protected)
– Testen der Unit
– Auswertung und Protokollierung -
CL_AUNIT_ASSERT
… es geht auch einfach
22. Definition Testklasse
CLASS lcl_utest_count "#AU Duration Short
DEFINITION FOR TESTING. "#AU Risk_Level Critical
PRIVATE SECTION.
METHODS:
ut_select_1 FOR TESTING,
ut_select_2 FOR TESTING
ENDCLASS.
… es geht auch einfach
23. Implementierung Testklasse
CLASS lcl_utest_count IMPLEMENTATION.
METHOD ut_select_1.
DATA: lr_test TYPE i.
PERFORM do_someting USING 'A'
CHANGING l_test.
cl_aunit_assert=>assert_equals(
exp =1
act = l_test
msg = 'There is a bug' ).
ENDMETHOD.
… es geht auch einfach
28. Duration und Risk_Level (Klasse)
CLASS lcl_utest_count "#AU Duration Short
DEFINITION FOR TESTING. "#AU Risk_Level Critica
CLASS lcl_utest_count DEFINITION FOR TESTING
DURATION MEDIUM "700 EHP2
RISK LEVEL HARMLESS.
Duration Risk_Level
• SHORT • CRITICAL TX
• MEDIUM • DANGEROUS
• LONG • HARMLESS
SAUNIT_CLIENT_SETUP
… es geht auch einfach
29. Level und Quit (Methode)
cl_aunit_assert=>assert_bound(
act = lr_ref
msg = 'No Reference returned'
level = if_aunit_constants=>critical
quit = if_aunit_constants=>method ).
Level Quit
• TOLERABLE • NO
• CRITICAL* • METHOD*
• FATAL • CLASS
• PROGRAM
… es geht auch einfach
30. Globale Testklassen
• häufig verwendete Tests
• Initialisieren Testdaten
… es geht auch einfach
31. Fixtures
• CLASS_SETUP
• SETUP
• Testmethode
• TEARDOWN
• CLASS_TEARDOWN
… es geht auch einfach
33. Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
34. SAP-Gui Scripting
• Simuliert das Verhalten von Benutzern
• Kann für Lasttests verwendet werden
• VBS - Visual Basic Scripts
… es geht auch einfach
36. Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
37. Mensch oder Maschine
Intelligenz/Kreativität
Finden von Workarounds
Hoher Personaleinsatz
Zeitaufwändig
Geringe Wiederverwendbarkeit
Geringe Reproduzierbarkeit
Geringer Personaleinsatz
Schneller als manuelle Tests
Wiederverwendbar
Reproduzierbare Fehler
Maschine ist dumm
Schulungsaufwand Tools
Aufwand Testfallerstellung
… es geht auch einfach
38. CATT vs. eCATT
• eCATT ist eine Weiterentwicklung von CATT welches seit R/3 3.0
verfügbar ist
– Unterstützt alte GUI Transaktionen, SAP GUI Controls, Web Services, Web
Dynpros, …
• CATT
– Nur R/3 Standardtransaktionen verwendbar
– keine externen Applikationen oder internetbasierte Anwendungen
möglich
– Keine neuen CATT Testscripts ab 6.40
– Keine Anpassung von CATT Testscripts ab 7.00
… es geht auch einfach
39. eCATT - Mandantenfreigabe
• Der Start von eCATT Testscripts kann je Mandant aktiviert werden
– eCATT und CATT nicht erlaubt
– eCATT und CATT erlaubt
– eCATT und CATT nur bei „Trusted RFC“ erlaubt
– eCATT erlaubt, aber FUN/ABAP und CATT nicht erlaubt
– eCATT erlaubt, aber FUN/ABAP und CATT nur bei „Trusted RFC“ erlaubt
• Sollte in einem Produktivmandant deaktiviert sein.
… es geht auch einfach
40. eCATT – Gui Scripting
• Profilparameter sapgui/user_scripting ist auf TRUE zu setzen.
– Mit RZ11 oder RZ10
… es geht auch einfach
41. eCATT – Gui Scripting
• In den SAP GUI Optionen muss im Bereich Accessibility
& Scripting das Scripting aktiviert sein
… es geht auch einfach
42. eCATT – Testobjekte
Testkonfiguration
Testdaten-Container
Wieder verwendbare Datensätze für die
Testausführung
Testskript
Folge von Kommandos für den Testablauf
Systemdaten-Container
Liste von Systemen, welche durch den Test
verwendet werden
… es geht auch einfach
43. eCATT – Systemdaten
• Kapselung der systemspezifischen Aspekte von den
Testskripts
• Abbildung der Systeme erfolgt im Systemdaten
Container
Logisches Ziel
in den
Testskripts
RFC Destination
… es geht auch einfach
44. eCATT – Testskript
Testskript
Attribute
Import
Importparameter
Export
Exportparameter
Lokale Variablen
Skript-Kommandos
… es geht auch einfach
45. eCATT – Testskriptfolge
Testskript Testskript Testskript
(Create Partner) (Create Activity) (Check Data)
… es geht auch einfach
47. eCATT – Skripteditor
Parameter
Kommando-
schnittstelle
Skriptbefehle
… es geht auch einfach
48. eCATT – Skript Sprache
ABAP Objects Checks Script Control Customizing Enterprise Services
•Objekte instanzieren •Variablen prüfen •DO/ENDDO •BCSET •Webservices
•Objektmethoden •Datenbankinhalt •IF/ELSE/ENDIF •RESTAB
aufrufen prüfen •WAIT •SETTAB
•Attribute •SAPGUI Felder prüfen •BREAK
setzen/lesen/prüfen •MESSAGE
Test Script
Log Parameters Program Control Database UI Control
Referenzen
•Protokolleinträge •Lesen & Setzen von •ABAP/ENDABAP •Referenz auf CATT •Datenbankzugriffe •SAPGui klassisch
Parameterwerten •Funktionsbausteine •Referenz auf eCATT •SAPGui Controls
•Tabellenzeilen •RESCON? •Web Dynpro
bearbeiten
eCATT Unterstützt nicht CRM Web UI – Integrierbar über externe Testtools! (z.B. QTB)
… es geht auch einfach
49. eCATT – Skripteditor – Key Features
• Einfügen über Muster
• Automatische Parametererstellung
• Globale Suche
• Verwendungsnachweise
• Debugging
… es geht auch einfach
50. eCATT – Testdaten
Testdaten werden über Testkonfigurationen bereitgestellt
Erfassung erfolgt manuell oder über Textfile (Excel)
möglich
Testkonfiguration
Import Parameter
Excel File
manuell erfasst
Testskript
… es geht auch einfach
51. Test Workbench
Test Paket Anwender
Test Plan
Test Paket eCATT
• User führt Test durch
• Overall Status ersichtlich
– User setzt Status für manuelle Tests
– eCATT Testscripts setzen den Status automatisch
… es geht auch einfach
52. Testdatencontainer
• Externe Testdaten
– Keine Verwendung von strukturierten Parametern (Struktur, Tabelle)
möglich
• Externe Testdaten während der Ausführung
– File muss vom Frontend erreichbar sein. Ebenfalls keine Verwendung von
strukturierten Parametern möglich
… es geht auch einfach
53. User in eCATT Tests
• Verwendung unterschiedlicher „User“ in einem Testcript
– Kann im Testscript nicht direkt angegeben werden. Test wird mit dem
angemeldeten User vorgenommen.
– Workaround über den Systemdatencontainer und einer eigenen RFC Verbindung
je User möglich
… es geht auch einfach