53
… es geht auch einfach Funktionstests in SAP Assertations & Breakopints, ABAP Unit und eCATT

Funktionstests im SAP - cadaxo.com · • Der Start von eCATT Testscripts kann je Mandant aktiviert werden – eCATT und CATT nicht erlaubt – eCATT und CATT erlaubt

Embed Size (px)

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 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

Breakpoints

BREAK-POINT.

BREAK-POINT ID HUGO.

BREAK ‘USERNAME‘.

… es geht auch einfach

Logpoints

LOG-POINT ID HUGO.

… 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

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 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

• 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 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

Skriptentwicklung

• Aufzeichnung der Transaktion erzeugt VBS-Script-File

… 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

Testskript

eCATT – Testskriptfolge

Testskript Testskript 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 – 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

… 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