35
Open-Source-Werkzeugkasten für Software-QS 05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal I 1 Freitag, 13. Mai 2011

Jax 2011-qs

Embed Size (px)

Citation preview

Page 1: Jax 2011-qs

Open-Source-Werkzeugkasten für Software-QS

05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal I

1Freitag, 13. Mai 2011

Page 2: Jax 2011-qs

Speaker

• Tobias Joch– inovex GmbH– Head of Solution

Development– leichtgewichtige und

hochskalierende (Web-)Anwendungen

– CCD

2Freitag, 13. Mai 2011

Page 3: Jax 2011-qs

Kurzer Überblick über das Thema QS

3Freitag, 13. Mai 2011

Page 4: Jax 2011-qs

Ziel = Erfüllung der Qualitätsmerkmale

• Korrektheit• Zuverlässigkeit• Robustheit• Effizienz• Benutzerfreundlichkeit• Wartbarkeit• Wiederverwendbarkeit• Portierbarkeit• Kompatibilität• Vertrauenswürdigkeit

4Freitag, 13. Mai 2011

Page 5: Jax 2011-qs

Agiler Prozess am Beispiel von Scrum

2 - 4

24

5Freitag, 13. Mai 2011

Page 6: Jax 2011-qs

QS im SDLC

CR/B

ug

Analyse Design

Impl

.

Wartung

Delivery

BDD

TDD

Specs

xUnitMonitoring

UAT

CI

Metriken

Tracking

Pen-Tests

ManuellReviewsIntegrationstests

SystemtestsPair-

Programming

6Freitag, 13. Mai 2011

Page 7: Jax 2011-qs

Abgrenzung / Scope

• Umfangreiches Thema

• Konzentration auf die für Java-(Web-)Entwicklung relevantesten Tools und Frameworks

• kein Anspruch auf Vollständigkeit

7Freitag, 13. Mai 2011

Page 8: Jax 2011-qs

Inhalt des heute mitgebrachten Werkzeugkasten

8Freitag, 13. Mai 2011

Page 9: Jax 2011-qs

Inhalt des heute mitgebrachten Werkzeugkasten

• Unit-Tests• Web-Tests• Performance- / Last-Tests• JVM-Analyse Tools / Techniken• Build-Tools / CI• Statische Code-Analyse• Reports / Metriken• Code-Review-Tools, SCM, ...

9Freitag, 13. Mai 2011

Page 10: Jax 2011-qs

Unit-Tests

• xUnit– JUnit

• de facto Standard• DBUnit• XMLUnit• HTTPUnit• EJB3Unit• SpringJUnit4ClassRunner...

– TestNG

10Freitag, 13. Mai 2011

Page 11: Jax 2011-qs

JUnit• XP / TDD• Kent Beck, Erich Gamma• passed• failed

– failure– error

• grün = Fehlerfrei?– nur so viel testen bis es "grün" ist

• Antipattern!

• Autor Code & Test identisch http://www.junit.org/

11Freitag, 13. Mai 2011

Page 12: Jax 2011-qs

JUnit

• IDE-Integration

12Freitag, 13. Mai 2011

Page 13: Jax 2011-qs

Test Double

• Test Stub– Hand geschriebenes Objekt für Testzwecke

• Mock Objects– Erwartung vor dem Test konfiguriert

• z.B. EasyMock / PowerMock

• Test Spy– Verifikation findet nach dem eigentlichen

Test statt• z.B. Mockito

13Freitag, 13. Mai 2011

Page 14: Jax 2011-qs

Test Coverage

• Eclipse Plugins– djUnit– EclEmma

• Reports– Cobertura– Emma

14Freitag, 13. Mai 2011

Page 15: Jax 2011-qs

Web-Tests

15Freitag, 13. Mai 2011

Page 16: Jax 2011-qs

Web-Tests

• Validatoren– Link Checker– HTML-Syntax, ...

• Functional / Acceptance– Fitnesse– Selenium (Grid)– Windmill– Cucumber (rake, rspec)– Celerity, Watir, ...

16Freitag, 13. Mai 2011

Page 17: Jax 2011-qs

Web-Tests

• Cucumber für Java (und viele weitere Sprachen für die JVM)

– cuke4duke 0.4.3

