ABAPCodeRetreat 23.7.2016 - TDD

Post on 11-Apr-2017

275 views 2 download

Transcript of ABAPCodeRetreat 23.7.2016 - TDD

Deutschsprachige SAP® Anwendergruppe

Test Driven Development in ABAP

Christian Drumm, FACTUR Billing Solutions GmbHThomas Fiedler, SAP SE

Agile Software Development

Agile principles

Agile processes

Agile methods

Re-factoring Scrum

Continuous

Integration

XP…

Kanban

Pair pro-gramming

Unit Tests

Test driven

development

3

Test Driven Development – Introduction

Approach1. Implement test2. Implement application logic3. Refactor

Advantages> Software architecture > Quality> Maintainability > Tests as documentation

Red

Green

Refactor

4

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

5

Test Driven Development – Examples

Data access and business logic mixed within one method.

6

Test Driven Development – Examples

Simple unit test.

7

Test Driven Development – Examples

Data access using a data access class and preparation for dependency injection.

Mock implementation of data access class.

8

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

9

The biggest issue when writing Unit Tests

Unit Test Application Code

Dependent Components

Configuration

User Interface

Customizing

Database access

Remote Call

Unknown Functions

10

The biggest issue when writing Unit Tests

Unit Test Application Code

Dependent Components

Configuration

User Interface

Customizing

Database access

Remote Call

Unknown Functions

Mocking

11

Example: Currency Conversion

Conversion-rate

Application

Currency Converter

Unit Test Mock

12

Code Example (Application Code)

„Dependency Injection“ to control dependencies between components

Decoupling via interfaces

13

Code Example (Test Code)

14

Code Example (Test Code with Mock)

SAP Test Double Framework

15

What about Legacy Code ?

16

Application Code Test Code

Code Example (Legacy Code)

17

Application Code Test Code

Code Replacement via Test-SeamsLab preview

18

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

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 34aD-69190 Walldorf

Tel.: +49-(0)6227-358 09-58Fax: +49-(0)6227-358 09-59E-Mail: info@dsag.deWeb: www.dsag.de

DSAG in ÖsterreichTel.: +43-(0)1-310 13 76E-Mail: info@dsag.at Web: www.dsag.at

DSAG in der SchweizTel.: +41-(0)31-311 10 03E-Mail: info@dsag-ev.chWeb: www.dsag-ev.ch

© DSAG e.V.

Kontakt DSAG