… es geht auch einfach
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
Agenda
Software Tests
ABAP-Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
Agenda
Software Tests
ABAP-Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
Problemstellung
SAP Kunde Entwicklungssystem
Kunde Test/Qualitätssystem
Upgrade/Patches Transporte
Eigenentwicklung
Add Ons Customizing
Kunde Produktivsystem
Transporte
• 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
Testtools
Entwicklertest
•Assertations
•Breakpoints
•ABAP Unit
•eCATT
Integrationstest
•ABAP Unit
•Gui Scripting
•eCATT
Systemtest
•eCATT
Akzeptanztest
… es geht auch einfach
Entwicklertests
Entwicklertest
•Assertations
•Breakpoints
•ABAP Unit
•eCATT
Integrationstest
•ABAP Unit
•Gui Scripting
•eCATT
Systemtest
•eCATT
Akzeptanztest
• Algorithmus, Logic
• Schnittstellen
• Fehlerhandling
… es geht auch einfach
Integrationstests
Entwicklertest
•Assertations
•Breakpoints
•ABAP Unit
•eCATT
Integrationstest
•ABAP Unit
•Gui Scripting
•eCATT
Systemtest
•eCATT
Akzeptanztest
• 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
Systemtests
Entwicklertest
•Assertations
•Breakpoints
•ABAP Unit
•eCATT
Integrationstest
•ABAP Unit
•Gui Scripting
•eCATT
Systemtest
•eCATT
Akzeptanztest
• Vorwiegend Tests durch Fachbereich – Wurden die Anforderungen korrekt umgesetzt?
… es geht auch einfach
Akzeptanztest
Entwicklertest
•Assertations
•Breakpoints
•ABAP Unit
•eCATT
Integrationstest
•ABAP Unit
•Gui Scripting
•eCATT
Systemtest
•eCATT
Akzeptanztest
• Wie Systemtests, jedoch mit Kundeneinbindung
… es geht auch einfach
Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
Assertions
•ASSERT
•ASSERT ID … CONDITION
Breakpoints
•BREAK-POINT
•BREAK-POINT ID …
Logpoints
•LOG-POINT ID …
ABAP Checkpoints
Zentral mit der Transaktion SAAB aktivierbar/deaktivierbar
… es geht auch einfach
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
Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
Unit (Modul)
– komplexer Codeabschnitt
– definiertem Input / Aktion
– überprüfbare Ergebnisse / Effekte
Methode, Funktionsbaustein, Forms, Reports,…
… es geht auch einfach
– ABAP
– SAP Entwicklungsumgebung (SE80, SE38,SE24…)
– Start aus Editor / ABAP UNIT Test Browser
– automatisiert und massenfähig (CI)
ABAP UNIT Tests
… es geht auch einfach
Unit
Testklasse 1
Testmethode a
Testmethode b
Testklasse 2 Testmethode
a
Aufbau
… es geht auch einfach
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
Testmethoden
– parameterlose Instanzmethode
– private (protected)
– Testen der Unit
– Auswertung und Protokollierung - CL_AUNIT_ASSERT
… es geht auch einfach
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
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.
Implementierung Testklasse
… es geht auch einfach
• ASSERT_EQUALS • ASSERT_DIFFERS • ASSERT_BOUND • ASSERT_NOT_BOUND • ASSERT_INITIAL • ASSERT_NOT_INITIAL • ASSERT_CHAR_CP • ASSERT_CHAR_NP • ASSERT_TEXT_MATCHES • ASSERT_TABLE_CONTAINS • ASSERT_NUMBER_BETWEEN • ASSERT_SUBRC • ASSERT_EQUALS_F (ASSERT_EQUALS_FLOAT) • ASSERT_THAT • FAIL • ABORT
CL_AUNIT_ASSERT (CL_ABAP_UNIT_ASSERT)
700 EHP2
… es geht auch einfach
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 und Risk_Level (Klasse)
Risk_Level • CRITICAL • DANGEROUS • HARMLESS
Duration • SHORT • MEDIUM • LONG
TX SAUNIT_CLIENT_SETUP
… es geht auch einfach
cl_aunit_assert=>assert_bound( act = lr_ref msg = 'No Reference returned' level = if_aunit_constants=>critical quit = if_aunit_constants=>method ).
Level und Quit (Methode)
Quit • NO • METHOD* • CLASS • PROGRAM
Level • TOLERABLE • CRITICAL* • FATAL
… es geht auch einfach
Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
SAP-Gui Scripting
• Simuliert das Verhalten von Benutzern
• Kann für Lasttests verwendet werden
• VBS - Visual Basic Scripts
… es geht auch einfach
Agenda
Software Tests
ABAP Checkpoints
ABAP Unit
Gui Scripting
Testautomation mit eCATT
… es geht auch einfach
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
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
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
eCATT – Gui Scripting • Profilparameter sapgui/user_scripting ist auf TRUE zu setzen.
– Mit RZ11 oder RZ10
… es geht auch einfach
eCATT – Gui Scripting • In den SAP GUI Optionen muss im Bereich Accessibility
& Scripting das Scripting aktiviert sein
… es geht auch einfach
eCATT – Testobjekte
Testkonfiguration
Testskript Folge von Kommandos für den Testablauf
Testdaten-Container Wieder verwendbare Datensätze für die
Testausführung
Systemdaten-Container Liste von Systemen, welche durch den Test
verwendet werden
… es geht auch einfach
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
eCATT – Testskript
Testskript
Importparameter
Exportparameter
Lokale Variablen
Skript-Kommandos
Attribute
Import
Export
… es geht auch einfach
eCATT – Testskriptfolge
Testskript (Create Activity)
Testskript (Create Partner)
Testskript (Check Data)
… es geht auch einfach
eCATT – Skript Sprache
ABAP Objects
•Objekte instanzieren
•Objektmethoden aufrufen
•Attribute setzen/lesen/prüfen
Checks
•Variablen prüfen
•Datenbankinhalt prüfen
•SAPGUI Felder prüfen
Script Control
•DO/ENDDO
•IF/ELSE/ENDIF
•WAIT
•BREAK
•MESSAGE
Customizing
•BCSET
•RESTAB
•SETTAB
Enterprise Services
•Webservices
Log
•Protokolleinträge
Parameters
•Lesen & Setzen von Parameterwerten
•Tabellenzeilen bearbeiten
Program Control
•ABAP/ENDABAP
•Funktionsbausteine
•RESCON?
Test Script Referenzen
•Referenz auf CATT
•Referenz auf eCATT
Database
•Datenbankzugriffe
UI Control
•SAPGui klassisch
•SAPGui Controls
•Web Dynpro
eCATT Unterstützt nicht CRM Web UI – Integrierbar über externe Testtools! (z.B. QTB)
… es geht auch einfach
eCATT – Skripteditor – Key Features • Einfügen über Muster
• Automatische Parametererstellung
• Globale Suche
• Verwendungsnachweise
• Debugging
… es geht auch einfach
eCATT – Testdaten Testdaten werden über Testkonfigurationen bereitgestellt
Erfassung erfolgt manuell oder über Textfile (Excel) möglich
Testkonfiguration
Excel File manuell erfasst
Testskript Im
po
rt P
aram
eter
… es geht auch einfach
Test Workbench
Test Plan
Test Paket
Test Paket
Anwender
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
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