23
Continuous Integration mit Hudson Expertenkreis Java, 15.04.2010, IPS GmbH Hannover Dirk Weil, GEDOPLAN GmbH

Softwarequalitätssicherung mit Continuous Integration Tools

Embed Size (px)

DESCRIPTION

Vortrag Java Expertenkreis 15.4.2010

Citation preview

Page 1: Softwarequalitätssicherung mit Continuous Integration Tools

Continuous Integration mit Hudson

Expertenkreis Java, 15.04.2010, IPS GmbH Hannover

Dirk Weil, GEDOPLAN GmbH

Page 2: Softwarequalitätssicherung mit Continuous Integration Tools

Automatischer Softwaretest Testgetriebene

Softwareen

tw.

2

Test-automatisierung

Page 3: Softwarequalitätssicherung mit Continuous Integration Tools

Automatischer Softwaretest

Experimentelles Verfahren zum Test einer Anwendung(SUT = System Under Test)

Zwei Zielsetzungen:Zwei Zielsetzungen:

Destruktiver Test: Im SUT möglichst viele Fehler aufdecken

Demonstrativer Test: Korrektheit des SUT demonstrieren

Effiziente und kostensparende Test-Durchführung:

Möglichst viele Test-Aktivitäten durch Werkzeuge unterstützen

Test-Aktivitäten automatisiert ablaufen lassen

3

Page 4: Softwarequalitätssicherung mit Continuous Integration Tools

Ziele der Testautomatisierung

Explizite und detaillierte Beschreibung des Testwissens

Effiziente Testdurchführung

Reproduzierbare Testergebnisse

Beliebige Wiederholbarkeit von TestläufenBeliebige Wiederholbarkeit von Testläufen

Erhöhung der Software-Qualität

Einsparung von Personal- und Sachkosten

4

Page 5: Softwarequalitätssicherung mit Continuous Integration Tools

Unit Tests

Weit verbreitetes Framework: JUnit 4

Nutzt intensivAnnotationen

Bedingt Java 5

