Upload
inovex-gmbh
View
348
Download
1
Embed Size (px)
Citation preview
Open-Source-Werkzeugkasten für Software-QS
05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal I
1Freitag, 13. Mai 2011
Speaker
• Tobias Joch– inovex GmbH– Head of Solution
Development– leichtgewichtige und
hochskalierende (Web-)Anwendungen
– CCD
2Freitag, 13. Mai 2011
Kurzer Überblick über das Thema QS
3Freitag, 13. Mai 2011
Ziel = Erfüllung der Qualitätsmerkmale
• Korrektheit• Zuverlässigkeit• Robustheit• Effizienz• Benutzerfreundlichkeit• Wartbarkeit• Wiederverwendbarkeit• Portierbarkeit• Kompatibilität• Vertrauenswürdigkeit
4Freitag, 13. Mai 2011
Agiler Prozess am Beispiel von Scrum
2 - 4
24
5Freitag, 13. Mai 2011
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
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
Inhalt des heute mitgebrachten Werkzeugkasten
8Freitag, 13. Mai 2011
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
Unit-Tests
• xUnit– JUnit
• de facto Standard• DBUnit• XMLUnit• HTTPUnit• EJB3Unit• SpringJUnit4ClassRunner...
– TestNG
10Freitag, 13. Mai 2011
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
JUnit
• IDE-Integration
12Freitag, 13. Mai 2011
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
Test Coverage
• Eclipse Plugins– djUnit– EclEmma
• Reports– Cobertura– Emma
14Freitag, 13. Mai 2011
Web-Tests
15Freitag, 13. Mai 2011
Web-Tests
• Validatoren– Link Checker– HTML-Syntax, ...
• Functional / Acceptance– Fitnesse– Selenium (Grid)– Windmill– Cucumber (rake, rspec)– Celerity, Watir, ...
16Freitag, 13. Mai 2011
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
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
Performance- / Last-Tests
19Freitag, 13. Mai 2011
Performance- / Last-Tests
• Apache – ab– JMeter
• Grinder– GrinderStone
• Tsung– Erlang– High Performance– Multi-Protokoll
20Freitag, 13. Mai 2011
JVM-Analyse Tools / Techniken
21Freitag, 13. Mai 2011
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
Build-Tools / CI
23Freitag, 13. Mai 2011
Build-Tools / CI
• Build-Tools– Ant– Maven– Buildr– Gradle
• CI– CruiseControl– Apache Continuum– Hudson => Jenkins
24Freitag, 13. Mai 2011
Build-Tools / CIMaven
• einheitliche der Projektstruktur• Standard Aufgaben „out-of-the-box“
– Plugins• Dependency Management
– Firmen eigener Proxy sinnvoll– QS
25Freitag, 13. Mai 2011
Build-Tools / CIJenkins
• aktive Community• viele Plugins• einfache Verwaltung
• http://www.wakaleo.com/books/jenkins-the-definitive-guide
26Freitag, 13. Mai 2011
Build-Tools / CIJenkins
• Beispiel – http://ci.jenkins-ci.org/
27Freitag, 13. Mai 2011
Statische Code-Analyse
28Freitag, 13. Mai 2011
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
Statische Code-Analyse
• FindBugs– static bytecode analyzer– based on Jakarta BCEL
• PMD– source code analyzer– identifies potential problems– static ruleset
• Checkstyle– some static code analysis– shows violations of a configured coding standard
30Freitag, 13. Mai 2011
Reports / Metriken
31Freitag, 13. Mai 2011
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
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
Reports / Metriken
• Sonar– Integration in Maven und Eclipse– Jenkins-Plugin
• http://nemo.sonarsource.org/
34Freitag, 13. Mai 2011
Vielen Dank!
35Freitag, 13. Mai 2011