SlideShare ist ein Scribd-Unternehmen logo
Open-Source-Werkzeugkasten für
           Software-QS
      05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal I


Freitag, 13. Mai 2011                                 1
Speaker
         • Tobias Joch
               – inovex GmbH
               – Head of Solution
                 Development
               – leichtgewichtige und
                 hochskalierende (Web-)
                 Anwendungen
               – CCD



Freitag, 13. Mai 2011                     2
Kurzer Überblick über das
                        Thema QS




Freitag, 13. Mai 2011                        3
Ziel = Erfüllung der
                        Qualitätsmerkmale
                                  •   Korrektheit
                                  •   Zuverlässigkeit
                                  •   Robustheit
                                  •   Effizienz
                                  •   Benutzerfreundlichkeit
                                  •   Wartbarkeit
                                  •   Wiederverwendbarkeit
                                  •   Portierbarkeit
                                  •   Kompatibilität
                                  •   Vertrauenswürdigkeit
Freitag, 13. Mai 2011                                          4
Agiler Prozess am Beispiel
                        von Scrum
                               24




                               2-4




Freitag, 13. Mai 2011                        5
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
                                            Manuell

Freitag, 13. Mai 2011                                                                    6
Abgrenzung / Scope
                                 • Umfangreiches
                                   Thema
                                 • Konzentration auf die
                                   für Java-(Web-)
                                   Entwicklung
                                   relevantesten Tools
                                   und Frameworks
                                 • kein Anspruch auf
                                   Vollständigkeit
Freitag, 13. Mai 2011                                      7
Inhalt des heute mitgebrachten
                 Werkzeugkasten




Freitag, 13. Mai 2011                     8
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
Unit-Tests
         • xUnit
               – JUnit
                        •   de facto Standard
                        •   DBUnit
                        •   XMLUnit
                        •   HTTPUnit
                        •   EJB3Unit
                        •   SpringJUnit4ClassRunner...
               – TestNG

Freitag, 13. Mai 2011                                    10
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
JUnit
         • IDE-Integration




Freitag, 13. Mai 2011                12
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

Freitag, 13. Mai 2011                                        13
Test Coverage
         • Eclipse Plugins
               – djUnit
               – EclEmma
         • Reports
               – Cobertura
               – Emma




Freitag, 13. Mai 2011                   14
Web-Tests




Freitag, 13. Mai 2011               15
Web-Tests
         • Validatoren
               – Link Checker
               – HTML-Syntax, ...
         • Functional / Acceptance
               – Fitnesse
               – Selenium (Grid)
               – Windmill
               – Cucumber (rake, rspec)
               – Celerity, Watir, ...
Freitag, 13. Mai 2011                     16
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
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
Performance- / Last-Tests




Freitag, 13. Mai 2011                         19
Performance- / Last-Tests
         • Apache
               – ab
               – JMeter
         • Grinder
               – GrinderStone
         • Tsung
               – Erlang
               – High Performance
               – Multi-Protokoll
Freitag, 13. Mai 2011                         20
JVM-Analyse Tools /
                            Techniken




Freitag, 13. Mai 2011                         21
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 Analyse
Freitag, 13. Mai 2011                                                     22
Build-Tools / CI




Freitag, 13. Mai 2011                      23
Build-Tools / CI
         • Build-Tools
               – Ant
               – Maven
               – Buildr
               – Gradle
         • CI
               – CruiseControl
               – Apache Continuum
               – Hudson => Jenkins
Freitag, 13. Mai 2011                        24
Build-Tools / CI
                               Maven
         • einheitliche der Projektstruktur
         • Standard Aufgaben „out-of-the-box“
               – Plugins
         • Dependency Management
               – Firmen eigener Proxy sinnvoll
               – QS




Freitag, 13. Mai 2011                            25
Build-Tools / CI
                            Jenkins
         • aktive Community
         • viele Plugins
         • einfache Verwaltung


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




Freitag, 13. Mai 2011                                            26
Build-Tools / CI
                             Jenkins
         • Beispiel
               – http://ci.jenkins-ci.org/




Freitag, 13. Mai 2011                        27
Statische Code-Analyse




Freitag, 13. Mai 2011                            28
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
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
Freitag, 13. Mai 2011                                               30
Reports / Metriken




Freitag, 13. Mai 2011                        31
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



Freitag, 13. Mai 2011                                           32
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
Reports / Metriken
         • Sonar
               – Integration in Maven und Eclipse
               – Jenkins-Plugin
         • http://nemo.sonarsource.org/




Freitag, 13. Mai 2011                               34
Vielen Dank!


Freitag, 13. Mai 2011                  35

Weitere ähnliche Inhalte

Ähnlich wie Jax 2011-qs

iOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deiOS Testautomation bei mobile.de
iOS Testautomation bei mobile.de
Holger Hammel
 
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01aadiversity
 
DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?
Jean-Pierre König
 
DevDay_Christian Mauth.pdf
DevDay_Christian Mauth.pdfDevDay_Christian Mauth.pdf
DevDay_Christian Mauth.pdf
CarolinaMatthies
 
