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