Winfried Schwarzmann
Test-Driven Development with ABAP Objects
Winfried Schwarzmann
Test-Driven Development with ABAP Objects
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Better, cleaner code-every developer's dream. Test-driven development is how you'll achieve it! From creating a robust test infrastructure to designing methods, classes, and packages that will stand the test of time, this book provides in-depth instructions for revitalizing your programming. Whether you're writing new code or fixing legacy code, you'll learn to select test cases, use test doubles, and generate test data. With information on agile methodology to round out the development process, you'll have all the tools you need!
Highlights:
1. Object-oriented design 2. Refactoring…mehr
Andere Kunden interessierten sich auch für
- Lutz BaumbuschABAP RESTful Application Programming Model67,99 €
- Kiran BandariComplete ABAP74,99 €
- Winfried SchwarzmannAgile ABAP-Entwicklung79,90 €
- Paul HardyABAP to the Future86,90 €
- Gairik AcharyaABAP in the Cloud65,99 €
- Leon HassanVisual Studio Code for SAP65,99 €
- Rene GlavanovitsSAP Fiori Elements74,99 €
-
-
-
Better, cleaner code-every developer's dream. Test-driven development is how you'll achieve it! From creating a robust test infrastructure to designing methods, classes, and packages that will stand the test of time, this book provides in-depth instructions for revitalizing your programming. Whether you're writing new code or fixing legacy code, you'll learn to select test cases, use test doubles, and generate test data. With information on agile methodology to round out the development process, you'll have all the tools you need!
Highlights:
1. Object-oriented design
2. Refactoring legacy code
3. Test-driven maintenance
4. Test infrastructure
5. Test pyramid
6. Test code design pattern
7. Global test doubles
8. Test class hierarchies
9. Test data classes
10. ABAP Development Tools (ADT)
11. Agile development
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Highlights:
1. Object-oriented design
2. Refactoring legacy code
3. Test-driven maintenance
4. Test infrastructure
5. Test pyramid
6. Test code design pattern
7. Global test doubles
8. Test class hierarchies
9. Test data classes
10. ABAP Development Tools (ADT)
11. Agile development
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- SAP PRESS Englisch
- Verlag: Rheinwerk Verlag / SAP PRESS
- Artikelnr. des Verlages: 459/21832
- Seitenzahl: 594
- Erscheinungstermin: 24. September 2019
- Englisch
- Abmessung: 236mm x 185mm x 43mm
- Gewicht: 1228g
- ISBN-13: 9781493218325
- ISBN-10: 1493218328
- Artikelnr.: 56478744
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
- SAP PRESS Englisch
- Verlag: Rheinwerk Verlag / SAP PRESS
- Artikelnr. des Verlages: 459/21832
- Seitenzahl: 594
- Erscheinungstermin: 24. September 2019
- Englisch
- Abmessung: 236mm x 185mm x 43mm
- Gewicht: 1228g
- ISBN-13: 9781493218325
- ISBN-10: 1493218328
- Artikelnr.: 56478744
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
... Foreword ... 23
... Preface ... 25
... Continuous Improvements ... 25
... Agile Methods ... 26
... Target Groups and Prerequisites ... 26
... Structure of the Book ... 27
... Information Boxes ... 30
... Limitations ... 30
... Acknowledgments ... 31
1 ... Introduction ... 33
1.1 ... Sustainability: Development and Maintenance with a Test Infrastructure ... 34
1.2 ... Agility: Practices of Agile Software Engineering ... 39
1.3 ... Efficiency: Compliance with Design Principles ... 40
1.4 ... Effectivity: Communication with Diagrams ... 44
1.5 ... Summary ... 46
PART I ... Building a Test Infrastructure ... 47
2 ... The Sample Application ... 49
2.1 ... Master Data Management ... 50
2.2 ... User Interface ... 52
2.3 ... Backend ... 54
2.4 ... Summary ... 56
3 ... Code-Based Test Improvement ... 57
3.1 ... Introduction to the Test Code ... 57
3.2 ... General Clean Code Principles ... 70
3.3 ... Test-Oriented Clean Code Principles ... 79
3.4 ... Summary ... 86
4 ... Design-Based Test Improvement ... 87
4.1 ... Base Classes of Test Classes ... 87
4.2 ... Usage of Help Classes by Test Classes ... 93
4.3 ... Summary ... 100
5 ... Robust Integration Test ... 103
5.1 ... Improvement Process ... 103
5.2 ... Independence of Test Methods ... 104
5.3 ... Repeatability of Test Methods ... 108
5.4 ... Summary ... 116
6 ... Minimizing Dependencies ... 117
6.1 ... Simplification of Use ... 118
6.2 ... Segregation of Use ... 125
6.3 ... Independence of Creations ... 129
6.4 ... Independence of Extensions ... 135
6.5 ... Summary ... 139
7 ... Isolated Component Test ... 141
7.1 ... Transforming the Integration Test ... 142
7.2 ... Scaling with a Test Language ... 154
7.3 ... Test-Driven Development ... 161
7.4 ... Liskov Substitution Principle ... 165
7.5 ... Summary ... 167
8 ... Redesign with Unit Tests ... 169
8.1 ... Object-Oriented API for Entities ... 171
8.2 ... Highlighting Changes as an Independent Component ... 174
8.3 ... Tests for the Highlight Changes Class ... 182
8.4 ... Summary ... 187
PART II ... Test-Oriented ABAP Design ... 189
9 ... Designing Methods ... 191
9.1 ... Rules for Implementing Methods ... 192
9.2 ... Rules for Method Signatures ... 200
9.3 ... Summary ... 213
10 ... Designing Classes ... 215
10.1 ... Creation of an Object by Its Class ... 216
10.2 ... Creation of an Object by a Factory Class ... 219
10.3 ... Types of Dependencies between Classes ... 222
10.4 ... Interfaces of a Class ... 225
10.5 ... Levels of Abstraction within a Class ... 228
10.6 ... Catalog Design Pattern ... 235
10.7 ... Cohesion ... 237
10.8 ... Summary ... 242
11 ... Designing Packages ... 245
11.1 ... Package Concept ... 245
11.2 ... Product Packages ... 251
11.3 ... Test Packages ... 253
11.4 ... Summary ... 255
12 ... Test Cases ... 257
12.1 ... Test Design ... 257
12.2 ... Test Pyramid ... 261
12.3 ... Test Coverage ... 264
12.4 ... Summary ... 266
13 ... Test Doubles ... 267
13.1 ... Advantages of Test Doubles ... 267
13.2 ... Specifying Test Doubles ... 271
13.3 ... Designing Test Doubles ... 277
13.4 ... Injecting Test Doubles ... 282
13.5 ... Summary ... 296
14 ... Global Test Doubles ... 297
14.1 ... Test Double for a Method ... 298
14.2 ... Test Double for Two Methods ... 303
14.3 ... Method Doubles and Their Combinations ... 309
14.4 ... Globalizing Test Doubles ... 316
14.5 ... Designing Global Test Doubles ... 318
14.6 ... Adapting the Design of Global Test Doubles ... 320
14.7 ... Summary ... 325
15 ... Test Classes ... 327
15.1 ... ABAP Unit Test Framework ... 327
15.2 ... Local Test Classes ... 329
15.3 ... Design Patterns for Test Classes ... 332
15.4 ... Test Class Hierarchies ... 335
15.5 ... Global Test Classes ... 339
15.6 ... Summary ... 342
16 ... Test Data ... 343
16.1 ... Test Data Container ... 343
16.2 ... Test Data Objects ... 352
16.3 ... Summary ... 362
17 ... Test Infrastructures ... 363
17.1 ... Components of Test Infrastructures ... 363
17.2 ... Application Scenarios for a Global Test Infrastructure ... 365
17.3 ... Development Processes Using a Test Infrastructure ... 370
17.4 ... Summary ... 373
PART III ... Agile Development of a New Application ... 375
18 ... Preparation for Test-Driven Development ... 377
18.1 ... Specification of the Sample Application ... 378
18.2 ... Architecture and Design of the Sample Application ... 380
18.3 ... Test Strategy for the Sample Application ... 385
18.4 ... Skeleton of the Sample Application ... 388
18.5 ... Summary ... 401
19 ... Test-Driven Development ... 403
19.1 ... Acceptance Test-Driven Development ... 403
19.2 ... Component Test-Driven Development ... 406
19.3 ... Unit Test-Driven Development ... 411
19.4 ... Completion and Improvement of the First Acceptance Test ... 414
19.5 ... Extension of the Acceptance Test Suite ... 418
19.6 ... Summary ... 425
PART IV ... Agile Methodology ... 427
20 ... Scrum ... 429
20.1 ... Artifacts ... 430
20.2 ... Roles ... 436
20.3 ... Meetings ... 437
20.4 ... Characteristics ... 442
20.5 ... Summary ... 443
21 ... Agile Software Engineering ... 445
21.1 ... Refactoring ... 445
21.2 ... Test-Driven Development ... 449
21.3 ... Pair Programming ... 453
21.4 ... Walking Skeleton ... 459
21.5 ... Shared Code Ownership ... 465
21.6 ... Continuous Integration ... 470
21.7 ... Summary ... 473
22 ... Lean Development Model ... 475
22.1 ... Basics ... 475
22.2 ... Implementing Lean Principles with Agile Software Engineering ... 477
22.3 ... Test Infrastructure ... 479
22.4 ... Summary ... 480
23 ... Team Development ... 481
23.1 ... Sustainable Learning ... 481
23.2 ... Learning Gaps ... 484
23.3 ... Agile Coaching ... 487
23.4 ... Network for Agile Coaching ... 494
23.5 ... Summary ... 495
24 ... Backlog Development ... 497
24.1 ... Design Thinking ... 498
24.2 ... User Story Mapping ... 503
24.3 ... Summary ... 506
25 ... Product Development ... 509
25.1 ... Sustainable Development ... 510
25.2 ... Development Strategies for Legacy Code ... 513
25.3 ... Development Strategies for New Code ... 514
25.4 ... Summary ... 516
PART V ... Test-Oriented ABAP Tools ... 517
26 ... ABAP Unit ... 519
26.1 ... CL_ABAP_UNIT_ASSERT Class ... 519
26.2 ... Execution of Tests ... 525
26.3 ... Development Objects ... 530
26.4 ... Summary ... 532
27 ... ABAP Development Tools ... 535
27.1 ... Introduction ... 535
27.2 ... Test-Driven Development with ABAP Development Tools ... 539
27.3 ... Summary ... 557
28 ... ABAP Tools for Test Isolation ... 559
28.1 ... Sample Class ... 559
28.2 ... Open SQL Test Double Framework ... 562
28.3 ... Test Seams ... 565
28.4 ... ABAP Test Double Framework ... 568
28.5 ... Summary ... 571
... Appendices ... 573
A ... Naming Conventions for ABAP Code ... 575
B ... Bibliography ... 579
C ... The Author ... 581
... Index ... 583
... Preface ... 25
... Continuous Improvements ... 25
... Agile Methods ... 26
... Target Groups and Prerequisites ... 26
... Structure of the Book ... 27
... Information Boxes ... 30
... Limitations ... 30
... Acknowledgments ... 31
1 ... Introduction ... 33
1.1 ... Sustainability: Development and Maintenance with a Test Infrastructure ... 34
1.2 ... Agility: Practices of Agile Software Engineering ... 39
1.3 ... Efficiency: Compliance with Design Principles ... 40
1.4 ... Effectivity: Communication with Diagrams ... 44
1.5 ... Summary ... 46
PART I ... Building a Test Infrastructure ... 47
2 ... The Sample Application ... 49
2.1 ... Master Data Management ... 50
2.2 ... User Interface ... 52
2.3 ... Backend ... 54
2.4 ... Summary ... 56
3 ... Code-Based Test Improvement ... 57
3.1 ... Introduction to the Test Code ... 57
3.2 ... General Clean Code Principles ... 70
3.3 ... Test-Oriented Clean Code Principles ... 79
3.4 ... Summary ... 86
4 ... Design-Based Test Improvement ... 87
4.1 ... Base Classes of Test Classes ... 87
4.2 ... Usage of Help Classes by Test Classes ... 93
4.3 ... Summary ... 100
5 ... Robust Integration Test ... 103
5.1 ... Improvement Process ... 103
5.2 ... Independence of Test Methods ... 104
5.3 ... Repeatability of Test Methods ... 108
5.4 ... Summary ... 116
6 ... Minimizing Dependencies ... 117
6.1 ... Simplification of Use ... 118
6.2 ... Segregation of Use ... 125
6.3 ... Independence of Creations ... 129
6.4 ... Independence of Extensions ... 135
6.5 ... Summary ... 139
7 ... Isolated Component Test ... 141
7.1 ... Transforming the Integration Test ... 142
7.2 ... Scaling with a Test Language ... 154
7.3 ... Test-Driven Development ... 161
7.4 ... Liskov Substitution Principle ... 165
7.5 ... Summary ... 167
8 ... Redesign with Unit Tests ... 169
8.1 ... Object-Oriented API for Entities ... 171
8.2 ... Highlighting Changes as an Independent Component ... 174
8.3 ... Tests for the Highlight Changes Class ... 182
8.4 ... Summary ... 187
PART II ... Test-Oriented ABAP Design ... 189
9 ... Designing Methods ... 191
9.1 ... Rules for Implementing Methods ... 192
9.2 ... Rules for Method Signatures ... 200
9.3 ... Summary ... 213
10 ... Designing Classes ... 215
10.1 ... Creation of an Object by Its Class ... 216
10.2 ... Creation of an Object by a Factory Class ... 219
10.3 ... Types of Dependencies between Classes ... 222
10.4 ... Interfaces of a Class ... 225
10.5 ... Levels of Abstraction within a Class ... 228
10.6 ... Catalog Design Pattern ... 235
10.7 ... Cohesion ... 237
10.8 ... Summary ... 242
11 ... Designing Packages ... 245
11.1 ... Package Concept ... 245
11.2 ... Product Packages ... 251
11.3 ... Test Packages ... 253
11.4 ... Summary ... 255
12 ... Test Cases ... 257
12.1 ... Test Design ... 257
12.2 ... Test Pyramid ... 261
12.3 ... Test Coverage ... 264
12.4 ... Summary ... 266
13 ... Test Doubles ... 267
13.1 ... Advantages of Test Doubles ... 267
13.2 ... Specifying Test Doubles ... 271
13.3 ... Designing Test Doubles ... 277
13.4 ... Injecting Test Doubles ... 282
13.5 ... Summary ... 296
14 ... Global Test Doubles ... 297
14.1 ... Test Double for a Method ... 298
14.2 ... Test Double for Two Methods ... 303
14.3 ... Method Doubles and Their Combinations ... 309
14.4 ... Globalizing Test Doubles ... 316
14.5 ... Designing Global Test Doubles ... 318
14.6 ... Adapting the Design of Global Test Doubles ... 320
14.7 ... Summary ... 325
15 ... Test Classes ... 327
15.1 ... ABAP Unit Test Framework ... 327
15.2 ... Local Test Classes ... 329
15.3 ... Design Patterns for Test Classes ... 332
15.4 ... Test Class Hierarchies ... 335
15.5 ... Global Test Classes ... 339
15.6 ... Summary ... 342
16 ... Test Data ... 343
16.1 ... Test Data Container ... 343
16.2 ... Test Data Objects ... 352
16.3 ... Summary ... 362
17 ... Test Infrastructures ... 363
17.1 ... Components of Test Infrastructures ... 363
17.2 ... Application Scenarios for a Global Test Infrastructure ... 365
17.3 ... Development Processes Using a Test Infrastructure ... 370
17.4 ... Summary ... 373
PART III ... Agile Development of a New Application ... 375
18 ... Preparation for Test-Driven Development ... 377
18.1 ... Specification of the Sample Application ... 378
18.2 ... Architecture and Design of the Sample Application ... 380
18.3 ... Test Strategy for the Sample Application ... 385
18.4 ... Skeleton of the Sample Application ... 388
18.5 ... Summary ... 401
19 ... Test-Driven Development ... 403
19.1 ... Acceptance Test-Driven Development ... 403
19.2 ... Component Test-Driven Development ... 406
19.3 ... Unit Test-Driven Development ... 411
19.4 ... Completion and Improvement of the First Acceptance Test ... 414
19.5 ... Extension of the Acceptance Test Suite ... 418
19.6 ... Summary ... 425
PART IV ... Agile Methodology ... 427
20 ... Scrum ... 429
20.1 ... Artifacts ... 430
20.2 ... Roles ... 436
20.3 ... Meetings ... 437
20.4 ... Characteristics ... 442
20.5 ... Summary ... 443
21 ... Agile Software Engineering ... 445
21.1 ... Refactoring ... 445
21.2 ... Test-Driven Development ... 449
21.3 ... Pair Programming ... 453
21.4 ... Walking Skeleton ... 459
21.5 ... Shared Code Ownership ... 465
21.6 ... Continuous Integration ... 470
21.7 ... Summary ... 473
22 ... Lean Development Model ... 475
22.1 ... Basics ... 475
22.2 ... Implementing Lean Principles with Agile Software Engineering ... 477
22.3 ... Test Infrastructure ... 479
22.4 ... Summary ... 480
23 ... Team Development ... 481
23.1 ... Sustainable Learning ... 481
23.2 ... Learning Gaps ... 484
23.3 ... Agile Coaching ... 487
23.4 ... Network for Agile Coaching ... 494
23.5 ... Summary ... 495
24 ... Backlog Development ... 497
24.1 ... Design Thinking ... 498
24.2 ... User Story Mapping ... 503
24.3 ... Summary ... 506
25 ... Product Development ... 509
25.1 ... Sustainable Development ... 510
25.2 ... Development Strategies for Legacy Code ... 513
25.3 ... Development Strategies for New Code ... 514
25.4 ... Summary ... 516
PART V ... Test-Oriented ABAP Tools ... 517
26 ... ABAP Unit ... 519
26.1 ... CL_ABAP_UNIT_ASSERT Class ... 519
26.2 ... Execution of Tests ... 525
26.3 ... Development Objects ... 530
26.4 ... Summary ... 532
27 ... ABAP Development Tools ... 535
27.1 ... Introduction ... 535
27.2 ... Test-Driven Development with ABAP Development Tools ... 539
27.3 ... Summary ... 557
28 ... ABAP Tools for Test Isolation ... 559
28.1 ... Sample Class ... 559
28.2 ... Open SQL Test Double Framework ... 562
28.3 ... Test Seams ... 565
28.4 ... ABAP Test Double Framework ... 568
28.5 ... Summary ... 571
... Appendices ... 573
A ... Naming Conventions for ABAP Code ... 575
B ... Bibliography ... 579
C ... The Author ... 581
... Index ... 583
... Foreword ... 23
... Preface ... 25
... Continuous Improvements ... 25
... Agile Methods ... 26
... Target Groups and Prerequisites ... 26
... Structure of the Book ... 27
... Information Boxes ... 30
... Limitations ... 30
... Acknowledgments ... 31
1 ... Introduction ... 33
1.1 ... Sustainability: Development and Maintenance with a Test Infrastructure ... 34
1.2 ... Agility: Practices of Agile Software Engineering ... 39
1.3 ... Efficiency: Compliance with Design Principles ... 40
1.4 ... Effectivity: Communication with Diagrams ... 44
1.5 ... Summary ... 46
PART I ... Building a Test Infrastructure ... 47
2 ... The Sample Application ... 49
2.1 ... Master Data Management ... 50
2.2 ... User Interface ... 52
2.3 ... Backend ... 54
2.4 ... Summary ... 56
3 ... Code-Based Test Improvement ... 57
3.1 ... Introduction to the Test Code ... 57
3.2 ... General Clean Code Principles ... 70
3.3 ... Test-Oriented Clean Code Principles ... 79
3.4 ... Summary ... 86
4 ... Design-Based Test Improvement ... 87
4.1 ... Base Classes of Test Classes ... 87
4.2 ... Usage of Help Classes by Test Classes ... 93
4.3 ... Summary ... 100
5 ... Robust Integration Test ... 103
5.1 ... Improvement Process ... 103
5.2 ... Independence of Test Methods ... 104
5.3 ... Repeatability of Test Methods ... 108
5.4 ... Summary ... 116
6 ... Minimizing Dependencies ... 117
6.1 ... Simplification of Use ... 118
6.2 ... Segregation of Use ... 125
6.3 ... Independence of Creations ... 129
6.4 ... Independence of Extensions ... 135
6.5 ... Summary ... 139
7 ... Isolated Component Test ... 141
7.1 ... Transforming the Integration Test ... 142
7.2 ... Scaling with a Test Language ... 154
7.3 ... Test-Driven Development ... 161
7.4 ... Liskov Substitution Principle ... 165
7.5 ... Summary ... 167
8 ... Redesign with Unit Tests ... 169
8.1 ... Object-Oriented API for Entities ... 171
8.2 ... Highlighting Changes as an Independent Component ... 174
8.3 ... Tests for the Highlight Changes Class ... 182
8.4 ... Summary ... 187
PART II ... Test-Oriented ABAP Design ... 189
9 ... Designing Methods ... 191
9.1 ... Rules for Implementing Methods ... 192
9.2 ... Rules for Method Signatures ... 200
9.3 ... Summary ... 213
10 ... Designing Classes ... 215
10.1 ... Creation of an Object by Its Class ... 216
10.2 ... Creation of an Object by a Factory Class ... 219
10.3 ... Types of Dependencies between Classes ... 222
10.4 ... Interfaces of a Class ... 225
10.5 ... Levels of Abstraction within a Class ... 228
10.6 ... Catalog Design Pattern ... 235
10.7 ... Cohesion ... 237
10.8 ... Summary ... 242
11 ... Designing Packages ... 245
11.1 ... Package Concept ... 245
11.2 ... Product Packages ... 251
11.3 ... Test Packages ... 253
11.4 ... Summary ... 255
12 ... Test Cases ... 257
12.1 ... Test Design ... 257
12.2 ... Test Pyramid ... 261
12.3 ... Test Coverage ... 264
12.4 ... Summary ... 266
13 ... Test Doubles ... 267
13.1 ... Advantages of Test Doubles ... 267
13.2 ... Specifying Test Doubles ... 271
13.3 ... Designing Test Doubles ... 277
13.4 ... Injecting Test Doubles ... 282
13.5 ... Summary ... 296
14 ... Global Test Doubles ... 297
14.1 ... Test Double for a Method ... 298
14.2 ... Test Double for Two Methods ... 303
14.3 ... Method Doubles and Their Combinations ... 309
14.4 ... Globalizing Test Doubles ... 316
14.5 ... Designing Global Test Doubles ... 318
14.6 ... Adapting the Design of Global Test Doubles ... 320
14.7 ... Summary ... 325
15 ... Test Classes ... 327
15.1 ... ABAP Unit Test Framework ... 327
15.2 ... Local Test Classes ... 329
15.3 ... Design Patterns for Test Classes ... 332
15.4 ... Test Class Hierarchies ... 335
15.5 ... Global Test Classes ... 339
15.6 ... Summary ... 342
16 ... Test Data ... 343
16.1 ... Test Data Container ... 343
16.2 ... Test Data Objects ... 352
16.3 ... Summary ... 362
17 ... Test Infrastructures ... 363
17.1 ... Components of Test Infrastructures ... 363
17.2 ... Application Scenarios for a Global Test Infrastructure ... 365
17.3 ... Development Processes Using a Test Infrastructure ... 370
17.4 ... Summary ... 373
PART III ... Agile Development of a New Application ... 375
18 ... Preparation for Test-Driven Development ... 377
18.1 ... Specification of the Sample Application ... 378
18.2 ... Architecture and Design of the Sample Application ... 380
18.3 ... Test Strategy for the Sample Application ... 385
18.4 ... Skeleton of the Sample Application ... 388
18.5 ... Summary ... 401
19 ... Test-Driven Development ... 403
19.1 ... Acceptance Test-Driven Development ... 403
19.2 ... Component Test-Driven Development ... 406
19.3 ... Unit Test-Driven Development ... 411
19.4 ... Completion and Improvement of the First Acceptance Test ... 414
19.5 ... Extension of the Acceptance Test Suite ... 418
19.6 ... Summary ... 425
PART IV ... Agile Methodology ... 427
20 ... Scrum ... 429
20.1 ... Artifacts ... 430
20.2 ... Roles ... 436
20.3 ... Meetings ... 437
20.4 ... Characteristics ... 442
20.5 ... Summary ... 443
21 ... Agile Software Engineering ... 445
21.1 ... Refactoring ... 445
21.2 ... Test-Driven Development ... 449
21.3 ... Pair Programming ... 453
21.4 ... Walking Skeleton ... 459
21.5 ... Shared Code Ownership ... 465
21.6 ... Continuous Integration ... 470
21.7 ... Summary ... 473
22 ... Lean Development Model ... 475
22.1 ... Basics ... 475
22.2 ... Implementing Lean Principles with Agile Software Engineering ... 477
22.3 ... Test Infrastructure ... 479
22.4 ... Summary ... 480
23 ... Team Development ... 481
23.1 ... Sustainable Learning ... 481
23.2 ... Learning Gaps ... 484
23.3 ... Agile Coaching ... 487
23.4 ... Network for Agile Coaching ... 494
23.5 ... Summary ... 495
24 ... Backlog Development ... 497
24.1 ... Design Thinking ... 498
24.2 ... User Story Mapping ... 503
24.3 ... Summary ... 506
25 ... Product Development ... 509
25.1 ... Sustainable Development ... 510
25.2 ... Development Strategies for Legacy Code ... 513
25.3 ... Development Strategies for New Code ... 514
25.4 ... Summary ... 516
PART V ... Test-Oriented ABAP Tools ... 517
26 ... ABAP Unit ... 519
26.1 ... CL_ABAP_UNIT_ASSERT Class ... 519
26.2 ... Execution of Tests ... 525
26.3 ... Development Objects ... 530
26.4 ... Summary ... 532
27 ... ABAP Development Tools ... 535
27.1 ... Introduction ... 535
27.2 ... Test-Driven Development with ABAP Development Tools ... 539
27.3 ... Summary ... 557
28 ... ABAP Tools for Test Isolation ... 559
28.1 ... Sample Class ... 559
28.2 ... Open SQL Test Double Framework ... 562
28.3 ... Test Seams ... 565
28.4 ... ABAP Test Double Framework ... 568
28.5 ... Summary ... 571
... Appendices ... 573
A ... Naming Conventions for ABAP Code ... 575
B ... Bibliography ... 579
C ... The Author ... 581
... Index ... 583
... Preface ... 25
... Continuous Improvements ... 25
... Agile Methods ... 26
... Target Groups and Prerequisites ... 26
... Structure of the Book ... 27
... Information Boxes ... 30
... Limitations ... 30
... Acknowledgments ... 31
1 ... Introduction ... 33
1.1 ... Sustainability: Development and Maintenance with a Test Infrastructure ... 34
1.2 ... Agility: Practices of Agile Software Engineering ... 39
1.3 ... Efficiency: Compliance with Design Principles ... 40
1.4 ... Effectivity: Communication with Diagrams ... 44
1.5 ... Summary ... 46
PART I ... Building a Test Infrastructure ... 47
2 ... The Sample Application ... 49
2.1 ... Master Data Management ... 50
2.2 ... User Interface ... 52
2.3 ... Backend ... 54
2.4 ... Summary ... 56
3 ... Code-Based Test Improvement ... 57
3.1 ... Introduction to the Test Code ... 57
3.2 ... General Clean Code Principles ... 70
3.3 ... Test-Oriented Clean Code Principles ... 79
3.4 ... Summary ... 86
4 ... Design-Based Test Improvement ... 87
4.1 ... Base Classes of Test Classes ... 87
4.2 ... Usage of Help Classes by Test Classes ... 93
4.3 ... Summary ... 100
5 ... Robust Integration Test ... 103
5.1 ... Improvement Process ... 103
5.2 ... Independence of Test Methods ... 104
5.3 ... Repeatability of Test Methods ... 108
5.4 ... Summary ... 116
6 ... Minimizing Dependencies ... 117
6.1 ... Simplification of Use ... 118
6.2 ... Segregation of Use ... 125
6.3 ... Independence of Creations ... 129
6.4 ... Independence of Extensions ... 135
6.5 ... Summary ... 139
7 ... Isolated Component Test ... 141
7.1 ... Transforming the Integration Test ... 142
7.2 ... Scaling with a Test Language ... 154
7.3 ... Test-Driven Development ... 161
7.4 ... Liskov Substitution Principle ... 165
7.5 ... Summary ... 167
8 ... Redesign with Unit Tests ... 169
8.1 ... Object-Oriented API for Entities ... 171
8.2 ... Highlighting Changes as an Independent Component ... 174
8.3 ... Tests for the Highlight Changes Class ... 182
8.4 ... Summary ... 187
PART II ... Test-Oriented ABAP Design ... 189
9 ... Designing Methods ... 191
9.1 ... Rules for Implementing Methods ... 192
9.2 ... Rules for Method Signatures ... 200
9.3 ... Summary ... 213
10 ... Designing Classes ... 215
10.1 ... Creation of an Object by Its Class ... 216
10.2 ... Creation of an Object by a Factory Class ... 219
10.3 ... Types of Dependencies between Classes ... 222
10.4 ... Interfaces of a Class ... 225
10.5 ... Levels of Abstraction within a Class ... 228
10.6 ... Catalog Design Pattern ... 235
10.7 ... Cohesion ... 237
10.8 ... Summary ... 242
11 ... Designing Packages ... 245
11.1 ... Package Concept ... 245
11.2 ... Product Packages ... 251
11.3 ... Test Packages ... 253
11.4 ... Summary ... 255
12 ... Test Cases ... 257
12.1 ... Test Design ... 257
12.2 ... Test Pyramid ... 261
12.3 ... Test Coverage ... 264
12.4 ... Summary ... 266
13 ... Test Doubles ... 267
13.1 ... Advantages of Test Doubles ... 267
13.2 ... Specifying Test Doubles ... 271
13.3 ... Designing Test Doubles ... 277
13.4 ... Injecting Test Doubles ... 282
13.5 ... Summary ... 296
14 ... Global Test Doubles ... 297
14.1 ... Test Double for a Method ... 298
14.2 ... Test Double for Two Methods ... 303
14.3 ... Method Doubles and Their Combinations ... 309
14.4 ... Globalizing Test Doubles ... 316
14.5 ... Designing Global Test Doubles ... 318
14.6 ... Adapting the Design of Global Test Doubles ... 320
14.7 ... Summary ... 325
15 ... Test Classes ... 327
15.1 ... ABAP Unit Test Framework ... 327
15.2 ... Local Test Classes ... 329
15.3 ... Design Patterns for Test Classes ... 332
15.4 ... Test Class Hierarchies ... 335
15.5 ... Global Test Classes ... 339
15.6 ... Summary ... 342
16 ... Test Data ... 343
16.1 ... Test Data Container ... 343
16.2 ... Test Data Objects ... 352
16.3 ... Summary ... 362
17 ... Test Infrastructures ... 363
17.1 ... Components of Test Infrastructures ... 363
17.2 ... Application Scenarios for a Global Test Infrastructure ... 365
17.3 ... Development Processes Using a Test Infrastructure ... 370
17.4 ... Summary ... 373
PART III ... Agile Development of a New Application ... 375
18 ... Preparation for Test-Driven Development ... 377
18.1 ... Specification of the Sample Application ... 378
18.2 ... Architecture and Design of the Sample Application ... 380
18.3 ... Test Strategy for the Sample Application ... 385
18.4 ... Skeleton of the Sample Application ... 388
18.5 ... Summary ... 401
19 ... Test-Driven Development ... 403
19.1 ... Acceptance Test-Driven Development ... 403
19.2 ... Component Test-Driven Development ... 406
19.3 ... Unit Test-Driven Development ... 411
19.4 ... Completion and Improvement of the First Acceptance Test ... 414
19.5 ... Extension of the Acceptance Test Suite ... 418
19.6 ... Summary ... 425
PART IV ... Agile Methodology ... 427
20 ... Scrum ... 429
20.1 ... Artifacts ... 430
20.2 ... Roles ... 436
20.3 ... Meetings ... 437
20.4 ... Characteristics ... 442
20.5 ... Summary ... 443
21 ... Agile Software Engineering ... 445
21.1 ... Refactoring ... 445
21.2 ... Test-Driven Development ... 449
21.3 ... Pair Programming ... 453
21.4 ... Walking Skeleton ... 459
21.5 ... Shared Code Ownership ... 465
21.6 ... Continuous Integration ... 470
21.7 ... Summary ... 473
22 ... Lean Development Model ... 475
22.1 ... Basics ... 475
22.2 ... Implementing Lean Principles with Agile Software Engineering ... 477
22.3 ... Test Infrastructure ... 479
22.4 ... Summary ... 480
23 ... Team Development ... 481
23.1 ... Sustainable Learning ... 481
23.2 ... Learning Gaps ... 484
23.3 ... Agile Coaching ... 487
23.4 ... Network for Agile Coaching ... 494
23.5 ... Summary ... 495
24 ... Backlog Development ... 497
24.1 ... Design Thinking ... 498
24.2 ... User Story Mapping ... 503
24.3 ... Summary ... 506
25 ... Product Development ... 509
25.1 ... Sustainable Development ... 510
25.2 ... Development Strategies for Legacy Code ... 513
25.3 ... Development Strategies for New Code ... 514
25.4 ... Summary ... 516
PART V ... Test-Oriented ABAP Tools ... 517
26 ... ABAP Unit ... 519
26.1 ... CL_ABAP_UNIT_ASSERT Class ... 519
26.2 ... Execution of Tests ... 525
26.3 ... Development Objects ... 530
26.4 ... Summary ... 532
27 ... ABAP Development Tools ... 535
27.1 ... Introduction ... 535
27.2 ... Test-Driven Development with ABAP Development Tools ... 539
27.3 ... Summary ... 557
28 ... ABAP Tools for Test Isolation ... 559
28.1 ... Sample Class ... 559
28.2 ... Open SQL Test Double Framework ... 562
28.3 ... Test Seams ... 565
28.4 ... ABAP Test Double Framework ... 568
28.5 ... Summary ... 571
... Appendices ... 573
A ... Naming Conventions for ABAP Code ... 575
B ... Bibliography ... 579
C ... The Author ... 581
... Index ... 583