Software-Entwicklung im interkulturellen Kontext
Software-Entwicklung im interkulturellen KontextSoftware-Entwicklung im interkulturellen Kontext
Software-Entwicklung im interkulturellen Kontext
swiss IT bridge
 
Suchwerbung Optimieren - Test, Taktik, Controlling (German)
Suchwerbung Optimieren - Test, Taktik, Controlling (German)Suchwerbung Optimieren - Test, Taktik, Controlling (German)
Suchwerbung Optimieren - Test, Taktik, Controlling (German)
Sapient GmbH
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 
Reinhold von Schwerin und Björn Winterhalder Einführung einer Open Source Bu...
Reinhold von Schwerin und Björn Winterhalder  Einführung einer Open Source Bu...Reinhold von Schwerin und Björn Winterhalder  Einführung einer Open Source Bu...
Reinhold von Schwerin und Björn Winterhalder Einführung einer Open Source Bu...Stephan Trahasch
 
Software Measurement in agilen Projekten mit Open Source Tools
Software Measurement in agilen Projekten mit Open Source ToolsSoftware Measurement in agilen Projekten mit Open Source Tools
Software Measurement in agilen Projekten mit Open Source Tools
Dominik Dary
 
Fallstudie Usability-Test FH Münster
Fallstudie Usability-Test FH MünsterFallstudie Usability-Test FH Münster
Fallstudie Usability-Test FH MünstereResult_GmbH
 
Scaling Rails
Scaling RailsScaling Rails
Scaling Rails
Jonathan Weiss
 
Fallstudie: Usability-Test im Labor (neckermann.de)
Fallstudie: Usability-Test im Labor (neckermann.de)Fallstudie: Usability-Test im Labor (neckermann.de)
Fallstudie: Usability-Test im Labor (neckermann.de)martin.beschnitt
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
Nico Orschel
 
From system out to executable specifications (Ben Hamidene)
From system out to executable specifications (Ben Hamidene)From system out to executable specifications (Ben Hamidene)
From system out to executable specifications (Ben Hamidene)
Anis Ben Hamidene
 
C1 SetCon Broschüre TAPE
C1 SetCon Broschüre TAPEC1 SetCon Broschüre TAPE
C1 SetCon Broschüre TAPEC1 SetCon GmbH
 
Framework-Qualität: Tests als Gütesiegel
Framework-Qualität: Tests als GütesiegelFramework-Qualität: Tests als Gütesiegel
Framework-Qualität: Tests als GütesiegelBenjamin Eberlei
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10inovex GmbH
 
Prüfungssystem LPLUS.
Prüfungssystem LPLUS.Prüfungssystem LPLUS.
Prüfungssystem LPLUS.
e-teaching.org
 
SE2013 ANECON Testen in agilen Projekten
SE2013 ANECON Testen in agilen ProjektenSE2013 ANECON Testen in agilen Projekten
SE2013 ANECON Testen in agilen Projekten
Peter Haberl
 

Ähnlich wie Jax 2011-qs (20)

iOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deiOS Testautomation bei mobile.de
iOS Testautomation bei mobile.de
 
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01
Microsoftpowerpoint Sib Chmdalumnipresentation 090521031102 Phpapp01
 
DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?
 
DevDay_Christian Mauth.pdf
DevDay_Christian Mauth.pdfDevDay_Christian Mauth.pdf
DevDay_Christian Mauth.pdf
 
Software-Entwicklung im interkulturellen Kontext
Software-Entwicklung im interkulturellen KontextSoftware-Entwicklung im interkulturellen Kontext
Software-Entwicklung im interkulturellen Kontext
 
Suchwerbung Optimieren - Test, Taktik, Controlling (German)
Suchwerbung Optimieren - Test, Taktik, Controlling (German)Suchwerbung Optimieren - Test, Taktik, Controlling (German)
Suchwerbung Optimieren - Test, Taktik, Controlling (German)
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Reinhold von Schwerin und Björn Winterhalder Einführung einer Open Source Bu...
Reinhold von Schwerin und Björn Winterhalder  Einführung einer Open Source Bu...Reinhold von Schwerin und Björn Winterhalder  Einführung einer Open Source Bu...
Reinhold von Schwerin und Björn Winterhalder Einführung einer Open Source Bu...
 
KAHINA
KAHINAKAHINA
KAHINA
 
Software Measurement in agilen Projekten mit Open Source Tools
Software Measurement in agilen Projekten mit Open Source ToolsSoftware Measurement in agilen Projekten mit Open Source Tools
Software Measurement in agilen Projekten mit Open Source Tools
 
Fallstudie Usability-Test FH Münster
Fallstudie Usability-Test FH MünsterFallstudie Usability-Test FH Münster
Fallstudie Usability-Test FH Münster
 
Scaling Rails
Scaling RailsScaling Rails
Scaling Rails
 
