Softwarequalitätssicherung mit Continuous Integration Tools
-
Upload
gfu-cyrus-ag -
Category
Technology
-
view
1.278 -
download
1
description
Transcript of Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherungmit Continuous Integration Tools
Treffpunkt Semicolon, 26.10.2010, GFU Cyrus AG
Dirk Weil, GEDOPLAN GmbH
Entwicklung von Informationssystemen
30+ Jahre am Markt
~35 MitarbeiterBeratung und Entwicklung
GEDOPLANBeratung und Entwicklung
Maßgeschneiderte Lösungen
Standardsoftware
AnalyseArchi-tektur
Entwick-lung
SAP®
GEDOPLAN
Java
Seit 1998 im Bereich Java:100+ Beratungs- und Entwicklungsprojekte
Konzeption und Entwicklung
30+ Seminartitel für Seminarpartner
GEDOPLANJava / Java EE
Diverse App.-ServerGlassfish
IBM WebSphere
JBoss
Oracle WebLogic
SAP NetWeaver
AnalyseArchi-tektur
Entwick-lung
SAP®
GEDOPLAN
Java
IT-Systeme und Prozesse
Beratung, Schulung, Entwicklung
80+ Mitarbeiter
www.involva-gruppe.dewww.involva-gruppe.de
Automatischer Softwaretest Testgetriebene
Softwareen
tw.
5
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
6
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
7
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, …
8
{… // 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
9
Test von Webanwendungen
Selenium
Testframework für Web-Anwendungen
Open SourceOpen Source
http://seleniumhq.org/
Record and Play viaBrowser-Plugin
Integrierbar in JUnit
10
Continuous Integration
Voraussetzung: Projekt enthält ausführbare Tests
JUnit
Selenium, Abbot, …
Build selbst ist auch ein Test!
11
Continuous Integration
Manuelle Ausführung reicht nicht
belastet den Entwicklungsprozess
keine (einheitliche) Veröffentlichung der Ergebnisse
keine (einheitliche) Eskalation bei Fehlernkeine (einheitliche) Eskalation bei Fehlern
12
Bei mir läuft's! Oh, sorry – das habe ich noch nicht eingecheckt.
An dem Teil habe ich nichts gemacht!
Continuous Integration
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
13
Continuous Integration
14
Continuous Integration
CI-System
Inform
Arte-fakte
Checkout
15
Entw.-Umgebung
SCMCommitCheckout
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, …
16
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 ]
17
Job-Übersicht
18
Zusammenfassung eines Jobs
19
Zugriff auf Build-Ergebnisse
Javadoc
Gebaute Artefakte
Unittest-Ergebnisse
(inkl. Drill-Down)
20
Benachrichtigungen
Per Mail
nach jedem fehlgeschlagenen Build
nach erstem erfolgreichen Build
an Mail-Verteiler oder Verursacheran Mail-Verteiler oder Verursacher
21
Erweiterbarkeit
Plugins
22
2006 2007 2008 2009
Core
Erweiterbarkeit
Plugin-Konzept
BenachrichtigungenIRC, Jabber, Twitter, …
OberflächeOberflächeEmotical Hudson, Green Balls, …
BenutzerverwaltungActive Directory, LDAP, …
BerichteCheckstyle, Cobertura, Crap4J, FindBugs, PMD, …
23
Erweiterbarkeit
Plugin-Konzept
Build-WerkzeugeBuckminster, Gradle, Rake, …
QuellcodeverwaltungQuellcodeverwaltungClearCase, Git, PVCS, Visual Sourcesafe, …
ArtefaktverteilungFTP, SCP, …
…
24
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.ä.
25
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
26
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
27
Erweiterungen: Extreme Feedback
Prominente Darstellung des Build-Status
Emotional Mr. Hudson
BuilderleinBuilderlein
…
28
Weitere Features
Verteiltes BuildM
S
S
S
Matrix Build
29
Derby Oracle
JBoss
MySQL
Danke für Ihre Aufmerksamkeit!
Haben Sie Fragen?