public class MitarbeiterServiceTest{

@BeforeClasspublic static void setUpBeforeClass(){

Bedingt Java 5

Gute Integrationin IDE, Maven, …

5

{… // Test-Fixture erzeugen

}

@Testpublic void testAddBerechtigung(){

… // zu testende Funktionalität aufrufen

Assert.assertEquals(…);}

}

Page 6: Softwarequalitätssicherung mit Continuous Integration Tools

Test von Swing-GUIs

Abbot

Framework zum Test von Java-GUI-Elementen

Open Source

http://abbot.sourceforge.nethttp://abbot.sourceforge.net

Record and Play

Editor für GUI-Skripts

Einbindung in JUnit möglich

6

Page 7: Softwarequalitätssicherung mit Continuous Integration Tools

Test von Webanwendungen

Selenium

Testframework für Web-Anwendungen

Open SourceOpen Source

http://seleniumhq.org/

Record and Play viaBrowser-Plugin

Integrierbar in JUnit

7

Page 8: Softwarequalitätssicherung mit Continuous Integration Tools

Testautomatisierung

Voraussetzung: Projekt enthält ausführbare Tests

JUnit

Selenium, Abbot, …

Build selbst ist auch ein Test!

8

Page 9: Softwarequalitätssicherung mit Continuous Integration Tools

Testautomatisierung

Manuelle Ausführung reicht nicht

belastet des Entwicklungsprozess

keine (einheitliche) Veröffentlichung der Ergebnisse

keine (einheitliche) Eskalation bei Fehlernkeine (einheitliche) Eskalation bei Fehlern

9

Bei mir läuft's! Oh, sorry – das habe ich noch nicht eingecheckt.

An dem Teil habe ich nichts gemacht!

Page 10: Softwarequalitätssicherung mit Continuous Integration Tools

Testautomatisierung

Anforderungen an eine Build- und Test-Umgebung

Regelmäßige, automatische Ausführungzeitgesteuert ("Daily Build")

durch Check-In getriggert

Kompletter Build

Ausführung aller Tests

Ggf. Qualitätsprüfung (Style, Coverage, …)

Reporting

Benachrichtigung

10

Page 11: Softwarequalitätssicherung mit Continuous Integration Tools

Testautomatisierung

CI-SystemInform

Arte-fakte

11

Entw.-Umgebung

SCMCommit Update

Re-ports

Page 12: Softwarequalitätssicherung mit Continuous Integration Tools

Hudson

"Extensible Continuous Integration Engine"

Build und Test von Software-Projekten

Monitoring von beliebigen JobsMonitoring von beliebigen Jobs

Einfache Installation und Konfiguration

Umfangreiche Werkzeugunterstützung "out-of-the-Box"

SVN, CVS

ant, mvn, shell

javadoc, junit, …

12

Page 13: Softwarequalitätssicherung mit Continuous Integration Tools

Installation und Start

Download von hudson.war von http://hudson-ci.org/

Start …

per Kommandozeile: java –jar hudson.warper Kommandozeile: java –jar hudson.war

als Deployment in JBoss, Tomcat, …

Bedienung per Browser auf http:// host:8080 [/hudson ]

13

Page 14: Softwarequalitätssicherung mit Continuous Integration Tools

Job-Übersicht

14

Page 15: Softwarequalitätssicherung mit Continuous Integration Tools

Zusammenfassung eines Jobs

15

Page 16: Softwarequalitätssicherung mit Continuous Integration Tools

Zugriff auf Build-Ergebnisse

Javadoc

Gebaute Artefakte

Unittest-Ergebnisse

(inkl. Drill-Down)

16

Page 17: Softwarequalitätssicherung mit Continuous Integration Tools

Benachrichtigungen

Per Mail

nach jedem fehlgeschlagenen Build

nach erstem erfolgreichen Build

an Mail-Verteiler oder Verursacheran Mail-Verteiler oder Verursacher

17

Page 18: Softwarequalitätssicherung mit Continuous Integration Tools

Erweiterbarkeit

Plugin-Konzept

Benachrichtigungen (z.B. IRC)

Oberfläche

Benutzerverwaltung (z.B. AD-Anbindung)Benutzerverwaltung (z.B. AD-Anbindung)

Build-Auslöser

Berichte (z.B. Checkstyle, Cobertura, PMD)

Build-Werkzeuge

Versionsverwaltung

18

Page 19: Softwarequalitätssicherung mit Continuous Integration Tools

Projekt-Voraussetzungen

Build per Cmd Line

ant, mvn, make, shell, …

Projekt komplett im SCMProjekt komplett im SCM

alle Dependencies verfügbar

auch im SCM

per Maven o.ä.

19

Page 20: Softwarequalitätssicherung mit Continuous Integration Tools

Erweiterungen: Checkstyle

Überprüft die Einhaltung von Konventionen im Java-Code.

Maven-Plugin:Prüfung des Codes

Hudson-Plugin:Hudson-Plugin:Sammeln und Darstellender Prüfergebnisse

Trend

Drill-Down

20

Page 21: Softwarequalitätssicherung mit Continuous Integration Tools

Erweiterungen: Cobertura

Prüft die Code-Abdeckung durch Tests

Maven-Plugin:Instumentierung des Codes,Instumentierung des Codes,Testausführung.

Hudson-Plugin:Sammeln und Darstellender Prüfergebnisse

Trend

Drill-Down

21

Page 22: Softwarequalitätssicherung mit Continuous Integration Tools

Erweiterungen: Extreme Feedback

Prominente Darstellung des Build-Status

Emotional Mr. Hudson

BlinklichtBlinklicht

22

Page 23: Softwarequalitätssicherung mit Continuous Integration Tools

Danke für Ihre Aufmerksamkeit!

Haben Sie Fragen?