Feature: Hello JAX 2011 Scenario: Say Hello to the JAX 2011 Given I have a skeleton web application When I open the home page Then the page heading should be "Hello JAX 2011!"

17Freitag, 13. Mai 2011

Page 18: Jax 2011-qs

Web-Tests

• Cucumber für Java (und viele weitere Sprachen für die JVM)

– cuke4duke 0.4.3

Feature: Hello JAX 2011 Scenario: Say Hello to the JAX 2011 Given I have a skeleton web application When I open the home page Then the page heading should be "Hello JAX 2011!"

18Freitag, 13. Mai 2011

Page 19: Jax 2011-qs

Performance- / Last-Tests

19Freitag, 13. Mai 2011

Page 20: Jax 2011-qs

Performance- / Last-Tests

• Apache – ab– JMeter

• Grinder– GrinderStone

• Tsung– Erlang– High Performance– Multi-Protokoll

20Freitag, 13. Mai 2011

Page 21: Jax 2011-qs

JVM-Analyse Tools / Techniken

21Freitag, 13. Mai 2011

Page 22: Jax 2011-qs

JVM-Analyse Tools / Techniken

• Shell / Console– kill -3 / jstack– Thread Dump für z.B. „looping threads“, timeouts, etc.

• jvmstat– jps– jstat– visualgc

• jConsole• VisualVM• Eclipse Memory Analyzer

– Heap Dump Analyse22Freitag, 13. Mai 2011

Page 23: Jax 2011-qs

Build-Tools / CI

23Freitag, 13. Mai 2011

Page 24: Jax 2011-qs

Build-Tools / CI

• Build-Tools– Ant– Maven– Buildr– Gradle

• CI– CruiseControl– Apache Continuum– Hudson => Jenkins

24Freitag, 13. Mai 2011

Page 25: Jax 2011-qs

Build-Tools / CIMaven

• einheitliche der Projektstruktur• Standard Aufgaben „out-of-the-box“

– Plugins• Dependency Management

– Firmen eigener Proxy sinnvoll– QS

25Freitag, 13. Mai 2011

Page 26: Jax 2011-qs

Build-Tools / CIJenkins

• aktive Community• viele Plugins• einfache Verwaltung

• http://www.wakaleo.com/books/jenkins-the-definitive-guide

26Freitag, 13. Mai 2011

Page 27: Jax 2011-qs

Build-Tools / CIJenkins

• Beispiel – http://ci.jenkins-ci.org/

27Freitag, 13. Mai 2011

Page 28: Jax 2011-qs

Statische Code-Analyse

28Freitag, 13. Mai 2011

Page 29: Jax 2011-qs

Statische Code-Analyse• oder auch „linting“ genannt (Lint)• formaler Prüfung

– Quelltext– Bytecode

• manuell oder automatisch– einfachen Coding-Standards– Prüfung von Typumwandlungen /Bereichsgrenzen– Speicherlecks– „Bad Smells“– null-Referenzen– uninitialized values, ...

29Freitag, 13. Mai 2011

Page 31: Jax 2011-qs

Reports / Metriken

31Freitag, 13. Mai 2011

Page 32: Jax 2011-qs

Reports / Metriken

• Formale Vergleichs- und Bewertungsmöglichkeiten– ausgedrückt in Meßzahlen– interpretierbar als der Erfüllungsgrad einer

Qualitätseigenschaft– Indikation für den Zustand der SW

• Wartbarkeit, Erweiterbarkeit,Verständlichkeit

32Freitag, 13. Mai 2011

Page 33: Jax 2011-qs

Reports / Metriken

• Umfang (LOC, Wiederverwendung, Prozeduren, ...)

• Komplexität (McCabe)• Lesbarkeit (Stil)• Entwurfsqualität (Modularität, Kohäsion,

Kopplung, ...)• Produktqualität (Testergebnisse,

Testabdeckung, Dubletten, ...)• ...

33Freitag, 13. Mai 2011

Page 34: Jax 2011-qs

Reports / Metriken

• Sonar– Integration in Maven und Eclipse– Jenkins-Plugin

• http://nemo.sonarsource.org/

34Freitag, 13. Mai 2011

Page 35: Jax 2011-qs

Vielen Dank!

35Freitag, 13. Mai 2011