Eine Alternative zu ANT (als BuildManagementWerkzeug ... · Historie der "Builds"...

9
SOTE220170602.notebook 1 June 02, 2017 Eine Alternative zu ANT (als BuildManagementWerkzeug) ist MAVEN Beispiel für ein MAVENBuildScript (pom.xml) Dependencies sind die einzubeziehenden "Bibliotheken" (jarDateien) Maven identifiziert diese Dateien eindeutig über die GAVParameter G: groupip A: Artifactid V: Version Maven lädt diese automatische von einem zentralen Repository (z.B. http://search.maven.org) und löst dabei Abhängigkeiten der Bibliotheken rekursiv auf. Mit Maven lassen sich genau wie mit ANT Aufgaben automatisieren (Kompilieren, Testen, Packen, Deployen usw.).

Transcript of Eine Alternative zu ANT (als BuildManagementWerkzeug ... · Historie der "Builds"...

SOTE2­2017­06­02.notebook

1

June 02, 2017

Eine Alternative zu ANT (als Build­Management­Werkzeug) ist MAVEN

Beispiel für ein MAVEN­Build­Script (pom.xml)

Dependencies sind die einzubeziehenden "Bibliotheken" (jar­Dateien) Maven identifiziert diese Dateien eindeutig über die GAV­Parameter• G: group­ip• A: Artifact­id• V: Version

Maven lädt diese automatische von einem zentralen Repository (z.B. http://search.maven.org) und löst dabei Abhängigkeiten der Bibliotheken rekursiv auf.

Mit Maven lassen sich genau wie mit ANT Aufgaben automatisieren (Kompilieren, Testen, Packen, Deployen usw.).

SOTE2­2017­06­02.notebook

2

June 02, 2017

Ein Integrationsserver wie Jenkins führt entweder "eventbasiert" (z.B. bei einem Commit) oder zeitgesteuert (z.B. jede Nacht) die Build­Script automatisch aus und erzeugt zugehörige Berichte:

Historie der "Builds"

SOTE2­2017­06­02.notebook

3

June 02, 2017

Testen

JUnit­Tests

Integrationstests

= Komponententests

Systemtests

Akzeptanztest Beta­Test

White­Box­Test

Blackbox­TestLast­Test

Stress­Test

Usability­Teste

Pentrationstests

Sortiert nach Lebenszyklusphase Sortiert nach Testziel Sortiert nach der Methode, um an Testfälle zu kommen

SOTE2­2017­06­02.notebook

4

June 02, 2017

1. Unit­Tests (Komponententests, Modultests)

1. Wer (Tester): Entwickler selbst2. Was (Testobjekt): Einzelne Komponenten, Funktionen3. Auf was (Testziel): siehe rechts (ISO 25010)4. Wie (Testmethode, Testwerkzeuge): JUnit, NUnit, ...

SOTE2­2017­06­02.notebook

5

June 02, 2017

Eine notwendige Voraussetzung, dass ein Test einen Fehler findet, ist, dass der Code überhaupt durchlaufen.

Code­Coverage / Abdeckungsgrade• Anweisungsabdeckung (statement coverage) :

Prozentzahl der beim Testen durchlaufenen Anweisungen (hier: 100%)

• Zweigabdeckung (branch coverage) : Prozentzahl der beim Testen durchlaufenen Zweige (hier: < 100%)

• Einfache Bedingungsabdeckung : 100% falls jede der atomaren Teilbedingungen einmal den Wert true und einmal den Wert false annimmt.

• Mehrfachbedingungsabdeckung: 100% falls alle Kombinaqtionen von atomaren Teilbedingungen getestet wurden

System.out.println(""); //1

for(int i = 0; i < 10; i++ ) //2

if(a.equals("...") //3

...

if( (a.equals("SOTE1")) || (b == 3)) ...

SOTE2­2017­06­02.notebook

6

June 02, 2017

siehe nächste Seite

SOTE2­2017­06­02.notebook

7

June 02, 2017

Die Coverage­Grade lassen sich automatisiert bestimmen:

SOTE2­2017­06­02.notebook

8

June 02, 2017

Zyklomatische Komplexität = McCabe­Maß

:= Anzahl unhängiger Pfade durch einen Programmgraf

:= Anzahl der Kanten (Pfeile) ­ Anzahl der Knoten + 2

= 10 ­ 8 + 2

= 4

SOTE2­2017­06­02.notebook

9

June 02, 2017

2. Integrationstests

1. Wer (Tester): 2. Was (Testobjekt): 3. Auf was (Testziel): 4. Wie (Testmethode, Testwerkzeuge):

Fortsetzung in der nächsten Stunde.