Open-Source-Werkzeugkasten für           Software-QS      05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal IFreitag, 13. Mai 20...
Speaker         • Tobias Joch               – inovex GmbH               – Head of Solution                 Development    ...
Kurzer Überblick über das                        Thema QSFreitag, 13. Mai 2011                        3
Ziel = Erfüllung der                        Qualitätsmerkmale                                  •   Korrektheit            ...
Agiler Prozess am Beispiel                        von Scrum                               24                              ...
QS im SDLC                            Tracking                                                               Specs        ...
Abgrenzung / Scope                                 • Umfangreiches                                   Thema                ...
Inhalt des heute mitgebrachten                 WerkzeugkastenFreitag, 13. Mai 2011                     8
Inhalt des heute mitgebrachten                 Werkzeugkasten         •    Unit-Tests         •    Web-Tests         •    ...
Unit-Tests         • xUnit               – JUnit                        •   de facto Standard                        •   D...
JUnit         •    XP / TDD         •    Kent Beck, Erich Gamma         •    passed         •    failed               – fa...
JUnit         • IDE-IntegrationFreitag, 13. Mai 2011                12
Test Double         • Test Stub               – Hand geschriebenes Objekt für Testzwecke         • Mock Objects           ...
Test Coverage         • Eclipse Plugins               – djUnit               – EclEmma         • Reports               – C...
Web-TestsFreitag, 13. Mai 2011               15
Web-Tests         • Validatoren               – Link Checker               – HTML-Syntax, ...         • Functional / Accep...
Web-Tests         • Cucumber für Java              (und viele weitere Sprachen für die JVM)               – cuke4duke 0.4....
Web-Tests         • Cucumber für Java              (und viele weitere Sprachen für die JVM)               – cuke4duke 0.4....
Performance- / Last-TestsFreitag, 13. Mai 2011                         19
Performance- / Last-Tests         • Apache               – ab               – JMeter         • Grinder               – Gri...
JVM-Analyse Tools /                            TechnikenFreitag, 13. Mai 2011                         21
JVM-Analyse Tools /                            Techniken         • Shell / Console               – kill -3 / jstack       ...
Build-Tools / CIFreitag, 13. Mai 2011                      23
Build-Tools / CI         • Build-Tools               – Ant               – Maven               – Buildr               – Gr...
Build-Tools / CI                               Maven         • einheitliche der Projektstruktur         • Standard Aufgabe...
Build-Tools / CI                            Jenkins         • aktive Community         • viele Plugins         • einfache ...
Build-Tools / CI                             Jenkins         • Beispiel               – http://ci.jenkins-ci.org/Freitag, ...
Statische Code-AnalyseFreitag, 13. Mai 2011                            28
Statische Code-Analyse         • oder auch „linting“ genannt (Lint)         • formaler Prüfung               – Quelltext  ...
Statische Code-Analyse         • FindBugs               – static bytecode analyzer               – based on Jakarta BCEL  ...
Reports / MetrikenFreitag, 13. Mai 2011                        31
Reports / Metriken         • Formale Vergleichs- und           Bewertungsmöglichkeiten               – ausgedrückt in Meßz...
Reports / Metriken         • Umfang (LOC, Wiederverwendung,           Prozeduren, ...)         • Komplexität (McCabe)     ...
Reports / Metriken         • Sonar               – Integration in Maven und Eclipse               – Jenkins-Plugin        ...
Vielen Dank!Freitag, 13. Mai 2011                  35
Nächste SlideShare
Wird geladen in …5
×

Jax 2011-qs

