1
Softwaretest für EntwicklerInnen
Javacream
Softwaretest für EntwicklerInnen
Vorstellungsrunde
2
Javacream
Softwaretest für EntwicklerInnen
Motivation
3
Javacream
Softwaretest für EntwicklerInnen
Warum Testen?
4
Javacream
Softwaretest für EntwicklerInnen
Ein Widerspruch
5
Javacream
Softwaretest für EntwicklerInnen
Die Effizienzkurve
6
Zeit
Effizienz
“Wie viele geschriebene Codezeilen werden im fertigen Produkt übernommen?”
100
50
No Tests
Test-getriebene Entwicklung
Javacream
Softwaretest für EntwicklerInnen
These: “Aus betriebswirtschaftlicher Sicht sind Tests einsparbar”
7
Zeit
Effizienz
“Wie viele geschriebene Codezeilen werden im fertigen Produkt übernommen?”
100
50
No Tests
Test-getriebene Entwicklung
Javacream
Softwaretest für EntwicklerInnen
Methoden der Software-Entwicklung
8
Javacream
Softwaretest für EntwicklerInnen
Die reale Effizienzkurve
9
Zeit
Effizienz
“Wie viele geschriebene Codezeilen werden im fertigen Produkt übernommen?”
100
50
Wasserfall
Agile
Javacream
Softwaretest für EntwicklerInnen
Risiko!
10
Zeit
Effizienz
100
50
Wasserfall
Agil
Javacream
Softwaretest für EntwicklerInnen
Risiko!
11
Zeit
Effizienz
100
50
Wasserfall
Agil
Javacream
Softwaretest für EntwicklerInnen
Warum wird dann nicht oder unbefriedigend getestet?
12
Javacream
Softwaretest für EntwicklerInnen
Testing Frameworks
13
Javacream
Softwaretest für EntwicklerInnen
Formulieren von Tests
14
Best Practice:
Javacream
Softwaretest für EntwicklerInnen
Testframework “xUnit”
15
Javacream
Softwaretest für EntwicklerInnen
Weitere Test-APIs
16
Das ist in der Umsetzung alles andere als trivial, dazu werden hochwertige Sprach-Features genutzt
Javacream
Softwaretest für EntwicklerInnen
ToDo
17
Javacream
Softwaretest für EntwicklerInnen
Lösung
18
Test Fixture
Algorithm
Test Suite
Andere Algorithmen oder Ressourcen
Dependencies
Dummy
Ein Dummy realisiert die Dependencies mit Dummy-Daten
+ liefert damit keine garantiert fachlich konsistente Daten
Ein Mock realisiert die Dependencies mit Daten, die die Test-Suite definiert hat
Mock
Daten
Spy
Decorator
Ein Spy ergänzt den Ablauf des Algorithmus um Test-typische Sequenzen
Javacream
Softwaretest für EntwicklerInnen
Lösung Extended
19
Test Fixture
Algorithm
Test Suite
Andere Algorithmen oder Ressourcen
Dependencies
Dummy
Ein Dummy realisiert die Dependencies mit Dummy-Daten
+ liefert damit keine garantiert fachlich konsistente Daten
Ein Mock realisiert die Dependencies mit Daten, die die Test-Suite definiert hat
Mock
Daten
Spy
Ein Spy ergänzt den Ablauf des Algorithmus um Test-typische Sequenzen
Test Stub
Alternativ-
Implemen-
tierung
Javacream
Softwaretest für EntwicklerInnen
Verbreitung / Einschätzung
20
Javacream
Softwaretest für EntwicklerInnen
Exkurs: Weitere Begriffe
21
Javacream
Softwaretest für EntwicklerInnen
“Was ist Agile?”
22
Javacream
Softwaretest für EntwicklerInnen
Agile und Testen
23
Javacream
Softwaretest für EntwicklerInnen
Behaviour Driven Tests
24
Javacream
Softwaretest für EntwicklerInnen
FitNess
25
1 | Hugo | True |
2 | Emil | False |
FIT
zu testender Algorithmus
1 | Hugo | True |
2 | Fritz | False |
Javacream
Softwaretest für EntwicklerInnen
End to End Tests mit GUI
26
Javacream
Softwaretest für EntwicklerInnen
Details zu xUnit-Frameworks
27
Javacream
Softwaretest für EntwicklerInnen
Was ist denn dieses "xUnit"?
28
Javacream
Softwaretest für EntwicklerInnen
Best Practice zum Schneiden von Tests
29
Javacream
Softwaretest für EntwicklerInnen
Was ist nicht idempotent?
30
Javacream
Softwaretest für EntwicklerInnen
ToDo
31
Javacream
Softwaretest für EntwicklerInnen
Lösungsvorschlag
negative_length_is_invalid, (-1,3,4), (3,-1,4), (3,4,-1), (-1,-1,1), (-1,1,-1), (1,-1,-1), (-1,-1,-1) , Kein Dreieck
0_is_invalid_length, (0,3,4), (3,0,4), (3,4,0), (0,0,1), (0,1,0), (1,0,0), (0,0,0) , Kein Dreieck
2_5_4_is_triangle, (2,5,4), Dreieck
3_3_3_is_equiliteral, (3,3,3), Gleichseitiges Dreieck
3_3_4_is_isoscele, (3,3,4), Gleichschenkliges Dreieck
sum_of_two_sides_is_greater_than_third_side, (2,5,4), (5,4,2), Dreieck
sum_of_two_sides_is_less_or_equal_third_side, (1,2,3), (42,44,1), Kein Dreieck
32
Javacream
Softwaretest für EntwicklerInnen
Exkurs
33
Javacream
Softwaretest für EntwicklerInnen
Bestimmung der Test Coverage
34
Javacream
Softwaretest für EntwicklerInnen
Testen und Anwendungs-Architektur
35
Javacream
Softwaretest für EntwicklerInnen
Wozu “Architektur”?
36
Service
Actor
Test
Triviale Architektur, nichts anderes als die fachliche Sicht auf die Anwendung
Javacream
Softwaretest für EntwicklerInnen
Beispiel
37
BooksService
Actor
Javacream
Softwaretest für EntwicklerInnen
Reale Architektur mit einem technischen Modell
38
Goldene Regel der Architektur
BooksService
Actor
IsbnGeneratorService
Javacream
Softwaretest für EntwicklerInnen
Modularisierung und Test Cases
39
BooksService
Test Case
IsbnGeneratorService
Test Case
Jeder Service kann durch eigene Test Suiten getestet werden
Die Modularisierung erhöht die Testbarkeit der Anwendung
Javacream
Softwaretest für EntwicklerInnen
Test-Case-Kategorien in modularisierten Systemen
40
Hinweis
xUnit ist ein Test Framework und kann sowohl Unit- als auch IntegrationsTests…
Javacream
Softwaretest für EntwicklerInnen
Was ist besser: Unit oder Integration?
41
Javacream
Softwaretest für EntwicklerInnen
Umgang mit Ressourcen
42
Javacream
Softwaretest für EntwicklerInnen
Modell mit Ressourcen
43
BooksService
Test Case
IsbnGeneratorService
Test Case
MySql-DB
RESTful Web Service
Javacream
Softwaretest für EntwicklerInnen
Konsequenzen von System-Tests
44
Javacream
Softwaretest für EntwicklerInnen
Konsequenzen von System-Tests 2
45
Javacream
Softwaretest für EntwicklerInnen
Exkurs
46
"Fehler-Hotspots"
an einer Stelle mit erkanntem Fehler befinden sich häufig weitere Schwachstellen
Javacream
Softwaretest für EntwicklerInnen
ToDo: Test Fixtures
47
BooksService
Test
IsbnGeneratorService
Test
MySql-DB
RESTful Web Service
Javacream
Softwaretest für EntwicklerInnen
Lösung: Template
48
BooksService Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: Template
49
IsbnGeneratorService Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: Test Suites pro Operation
50
BooksService Test Suite
Create Test Suite
FindByIsbn Test Suite
DeleteByIsbn Test Suite
IsbnGeneratorService Test Suite
Next Test Suite
Fixture
Fixture
Javacream
Softwaretest für EntwicklerInnen
Hinweis
51
Javacream
Softwaretest für EntwicklerInnen
Lösung: Unit Test
52
IsbnGeneratorService Test Suite
Next Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: Unit Test
53
IsbnGeneratorService Test Suite
Next Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: System-Test
54
IsbnGeneratorService Test Suite
Next Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: Unit Tests
55
BooksService Test Suite
Create Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: Unit Tests
56
BooksService Test Suite
Fixture
FindByIsbn Test Suite
DeleteByIsbn Test Suite
Javacream
Softwaretest für EntwicklerInnen
Lösung: Integration Test
57
BooksService Test Suite
Create Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: System Test
58
BooksService Test Suite
Create Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: System Tests
59
BooksService Test Suite
Fixture
FindByIsbn Test Suite
isbn_42_finds_book_or_not
DeleteByIsbn Test Suite
Javacream
Softwaretest für EntwicklerInnen
Lösung: Unit Test
60
BooksService Test Suite
Scenario Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Lösung: System Test
61
BooksService Test Suite
Scenario Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Aufsetzen der Test Fixtures
62
Javacream
Softwaretest für EntwicklerInnen
Klassisch
63
Javacream
Softwaretest für EntwicklerInnen
Mocking
64
Javacream
Softwaretest für EntwicklerInnen
Verwendung der Container-Technologie
65
Javacream
Softwaretest für EntwicklerInnen
Verwendung der Container im Testumfeld
66
Test Fixtures können damit viel einfacher in einer "per Test Case"-Variante bereitgestellt werden
Javacream
Softwaretest für EntwicklerInnen
Beispiel
67
Javacream
Softwaretest für EntwicklerInnen
Lösung: Integration Test
68
BooksService Test Suite
Create Test Suite
Fixture
Javacream
Softwaretest für EntwicklerInnen
Heute
69
Javacream
Softwaretest für EntwicklerInnen
Testen und Architektur im Detail
70
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Modell
71
BooksService
IsbnGeneratorService
StoreService
Book
n
1
1
Javacream
Softwaretest für EntwicklerInnen
Beispiel: BooksService-Operations
72
Javacream
Softwaretest für EntwicklerInnen
Beispiel: BooksService-Operations
73
Javacream
Softwaretest für EntwicklerInnen
Beispiel: BooksService-Operations
74
Javacream
Softwaretest für EntwicklerInnen
Beispiel: BooksService-Operations
75
Javacream
Softwaretest für EntwicklerInnen
Beispiel: StoreService-Operations
76
Javacream
Softwaretest für EntwicklerInnen
Beispiel: IsbnGeneratorService-Operations
77
Javacream
Softwaretest für EntwicklerInnen
xUnit-Pseudocode (Sawitzki)
78
storeservice_test_suite:
store_service_get_stock:
Javacream
Softwaretest für EntwicklerInnen
xUnit-Pseudocode (Sawitzki)
79
storeservice_test_suite:
store_service_get_stock:
category = 'books'
item = 'ISBN-1234-dk'
expected_stock = 42
Javacream
Softwaretest für EntwicklerInnen
xUnit-Pseudocode
80
storeservice_test_suite:
store_service_get_stock:
category = ‘books’
item = ‘ISBN-1234-dk’
exprected_stock = 42
stock = get_stock(category, item)
Javacream
Softwaretest für EntwicklerInnen
xUnit-Pseudocode
81
storeservice_test_suite:
store_service_get_stock:
category = ‘books’
item = ‘ISBN-1234-dk’
expected_stock = 42
stock = get_stock(category, item)
assert_equals(expected_stock, stock)
Javacream
Softwaretest für EntwicklerInnen
xUnit-Pseudocode
82
Javacream
Softwaretest für EntwicklerInnen
ToDo Schreiben von Tests in xUnit
83
Javacream
Softwaretest für EntwicklerInnen
Probleme bei den BooksServiceTests
84
Problem!
Problem!
Der Test nutzt 2 (oder mehrere) Operationen und ist damit kein Unit-Test -> Scenario-Test bzw. Story-Test (Sawitzki-Begriffe)
Problem!
Unspezifische Assertion, ich kann nicht testen, dass der BooksService eine vom IsbnGenerator erzeugte ISBN zurückgibt
Javacream
Softwaretest für EntwicklerInnen
Exkurs: Context & Dependency Injection
85
Javacream
Softwaretest für EntwicklerInnen
Context & Dependency Injection
86
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Modell
87
BooksService
IsbnGeneratorService
StoreService
Book
n
1
1
Das ist ein Klassendiagramm
Problem: Die Laufzeitumgebung kennt Objekte, keine Klassen
dependency
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Die fertige Books-Anwendung
88
booksService
storeService
isbnGeneratorService
actor
actor2
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Step 1
89
Context
booksService
storeService
isbnGeneratorService
actor
actor2
Der Context erzeugt aus jeder relevanten Klasse ein Objekt
Anmerkung: In den allermeisten Fällen erzeugt der Context aus der Klasse exakt ein Objekt (“Singleton”)
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Step 2
90
Context
booksService
storeService
isbnGeneratorService
actor
actor2
Der Context identifiziert und setzt (“injected”) die Dependencies
Javacream
Softwaretest für EntwicklerInnen
Beispiele
91
Javacream
Softwaretest für EntwicklerInnen
Ab jetzt
92
Javacream
Softwaretest für EntwicklerInnen
Tests und CDI
93
Javacream
Softwaretest für EntwicklerInnen
Test-Treiber
94
Javacream
Softwaretest für EntwicklerInnen
Modell mit Test-Treibern
95
<<implementation>>
BooksService
<<implementation>>
IsbnGeneratorService
StoreService
1
1
<<implementation>>
<<test-driver>>
Javacream
Softwaretest für EntwicklerInnen
Exkurs: Realisierung von Test-Treibern in verschiedenen Sprachen
96
<<interface>>
Service
<<impl>>
Implementation
<<impl>>
Test-Treiber
Javacream
Softwaretest für EntwicklerInnen
Exkurs: Was war das mit den Interfaces?
97
Actor
Service
<<interface>>
Service
<<class>>
Impl
<<class>>
Test-Driver
Javacream
Softwaretest für EntwicklerInnen
Test-Treiber Kategorien
98
Javacream
Softwaretest für EntwicklerInnen
Beispiel
99
Javacream
Softwaretest für EntwicklerInnen
Dummies und Test CDI
fixture:
isbngeneratorService=Dummy()
storeService=StoreService()
booksService=BooksService(isbngeneratorService, storeService)
100
Javacream
Softwaretest für EntwicklerInnen
Test-Treiber Kategorien
101
Javacream
Softwaretest für EntwicklerInnen
Test-Treiber Kategorien
102
Javacream
Softwaretest für EntwicklerInnen
xUnit-Syntax und Mocks
103
Javacream
Softwaretest für EntwicklerInnen
ToDo
104
Javacream
Softwaretest für EntwicklerInnen
Tag 3
105
Javacream
Softwaretest für EntwicklerInnen
Agenda
106
Javacream
Softwaretest für EntwicklerInnen
Idee für die Warm Up-Phase
107
Unit
Integration
System
Javacream
Softwaretest für EntwicklerInnen
Umgang mit Ressourcen
108
Javacream
Softwaretest für EntwicklerInnen
ToDo
109
Javacream
Softwaretest für EntwicklerInnen
Containers als Fixture
110
Javacream
Softwaretest für EntwicklerInnen
Motivation
111
Javacream
Softwaretest für EntwicklerInnen
Technik
112
Javacream
Softwaretest für EntwicklerInnen
Anwendungen und Container
113
Javacream
Softwaretest für EntwicklerInnen
Docker Details
114
Javacream
Softwaretest für EntwicklerInnen
Reale Anwendungen
115
Javacream
Softwaretest für EntwicklerInnen
Klassische Lösung
116
Test-Center
MySql-DB
Oracle-DB
Web Server
Application Server
Zu testende Anwendung
deploy
Javacream
Softwaretest für EntwicklerInnen
Moderne Lösung
117
Test-Center
Host
Host
Host
Host
Pool
Host-Maschinen sind allesamt identisch und werden nach Bedarf vom Pool entnommen
Image Repository
Javacream
Softwaretest für EntwicklerInnen
Was ist ein “Image”?
118
Javacream
Softwaretest für EntwicklerInnen
Ablauf, Beispiel Container
119
Javacream
Softwaretest für EntwicklerInnen
Aufbau der Testumgebung, eine Möglichkeit
120
Skript mit docker run-Anweisungen wird auf einem Host im Data Center ausgeführt
Host
nginx
mysql
application server
port
Javacream
Softwaretest für EntwicklerInnen
Besser: Docker Compose
121
docker-compose.yml wird auf dem Host mit docker-compose up gestartet
Host
nginx
mysql
application server
port
Javacream
Softwaretest für EntwicklerInnen
Stand bisher
122
Javacream
Softwaretest für EntwicklerInnen
Das Dockerfile
123
Javacream
Softwaretest für EntwicklerInnen
Erstellen eigener Images
124
Javacream
Softwaretest für EntwicklerInnen
Zusammenfassung
125
Javacream
Softwaretest für EntwicklerInnen
Spies
126
Javacream
Softwaretest für EntwicklerInnen
Ein simples Modell
127
Actor
{
...
}
Service
{
…
}
Javacream
Softwaretest für EntwicklerInnen
Erweiterung: Wir benötigen zusätzliche Logik
128
Actor
{
...
}
Service
{
…
}
{
1…
}
Diese zusätzliche Logik gehört weder in den Actor, noch in den Service
Test
{
...
}
{
2…
}
Test
{
...
}
{
1…
}
{
X…
}
Javacream
Softwaretest für EntwicklerInnen
Modell mit Aspekten
129
<<implementation>>
BooksService
<<implementation>>
IsbnGeneratorService
StoreService
1
1
<<implementation>>
<<test-driver>>
Decorator
Aspect
Querschnittsfunktion
Cross Cutting Concern
Javacream
Softwaretest für EntwicklerInnen
Aspekte im Rahmen des Testens
130
Javacream
Softwaretest für EntwicklerInnen
Aspekte im Rahmen der Anwendungsprogrammierung
131
Diese Aspekte werden in der Regel von der Plattform der Anwendung realisiert, nicht selber programmiert
Javacream
Softwaretest für EntwicklerInnen
Aspekte im Test-Umfeld
132
Javacream
Softwaretest für EntwicklerInnen
Beispielcode
133
Javacream
Softwaretest für EntwicklerInnen
Einsatzbereiche
134
Javacream
Softwaretest für EntwicklerInnen
Bisher: Lokale Dependencies
135
<<implementation>>
BooksService
IsbnGeneratorService
StoreService
1
1
Bisher laufen alle Module in einem einzigen Prozess, einem einzigen Heap-Speicher, Dependency ist eine Referenz
Javacream
Softwaretest für EntwicklerInnen
Szenarium: Wie würde sich die Anwendung verhalten, wenn die Services remote angesprochen werden?
136
<<implementation>>
BooksService
IsbnGeneratorService
StoreService
1
1
Problem
Javacream
Softwaretest für EntwicklerInnen
Idee: “Netzwerk-Simulator”
137
Javacream
Softwaretest für EntwicklerInnen
Umsetzung
138
<<implementation>>
BooksService
IsbnGeneratorService
1
Network Simulator
Javacream
Softwaretest für EntwicklerInnen
Andere Ideen
139
Javacream
Softwaretest für EntwicklerInnen
Player-"Spy"
140
Javacream
Softwaretest für EntwicklerInnen
Weitere Ideen
141
Javacream
Softwaretest für EntwicklerInnen
Ergebnis
142
Javacream
Softwaretest für EntwicklerInnen
Nächstes Szenario
143
booksService 1.0
Test 1.0
http
Test Web Server
mit
Service
Javacream
Softwaretest für EntwicklerInnen
Nächstes Szenario
144
booksService
1.1
Test 1.0
http
Test Web Server
mit
Service
Test 1.1
Javacream
Softwaretest für EntwicklerInnen
Problem
145
Javacream
Softwaretest für EntwicklerInnen
Idee
146
booksService 1.0
Test 1.0
http
Test Web Server
mit
Service
File 1.0
Javacream
Softwaretest für EntwicklerInnen
Umsetzung
147
booksService 1.0
Test 1.0
http
Test Web Server
mit
Service
Recorder
Spy
File 1.0
Javacream
Softwaretest für EntwicklerInnen
Code-Scratch
Spy-Implementierung des Recorder
testframework.generateSpy(storeService, function(params){
recordFile.append(delegate.invokedMethod)
recordFile.append(serialize(params))
result = delegate.invoke(params)
recordFile.append(serialize(result)
return result
})
Record-File
get_stock, {category: “books”, item: “ISBN42”},27
get_stock, {category: “books”, item: “ISBN0”}, 0
...
148
Javacream
Softwaretest für EntwicklerInnen
Regressionstest
149
booksService
1.1
Test 1.0
Test 1.1
File 1.0
?
Javacream
Softwaretest für EntwicklerInnen
Lösung: Regressionstest
150
booksService
1.1
Regressionstest 1.0
Test 1.1
File 1.0
Player
Test Stub
Javacream
Softwaretest für EntwicklerInnen
Pseudo-Code
playerMock(expect(anything)).and_return(next_line_in_file)
komplexer
playerMock(expect(anything)).and_return(search_line_for_operation_and_params)
151
Javacream
Softwaretest für EntwicklerInnen
Sinnvolle Idee?
152
booksService
Actor
/
Test
Recorder
Spy
File
Ressourcen
/
andere Services
Javacream
Softwaretest für EntwicklerInnen
Sinnvolle Idee? Ja
153
booksService
Player
File
Ressourcen
/
andere Services
Javacream
Softwaretest für EntwicklerInnen
Weitere Idee: Aufzeichnung eines Anwendertests
154
booksService
Anwender
GUI
Recorder
Spy
File
Ressourcen
/
andere Services
Javacream
Softwaretest für EntwicklerInnen
Weitere Idee: Aufzeichnung eines Anwendertests
155
booksService
Anwender
GUI
Recorder
Spy
Test
File
Player
booksService
Javacream
Softwaretest für EntwicklerInnen
Potenzielle weitere Ideen mit diesem File
156
File
Player
booksService
Player
Player
Editor
File
Player
booksService
Parallelisierbarer Lasttest
Javacream
Softwaretest für EntwicklerInnen
GUI-Tests
157
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Selenium, Web Testing Tool
158
File
Browser 1
Player
Selenium Grid
Editor
File
Selenium IDE
(Firefox PlugIn)
booksService
Web Anwendung
Test in unterschiedlichen Plattformen (Edge, Firefox, Chrome, Safari)
Browser 2
Browser 3
Javacream
Softwaretest für EntwicklerInnen
GUI Recorder
159
booksService
Anwender
GUI
Recorder
Spy
File
Event Queue
Gui Recorder sind fertige Lösungen
Javacream
Softwaretest für EntwicklerInnen
Beispiel: Selenium, Web Testing Tool
160
Selenium Script
Browser 1
Player
Selenium Grid
Test in unterschiedlichen Plattformen (Edge, Firefox, Chrome, Safari)
Browser 2
Browser 3
Python-Beispiele unter
https://github.com/Javacream/org.javacream.training.selenium
Javacream
Softwaretest für EntwicklerInnen
Umgang mit Legacy-Applikationen
161
Javacream
Softwaretest für EntwicklerInnen
Monolithische Applikationen
162
Monolith
Actor
API
Test
DB
NoSQL
File Share
Directory
Javacream
Softwaretest für EntwicklerInnen
Refactoring: Identifikation von Modulen
163
Monolith
Actor
API
Test
DB
NoSQL
File Share
Directory
Module 1
Module 3
Test 1
Test 2
Test 3
Module 2
Javacream
Softwaretest für EntwicklerInnen
Refactoring: CDI-Kompatibilität
164
Monolith
Actor
API
Test
DB
NoSQL
File Share
Directory
CDI
Module 1
CDI
Module 3
Test 1
Unit/Integration…
Test 2
Unit/Integration…
Test 3
Unit/Integration…
CDI
Module 2
Javacream
Softwaretest für EntwicklerInnen
Analyse: Service-Kompatibilität
165
Monolith
Actor
API
Test
DB
NoSQL
File Share
Directory
CDI
Module 1
CDI
Module 3
Test 1
Network Simulator
Test 2
Network Simulator
Test 3
Unit/Integration…
CDI
Module 2
Javacream
Softwaretest für EntwicklerInnen
Service-Kompatibilität
166
Service 1
Actor
API
Test
DB
Service 2
NoSQL
File Share
Directory
CDI
Module 1
CDI
Module 3
Test 1
Test 2
Test 3
CDI
Module 2
Javacream
Softwaretest für EntwicklerInnen
Exkurs CI/CD
167
Javacream
Softwaretest für EntwicklerInnen
CI/CD-Prozess
168
Source Code Management (GitHub, GitLab)
Repo mit Quellcodes, Tests, Pipeline…
Developer
Developer
Developer
Developer
Build Machine
(Jenkins, GitLab CI/CD)
Jobs = Pipeline
trigger = akzeptierter Pull Request
Artefakt-Repository
Betrieb
trigger: Release
Test & QA
trigger: Build
push
Pull Request
Javacream
Softwaretest für EntwicklerInnen
Tests, Pipelines: Aufgabenverteilung
Baue das Artefakt der eigentlichen Anwendung
Hier laufen die Unit-Tests meistens nochmal
Stelle im Test Center die benötigten Systeme zur Verfügung
Lasse alle Integrations / Systems -Tests laufen
Bringe das Artefakt aus
169
Javacream
Softwaretest für EntwicklerInnen
Ergänzung: Software-Qualität
170
Javacream
Softwaretest für EntwicklerInnen