Softwarequalitätssicherung mit Continuous Integration Tools

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

description

Vortrag Java Expertenkreis 15.4.2010

Transcript of Softwarequalitätssicherung mit Continuous Integration Tools

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?