TDD in the ABAP world - sitNL 2013 edition

36
© 2013 evivax IT Consulting GmbH TDD in the ABAP World Hendrik Neumann #sitNL 2013

description

Test Driven Development with ABAP Unit. The SAP Inside Track Netherlands 2013 edition.

Transcript of TDD in the ABAP world - sitNL 2013 edition

Page 1: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

TDD in the ABAP World Hendrik Neumann

#sitNL 2013

Page 2: TDD in the ABAP world - sitNL 2013 edition

Agenda

(1) Unit Testing & ABAP Unit

(2) Test Driven Development (TDD)

(3) Live Coding

Page 3: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

Unit Testing & ABAP Unit

Page 4: TDD in the ABAP world - sitNL 2013 edition

Unit Testing

Definition

Page 5: TDD in the ABAP world - sitNL 2013 edition

Unit Testing

Unit Testing is a method by which

individual units of source code are

tested to determine if they are fit

to use.

Page 6: TDD in the ABAP world - sitNL 2013 edition

Unit Testing

Unit Testing is a method by which

individual units are e.g.ource code

fittMethods of t Function Modules

fit Function Groups

fiMoModule Pools Function

Functn Reports

Methods

Function Groups

Page 7: TDD in the ABAP world - sitNL 2013 edition

Unit Testing

aim:

Find bugs early

Write once, run often

Effective Tests must be automated

solution:

xUnit Frameworks

Page 8: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

Definition

Page 9: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

Provides an automated solution with no need to write the same tests

many times and no need to remember what should be the result of each

test.

Page 10: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

How does it work?

Page 11: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

setup()

Create object under test common to all tests.

Page 12: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

setup() test_method()

Clear up your mess..

Call object under test – e.g. a public method

with test data.

Page 13: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

setup() test_method()

assert_*()–methods

Verify output of object under test using xUnit‘s

assert methods

Page 14: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

setup() test_method() teardown()

Clear up your mess..

Page 15: TDD in the ABAP world - sitNL 2013 edition

xUnit Framework

setup() test_method() teardown() test_method()

test_method() test_method()

test_method() test_method()

test_method()

Page 16: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

ABAP Unit

Page 17: TDD in the ABAP world - sitNL 2013 edition

ABAP Unit

SAP‘s xUnit implemenation

Page 18: TDD in the ABAP world - sitNL 2013 edition

ABAP Unit

Local test classes for global development artifacts

In Reports, Function Modules and Classes

Not acitve on production systems

Page 19: TDD in the ABAP world - sitNL 2013 edition

ABAP Unit

• Tools integration:

–ABAP Workbench

–Code Inspector Integration

–ABAP Unit Browser

–ABAP Test Cockpit (ATC)

–ABAP in Eclipse

Page 20: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

Test Driven Development

Page 21: TDD in the ABAP world - sitNL 2013 edition

Test Driven Development

• Never

• After you wrote your code

• Before you write your code

When do you write your Unit Tests?

Page 22: TDD in the ABAP world - sitNL 2013 edition

Test Driven Development

• Never

• After you wrote your code

• Before you write your code

When do you write your Unit Tests?

Test Driven Development

Page 23: TDD in the ABAP world - sitNL 2013 edition

Test Driven Development

Test 1st

Page 24: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Test Write a test that expresses how you’ll

use the code and what you need it to do.

Page 25: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Write enough code to get the test to pass,

but no more.

Code

Test

Page 26: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Code

Test

Refactor Clean up the code to remove redundancy and improve the design.

Page 27: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Code

Test

Refactor

Page 28: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Code Test

Refactor

Page 29: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Code

Test Refactor

Page 30: TDD in the ABAP world - sitNL 2013 edition

Test Cycle

Code

Test

Refactor

Page 31: TDD in the ABAP world - sitNL 2013 edition

Code Kata: Roman Numerals

Rules: • smaller number in front of a larger number subtraction • all else addition • put only one smaller number in front of a larger number • ones, tens, hundreds and thousands are separate items

I The numeral one. II is two, III is three.

V The numeral 5. IV is 4, VI is 6, VII is 7, VIII is 8.

X The numeral 10. IX is 9, XI is 11, etc.

L The numeral 50. XL would be 40.

C The numeral 100. C is short for the Latin word Centum, but Century is eaysier to remember ;-)

D The numeral 500.

M The numeral 1000.

Page 32: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

So Long, and Thanks for All the Fish

Any Qs?

Page 33: TDD in the ABAP world - sitNL 2013 edition

© 2013 evivax IT Consulting GmbH

Green Bar Patterns

(hidden track)

Page 34: TDD in the ABAP world - sitNL 2013 edition

Green Bar Patterns

Fake it till you make it

• Start with hardcoded results and wait until tests force them to become real

Page 35: TDD in the ABAP world - sitNL 2013 edition

Green Bar Patterns

Triangulate To Abstraction

• Make the code abstract only when you have two or more examples

Page 36: TDD in the ABAP world - sitNL 2013 edition

Green Bar Patterns

Obvious Implementation

• aka Don‘t be stupid

• If you really know the right way to implement it, do it that way