Softwarequalitätssicherung mit Continuous Integration Tools

Post on 25-Jan-2015

1,278 views 1 download

description

KurzbeschreibungAutomatische Softwaretests rücken immer mehr in den Mittelpunkt. Gerade die derzeit vielfach eingesetzten agilen Vorgehensweisen benötigen ein teamübergreifendes und reproduzierbares Verfahren zur Sicherung der Softwarequalität. In diesem Vortrag legt Dirk Weil, Geschäftsführer der GEDOPLAN GmbH aus Bielefeld, das Augenmerk auf die Werkzeuge, die in Java-Projekten zum fortlaufenden Build und Test von Software genutzt werden können. Anhand einiger Praxisbeispiele zeigt er den Aufbau und Betrieb einer Continuous-Integration-Umgebung, die GEDOPALN für Softwareprojekte betreibt. Dozent: Dirk Weil, GedoplanInhalt- Grundlagen und Motivation automatischer Softwaretests - Testziele und Verfahren (Unit-Tests, Regressionstests, Akzeptanztests etc.)- Build- und Testautomatisierung- Beispielumgebung auf Basis von Ant, Maven, Subversion und Hudson- Code-Analyse- Extreme Feedback

transcript

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?