ABAPCodeRetreat 23.7.2016 - TDD

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

Transcript of ABAPCodeRetreat 23.7.2016 - TDD

Page 1: ABAPCodeRetreat 23.7.2016 - TDD

Deutschsprachige SAP® Anwendergruppe

Test Driven Development in ABAP

Christian Drumm, FACTUR Billing Solutions GmbHThomas Fiedler, SAP SE

Page 2: ABAPCodeRetreat 23.7.2016 - TDD

Agile Software Development

Agile principles

Agile processes

Agile methods

Re-factoring Scrum

Continuous

Integration

XP…

Kanban

Pair pro-gramming

Unit Tests

Test driven

development

Page 3: ABAPCodeRetreat 23.7.2016 - TDD

3

Test Driven Development – Introduction

Approach1. Implement test2. Implement application logic3. Refactor

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

Red

Green

Refactor

Page 4: ABAPCodeRetreat 23.7.2016 - TDD

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

Page 5: ABAPCodeRetreat 23.7.2016 - TDD

5

Test Driven Development – Examples

Data access and business logic mixed within one method.

Page 6: ABAPCodeRetreat 23.7.2016 - TDD

6

Test Driven Development – Examples

Simple unit test.

Page 7: ABAPCodeRetreat 23.7.2016 - TDD

7

Test Driven Development – Examples

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

Mock implementation of data access class.

Page 8: ABAPCodeRetreat 23.7.2016 - TDD

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

Page 9: ABAPCodeRetreat 23.7.2016 - TDD

9

The biggest issue when writing Unit Tests

Unit Test Application Code

Dependent Components

Configuration

User Interface

Customizing

Database access

Remote Call

Unknown Functions

Page 10: ABAPCodeRetreat 23.7.2016 - TDD

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

Page 11: ABAPCodeRetreat 23.7.2016 - TDD

11

Example: Currency Conversion

Conversion-rate

Application

Currency Converter

Unit Test Mock

Page 12: ABAPCodeRetreat 23.7.2016 - TDD

12

Code Example (Application Code)

„Dependency Injection“ to control dependencies between components

Decoupling via interfaces

Page 13: ABAPCodeRetreat 23.7.2016 - TDD

13

Code Example (Test Code)

Page 14: ABAPCodeRetreat 23.7.2016 - TDD

14

Code Example (Test Code with Mock)

SAP Test Double Framework

Page 15: ABAPCodeRetreat 23.7.2016 - TDD

15

What about Legacy Code ?

Page 16: ABAPCodeRetreat 23.7.2016 - TDD

16

Application Code Test Code

Code Example (Legacy Code)

Page 17: ABAPCodeRetreat 23.7.2016 - TDD

17

Application Code Test Code

Code Replacement via Test-SeamsLab preview

Page 18: ABAPCodeRetreat 23.7.2016 - TDD

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

Page 19: ABAPCodeRetreat 23.7.2016 - TDD

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: [email protected]: www.dsag.de

DSAG in ÖsterreichTel.: +43-(0)1-310 13 76E-Mail: [email protected] Web: www.dsag.at

DSAG in der SchweizTel.: +41-(0)31-311 10 03E-Mail: [email protected]: www.dsag-ev.ch

© DSAG e.V.

Kontakt DSAG