Fallstudie: Usability-Test im Labor (neckermann.de)
Fallstudie: Usability-Test im Labor (neckermann.de)Fallstudie: Usability-Test im Labor (neckermann.de)
Fallstudie: Usability-Test im Labor (neckermann.de)
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
From system out to executable specifications (Ben Hamidene)
From system out to executable specifications (Ben Hamidene)From system out to executable specifications (Ben Hamidene)
From system out to executable specifications (Ben Hamidene)
 
C1 SetCon Broschüre TAPE
C1 SetCon Broschüre TAPEC1 SetCon Broschüre TAPE
C1 SetCon Broschüre TAPE
 
Framework-Qualität: Tests als Gütesiegel
Framework-Qualität: Tests als GütesiegelFramework-Qualität: Tests als Gütesiegel
Framework-Qualität: Tests als Gütesiegel
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10
 
Prüfungssystem LPLUS.
Prüfungssystem LPLUS.Prüfungssystem LPLUS.
Prüfungssystem LPLUS.
 
SE2013 ANECON Testen in agilen Projekten
SE2013 ANECON Testen in agilen ProjektenSE2013 ANECON Testen in agilen Projekten
SE2013 ANECON Testen in agilen Projekten
 

Mehr von inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
inovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
inovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
inovex GmbH
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
inovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
inovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
inovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
inovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
inovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
inovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
inovex GmbH
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
inovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
inovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
inovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
inovex GmbH
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
inovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
inovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
inovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
inovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
inovex GmbH
 

Mehr von inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Jax 2011-qs

  • 1. Open-Source-Werkzeugkasten für Software-QS 05.05.2011 | 10:15 - 11:15 Uhr | Zagrebsaal I Freitag, 13. Mai 2011 1
  • 2. Speaker • Tobias Joch – inovex GmbH – Head of Solution Development – leichtgewichtige und hochskalierende (Web-) Anwendungen – CCD Freitag, 13. Mai 2011 2
  • 3. Kurzer Überblick über das Thema QS Freitag, 13. Mai 2011 3
  • 4. Ziel = Erfüllung der Qualitätsmerkmale • Korrektheit • Zuverlässigkeit • Robustheit • Effizienz • Benutzerfreundlichkeit • Wartbarkeit • Wiederverwendbarkeit • Portierbarkeit • Kompatibilität • Vertrauenswürdigkeit Freitag, 13. Mai 2011 4
  • 5. Agiler Prozess am Beispiel von Scrum 24 2-4 Freitag, 13. Mai 2011 5
  • 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 Manuell Freitag, 13. Mai 2011 6
  • 7. Abgrenzung / Scope • Umfangreiches Thema • Konzentration auf die für Java-(Web-) Entwicklung relevantesten Tools und Frameworks • kein Anspruch auf Vollständigkeit Freitag, 13. Mai 2011 7
  • 8. Inhalt des heute mitgebrachten Werkzeugkasten Freitag, 13. Mai 2011 8
  • 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. Unit-Tests • xUnit – JUnit • de facto Standard • DBUnit • XMLUnit • HTTPUnit • EJB3Unit • SpringJUnit4ClassRunner... – TestNG Freitag, 13. Mai 2011 10
  • 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. JUnit • IDE-Integration Freitag, 13. Mai 2011 12
  • 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. Mockito Freitag, 13. Mai 2011 13
  • 14. Test Coverage • Eclipse Plugins – djUnit – EclEmma • Reports – Cobertura – Emma Freitag, 13. Mai 2011 14
  • 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. 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. 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
  • 20. Performance- / Last-Tests • Apache – ab – JMeter • Grinder – GrinderStone • Tsung – Erlang – High Performance – Multi-Protokoll Freitag, 13. Mai 2011 20
  • 21. JVM-Analyse Tools / Techniken Freitag, 13. Mai 2011 21
  • 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 Analyse Freitag, 13. Mai 2011 22
  • 23. Build-Tools / CI Freitag, 13. Mai 2011 23
  • 24. Build-Tools / CI • Build-Tools – Ant – Maven – Buildr – Gradle • CI – CruiseControl – Apache Continuum – Hudson => Jenkins Freitag, 13. Mai 2011 24
  • 25. Build-Tools / CI Maven • einheitliche der Projektstruktur • Standard Aufgaben „out-of-the-box“ – Plugins • Dependency Management – Firmen eigener Proxy sinnvoll – QS Freitag, 13. Mai 2011 25
  • 26. Build-Tools / CI Jenkins • aktive Community • viele Plugins • einfache Verwaltung • http://www.wakaleo.com/books/ jenkins-the-definitive-guide Freitag, 13. Mai 2011 26
  • 27. Build-Tools / CI Jenkins • Beispiel – http://ci.jenkins-ci.org/ Freitag, 13. Mai 2011 27
  • 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. 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 Freitag, 13. Mai 2011 30
  • 31. Reports / Metriken Freitag, 13. Mai 2011 31
  • 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ändlichkeit Freitag, 13. Mai 2011 32
  • 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. Reports / Metriken • Sonar – Integration in Maven und Eclipse – Jenkins-Plugin • http://nemo.sonarsource.org/ Freitag, 13. Mai 2011 34