772 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Jax 2011-qs

  1. 1. Open-Source-Werkzeugkasten für Software-QS 05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal IFreitag, 13. Mai 2011 1
  2. 2. Speaker • Tobias Joch – inovex GmbH – Head of Solution Development – leichtgewichtige und hochskalierende (Web-) Anwendungen – CCDFreitag, 13. Mai 2011 2
  3. 3. Kurzer Überblick über das Thema QSFreitag, 13. Mai 2011 3
  4. 4. Ziel = Erfüllung der Qualitätsmerkmale • Korrektheit • Zuverlässigkeit • Robustheit • Effizienz • Benutzerfreundlichkeit • Wartbarkeit • Wiederverwendbarkeit • Portierbarkeit • Kompatibilität • VertrauenswürdigkeitFreitag, 13. Mai 2011 4
  5. 5. Agiler Prozess am Beispiel von Scrum 24 2-4Freitag, 13. Mai 2011 5
  6. 6. QS im SDLC Tracking Specs BDD Analyse g De /Bu sig CR n TDD Monitoring CI xUnit Wa l. p rtu Im Pair- n Systemtests Programming g Delivery Metriken UAT Pen-Tests Reviews Integrationstests ManuellFreitag, 13. Mai 2011 6
  7. 7. Abgrenzung / Scope • Umfangreiches Thema • Konzentration auf die für Java-(Web-) Entwicklung relevantesten Tools und Frameworks • kein Anspruch auf VollständigkeitFreitag, 13. Mai 2011 7
  8. 8. Inhalt des heute mitgebrachten WerkzeugkastenFreitag, 13. Mai 2011 8
  9. 9. 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, ...Freitag, 13. Mai 2011 9
  10. 10. Unit-Tests • xUnit – JUnit • de facto Standard • DBUnit • XMLUnit • HTTPUnit • EJB3Unit • SpringJUnit4ClassRunner... – TestNGFreitag, 13. Mai 2011 10
  11. 11. 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/Freitag, 13. Mai 2011 11
  12. 12. JUnit • IDE-IntegrationFreitag, 13. Mai 2011 12
  13. 13. 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. MockitoFreitag, 13. Mai 2011 13
  14. 14. Test Coverage • Eclipse Plugins – djUnit – EclEmma • Reports – Cobertura – EmmaFreitag, 13. Mai 2011 14
  15. 15. Web-TestsFreitag, 13. Mai 2011 15
  16. 16. Web-Tests • Validatoren – Link Checker – HTML-Syntax, ... • Functional / Acceptance – Fitnesse – Selenium (Grid) – Windmill – Cucumber (rake, rspec) – Celerity, Watir, ...Freitag, 13. Mai 2011 16
  17. 17. 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!"Freitag, 13. Mai 2011 17
  18. 18. 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!"Freitag, 13. Mai 2011 18
  19. 19. Performance- / Last-TestsFreitag, 13. Mai 2011 19
  20. 20. Performance- / Last-Tests • Apache – ab – JMeter • Grinder – GrinderStone • Tsung – Erlang – High Performance – Multi-ProtokollFreitag, 13. Mai 2011 20
  21. 21. JVM-Analyse Tools / TechnikenFreitag, 13. Mai 2011 21
  22. 22. 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 AnalyseFreitag, 13. Mai 2011 22
  23. 23. Build-Tools / CIFreitag, 13. Mai 2011 23
  24. 24. Build-Tools / CI • Build-Tools – Ant – Maven – Buildr – Gradle • CI – CruiseControl – Apache Continuum – Hudson => JenkinsFreitag, 13. Mai 2011 24
  25. 25. Build-Tools / CI Maven • einheitliche der Projektstruktur • Standard Aufgaben „out-of-the-box“ – Plugins • Dependency Management – Firmen eigener Proxy sinnvoll – QSFreitag, 13. Mai 2011 25
  26. 26. Build-Tools / CI Jenkins • aktive Community • viele Plugins • einfache Verwaltung • http://www.wakaleo.com/books/ jenkins-the-definitive-guideFreitag, 13. Mai 2011 26
  27. 27. Build-Tools / CI Jenkins • Beispiel – http://ci.jenkins-ci.org/Freitag, 13. Mai 2011 27
  28. 28. Statische Code-AnalyseFreitag, 13. Mai 2011 28
  29. 29. 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, ...Freitag, 13. Mai 2011 29
  30. 30. 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 standardFreitag, 13. Mai 2011 30
  31. 31. Reports / MetrikenFreitag, 13. Mai 2011 31
  32. 32. 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ändlichkeitFreitag, 13. Mai 2011 32
  33. 33. Reports / Metriken • Umfang (LOC, Wiederverwendung, Prozeduren, ...) • Komplexität (McCabe) • Lesbarkeit (Stil) • Entwurfsqualität (Modularität, Kohäsion, Kopplung, ...) • Produktqualität (Testergebnisse, Testabdeckung, Dubletten, ...) • ...Freitag, 13. Mai 2011 33
  34. 34. Reports / Metriken • Sonar – Integration in Maven und Eclipse – Jenkins-Plugin • http://nemo.sonarsource.org/Freitag, 13. Mai 2011 34
  35. 35. Vielen Dank!Freitag, 13. Mai 2011 35

×