Upload
cadaxo-gmbh
View
3.990
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Der Foliensatz liefert eine Einführung in die SAP Themen ABAP Unit, Checkpoint-Groups und eCATT.
Citation preview
… es geht auch einfach
Funktionstests in SAP
Assertations & Breakopints, ABAP Unit und eCATT
… 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 TestsABAP-CheckpointsABAP UnitGui ScriptingTestautomation mit eCATT
… es geht auch einfach
Agenda
Software TestsABAP-CheckpointsABAP UnitGui ScriptingTestautomation mit eCATT
… es geht auch einfach
Problemstellung
SAP Kunde Entwicklungssystem
Kunde Test/Qualitätssystem
Upgrade/Patches Transporte
EigenentwicklungAdd 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 TestsABAP CheckpointsABAP UnitGui ScriptingTestautomation 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
AssertionsIF 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
Breakpoints
BREAK-POINT.
BREAK-POINT ID HUGO.
BREAK ‘USERNAME‘.
… es geht auch einfach
Logpoints
LOG-POINT ID HUGO.
… es geht auch einfach
Agenda
Software TestsABAP CheckpointsABAP UnitGui ScriptingTestautomation 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 TestklasseCLASS lcl_utest_count "#AU Duration ShortDEFINITION 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 = 1act = l_testmsg = 'There is a bug' ).
ENDMETHOD.
Implementierung Testklasse
… es geht auch einfach
UNIT Test ausführen
SE38, SE24,… 700 EHP2
… es geht auch einfach
Ergebnisse auswerten
… es geht auch einfach
Live on System
… 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 ShortDEFINITION 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
• häufig verwendete Tests• Initialisieren Testdaten
Globale Testklassen
… es geht auch einfach
Fixtures
• CLASS_SETUP• SETUP• Testmethode• TEARDOWN• CLASS_TEARDOWN
… es geht auch einfach
Code Inspector – TX SCI
… es geht auch einfach
Agenda
Software TestsABAP CheckpointsABAP UnitGui ScriptingTestautomation 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
Skriptentwicklung
• Aufzeichnung der Transaktion erzeugt VBS-Script-File
… es geht auch einfach
Agenda
Software TestsABAP CheckpointsABAP UnitGui ScriptingTestautomation mit eCATT
… es geht auch einfach
Mensch oder MaschineIntelligenz/KreativitätFinden von WorkaroundsHoher PersonaleinsatzZeitaufwändigGeringe WiederverwendbarkeitGeringe Reproduzierbarkeit
Geringer PersonaleinsatzSchneller als manuelle TestsWiederverwendbarReproduzierbare FehlerMaschine ist dummSchulungsaufwand ToolsAufwand 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
TestskriptFolge von Kommandos für den Testablauf
Testdaten-ContainerWieder verwendbare Datensätze für die
Testausführung
Systemdaten-ContainerListe 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
AttributeImport
Export
… es geht auch einfach
eCATT – Testskriptfolge
Testskript(Create Activity)
Testskript(Create Partner)
Testskript(Check Data)
… es geht auch einfach
Testskript
eCATT – Testskriptfolge
TestskriptTestskript Testskript
… es geht auch einfach
eCATT – Skripteditor
Parameter
Skriptbefehle
Kommando-schnittstelle
… 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 – TestdatenTestdaten werden über Testkonfigurationen bereitgestelltErfassung erfolgt manuell oder über Textfile (Excel) möglich
Testkonfiguration
Excel Filemanuell erfasst Testskript
Impo
rt P
aram
eter
… es geht auch einfach
Test Workbench
Test PlanTest 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
… es geht auch einfach
• 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
User in eCATT Tests