test driven development #sitfra

19
Deutschsprachige SAP ® Anwendergruppe Test Driven Development in ABAP Christian Drumm, FACTUR Billing Solutions GmbH Thomas Fiedler, SAP SE

Upload: christian-drumm

Post on 17-Jul-2015

516 views

Category:

Software


0 download

TRANSCRIPT

Deutschsprachige SAP® Anwendergruppe

Test Driven Development in ABAP

Christian Drumm, FACTUR Billing Solutions GmbH

Thomas Fiedler, SAP SE

Agile Software Development

Agile principles

Agile processes

Agile methods

Re-

factoringScrum

Continuous

Integration

XP…

Kanban

Pair pro-

gramming

Unit

Tests

Test Driven Development – Introduction

Approach

1. Implement test

2. Implement application logic

3. Refactor

Advantages

> Software architecture

> Quality

> Maintainability

> Tests as documentation

3

Red

GreenRefactor

Test Driven Development – Tools

ABAP Unit

> xUnit implementation in ABAO

test_method1( )

test_method2( )

> setup( ) test_method3( ) teardown( )

test_method4( )

test_methodN( )

Integrated into SE80 and ABAP in Eclipse

> Execute tests on class and package level

> Test coverage analysis

Integrated into ABAP Test Cockpit

4

Test Driven Development – Examples

5

Data access and business logic

mixed within one method.

Test Driven Development – Examples

6

Simple unit test.

Test Driven Development – Examples

7

Data access using a data access

class and preparation for

dependency injection.

Mock implementation of data

access class.

Test Driven Development in practice

Independent developments vs. extensions of the SAP standard

> Usage in independent developments is straightforward

> Usage to extend SAP standard sometimes very difficult (e.g. BAdIS)

Legacy code vs. new code

> TDD only possible for new code

> TDD for legacy code may require fundamental changes to software architecture

Possibility of TDD depends on the used frameworks / APIs

> BOL layer in CRM is very suitable for TDD

> TDD in the context of e.g. the business partner BAPIs is virtually impossible

8

The biggest issue when writing Unit Tests

9

Unit TestApplication

Code

Dependent

Components

Configuration

User Interface

Customizing

Database

access

Remote Call

Unknown

Functions

The biggest issue when writing Unit Tests

10

Unit TestApplication

Code

Dependent

Components

Configuration

User Interface

Customizing

Database

access

Remote Call

Unknown

Functions

Mocking

Example: Currency Conversion

11

Conversion-

rateApplication

Currency

Converter

Unit Test Mock

Code Example (Application Code)

12

„Dependency Injection“ to control

dependencies between

components

Decoupling via interfaces

Code Example (Test Code)

13

Code Example (Test Code with Mock)

14

SAP Test Double

Framework

What about Legacy

Code ?

15

Application Code Test Code

Code Example (Legacy Code)

16

Application Code Test Code

Code Replacement via Test-Seams

17

References

Getting Started with ABAP Testing and Troubleshooting - http://scn.sap.com/docs/DOC-24152

Introdcution to the SAP Test Double Framework - http://scn.sap.com/docs/DOC-61154

ABAP in Eclipse SCN community - http://scn.sap.com/community/abap/eclipse

18

Die vorliegende Präsentation ist urheberrechtlich geschützt (Copyright). Alle Rechte liegen, soweit nicht ausdrücklich anders gekennzeichnet, bei der Deutschsprachigen SAP-Anwendergruppe e. V..

Jedwede unerlaubte Verwendung ist nicht gestattet. Dies gilt insbesondere für die Vervielfältigung, Verbreitung, Übersetzung oder die Verwendung in elektronischen Systemen / digitalen Medien.

Deutschsprachige SAP® Anwendergruppe e.V.

Altrottstraße 34a

D-69190 Walldorf

Tel.: +49-(0)6227-358 09-58

Fax: +49-(0)6227-358 09-59

E-Mail: [email protected]

Web: www.dsag.de

DSAG in Österreich

Tel.: +43-(0)1-310 13 76

E-Mail: [email protected]

Web: www.dsag.at

DSAG in der Schweiz

Tel.: +41-(0)31-311 10 03

E-Mail: [email protected]

Web: www.dsag-ev.ch

© DSAG e.V.

Kontakt DSAG