Continuous Integration mit Hudson
Expertenkreis Java, 15.04.2010, IPS GmbH Hannover
Dirk Weil, GEDOPLAN GmbH
Automatischer Softwaretest Testgetriebene
Softwareen
tw.
2
Test-automatisierung
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
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
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(…);}
}
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
Test von Webanwendungen
Selenium
Testframework für Web-Anwendungen
Open SourceOpen Source
http://seleniumhq.org/
Record and Play viaBrowser-Plugin
Integrierbar in JUnit
7
Testautomatisierung
Voraussetzung: Projekt enthält ausführbare Tests
JUnit
Selenium, Abbot, …
Build selbst ist auch ein Test!
8
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!
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
Testautomatisierung
CI-SystemInform
Arte-fakte
11
Entw.-Umgebung
SCMCommit Update
Re-ports
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
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
Job-Übersicht
14
Zusammenfassung eines Jobs
15
Zugriff auf Build-Ergebnisse
Javadoc
Gebaute Artefakte
Unittest-Ergebnisse
(inkl. Drill-Down)
16
Benachrichtigungen
Per Mail
nach jedem fehlgeschlagenen Build
nach erstem erfolgreichen Build
an Mail-Verteiler oder Verursacheran Mail-Verteiler oder Verursacher
17
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
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
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
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
Erweiterungen: Extreme Feedback
Prominente Darstellung des Build-Status
Emotional Mr. Hudson
BlinklichtBlinklicht
…
22
Danke für Ihre Aufmerksamkeit!
Haben Sie Fragen?
Top Related