Vorlesung Software-Qualitätssicherung
Oder Wege zu guter Software
Christian Baranowski
Willkommen
• Christian Baranowski	

• Projektleiter, QM @ SEITENBAU Gmbh Konstanz (DE)	

• Custom Software Solutions	

• E-Government Solutions	

• Identity Management and SSO Solutions	

• www.seitenbau.de	

• Vorstand OSGi Users' Forum Germany	

• Co-lead (mit Jochen Hiller) German Enterprise Working Group.	

• OSGi Code Camp	

• Kontakt	

• christian.Baranowski@htwg-konstanz.de
2
Modulhandbuch
• Konstruktive und analytische Qualitätssicherung	

• ISO 9126	

• Kurze Wiederholung der Entwicklungsprozesse	

• Testen im Software-Lebenszyklus: Modultests, Integrationstests, Systemtests,Abnahmetests	

• Reviews: Inspektion,Walkthrough, technische und informelle Reviews	

• Statische Code Analyse, Metriken, Namenskonventionen, Formatierung	

• Abdeckungsgrade	

• Blackbox-Testing: Äquivalenzklassen, Grenzwerte, Fehlerbasiertes Testen, zustandbasiertes
Testen, Entscheidungstabellen, 	

• Lasttests, Stresstests, Smoke-Tests	

• Regressionstests	

• Usability-Testing	

• Optional: Normen	

• Werkzeuge: JUnit, JUnitReport, Code Cover, Checkstyle, JMockIt, HTMLUnit, Selenium …	

• Optional:Versions- und Konfigurationsverwaltung
3
Vorlesungsaufbau
4
Einführung in die Software Qualitätssicherung
Komponententests (Modultests) und Testabdeckung
Statische Testverfahren
Integrationstest
Systemtest und Akzeptanztest
Smoke Test, Performance-Test und Lasttest
Security-Test und Usability-Test
Klausurvorbereitung
Literatur
Basiswissen Softwaretest	

- Andreas Spillner
Management und Optimierung 

des Testprozesses	

- Martin Pol
The Art of Software Testing	

- Myers et. al.
XUnit Test Patterns	

- Gerard Meszaros
Agile Testing	

- Lisa Crispin
5
Einführung in die 

Software-
Qualitätssicherung
6
Warum Qualitätssicherung?
Beispiel wo Software Qualitätssicherung Fehler vermeiden hätte können.
Patriot Missile die Rakete Schlug in
einer amerikanischen Kaserne ein.
Fehler 24 Bit Register zum speichern
der Scud Missile Geschwindigkeit,
diese kann aber nicht akkurat in
diesem gespeichert werden. Es ergibt
sich über die Laufzeit des Systems
immer ein größerer Fehler.
2
Quelle: Wikipedia
Toll Collect Projekt kam es 2003
aufgrund der fehlenden Kompatibilität
von Software Modulen zu
Verzögerungen undVertragsstrafen. 	

3
Quelle: Wikipedia
Ariane 5 nach 36,7 Sekunden
sprengte sich die Rakete selbst.
Programmierfehler Umwandlung
64 Bit Gleitkommazahl in 16 Bit
Ganzzahl.
1
Quelle: Wikipedia
7
Magisches Dreieck
!
!
Projekterfolg
Kosten
Zeit
Qualität
In einem Projekt stehen Zeit, Kosten und Qualität in Zielkonkurrenz zueinander. 	

Beispiele:	

- Um Termin zu halten werden weitere Entwickler eingestellt Kosten	

- Um Kosten zu halten werden Funktionen gestrichen Qualität.	

- Es werden mehr Tests gemacht Zeit und Qualität
8
Was ist Software Qualität?
9
Funktionelle Eignung	

(engl. Functional Suitability)
Was ist Software Qualität?
10
Leistungseffizienz	

(engl. Performance Efficiency)
Was ist Software Qualität?
11
Kompatibilität	

(engl. Compatibility)
Was ist Software Qualität?
12
Bedienbarkeit	

(engl. Usability)
Was ist Software Qualität?
13
Beispiel für keine gute Bedienbarkeit:
Therac 25 User Interface - Medizingerät Linearbeschleuniger zur Anwendung in der
Strahlentherapie
14
// Win32 MFC API
HWND CreateWindowEx
(
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
Beispiel für keine gute Bedienbarkeit:
15
Zuverlässigkeit	

(engl. Reliability)
Was ist Software Qualität?
16
Sicherheit	

(engl. Security)
Was ist Software Qualität?
Security
17
Wartbarkeit	

(engl. Maintainability)
Was ist Software Qualität?
18
Übertragbarkeit	

(engl. Portability)
Was ist Software Qualität?
19
Was ist Softwarequalität?
20
Was ist Softwarequalität?
21
Ziele der
Qualitätssicherung
22
Fehlerwirkung	

(engl. Failure)
Ziele der Qualitätssicherung
Fehlerwirkung ist ein nach außen sichtbares Fehlerverhalten.	

Ziel der Qualitätssicherung Wahrscheinlichkeit für Eintritt von
Fehlerwirkungen minimieren.

23
Fehlerzustand	

(engl. Bug)
Ziele der Qualitätssicherung
Ein Fehlerzustand kann zu einer nach außen sichtbaren
Fehlerwirkung führen. Ziel der Qualitätssicherung die Anzahl
an Möglichkeiten für Fehlerzustände minimieren.
Quelle: Wikipedia
24
Fehlerhandlung	

(engl. Error, Misstake)
Ziele der Qualitätssicherung
Irrtum bei der Software-Entwicklung. 	

Ziel der Qualitätssicherung Prozesse und Methoden etablieren
die Wahrscheinlichkeit für Fehlerhandlung minimieren.
25
Fehlermaskierung
Ziele der Qualitätssicherung
Die Wirkung eines Fehlers (Fehlerzustand) ist nach außen
nicht sichtbar (keine Fehlerwirkung), weil er durch einen
weiteren Fehler verborgen (überlagert / maskiert) wird.

Ziel der Qualitätssicherung Wahrscheinlichkeit für
Fehlermaskierung zu senken.
26
Fehlerhandlung Fehlerzustand
Fehlermaskierung
Fehlerwirkung
min. ein weiter Fehlerzustand vorhanden.
wird nicht maskiert.
1 2
3
3
Wie entstehen Fehler?
27
Wege zu guter Software
konstruktive Qualitätssicherung analytische Qualitätssicherung
• Software Tests	

!
• Reviews	

!
• Audits
• Projektplanung	

!
• Ausbildung	

!
• Testplanung	

!
• Entwicklungsprozesse
* Themenbereiche die in dieserVorlesung behandelt werden.
28
Software Tests
29
Fragestellung beim Testen
Test Verifikation
Debugging
Ist die Software
richtig?
Die Software ist
richtig!
Warum ist die
Software nicht
richtig?
30
Testen und Qualität
• Testen ermöglicht die Qualität von Software zu
messen.	

• Qualität wird ausgedrückt durch Anzahl gefundener
Fehlerzustände.	

• Wenn wenige oder keine Fehlerzustände gefunden
werden, kann TestenVertrauen in die Qualität eines
Systems schaffen.	

• Falls Testen Fehlerzustände findet und diese
Fehlerzustände behoben werden, steigt die Qualität.
31
Komponententest
• Testbasis (Was ist die Grundlage für die Testfälle)	

• Anforderungen an die Komponente 	

• detaillierter Entwurf 	

• Code	

• Testobjekte (SUT = System Under Test):
• Komponenten	

• Programme	

• Datenumwandlung/Migrationsprogramme 	

• Datenbankmodule 	

32
xUnit
• xUnit ist die Bezeichnung für verschiedene
Frameworks für automatisierte Unit-Tests
(Komponenten Test). 	

• Das erste xUnit-Framework SUnit wurde von Kent
Beck für die Programmiersprache Smalltalk
entwickelt.	

• xUnit Frameworks für Java JVM sind JUnit und
TestNG (oder Spock)
• NUnit für das .NET-Framework, PHPUnit für PHP,
CppUnit für C++ ...	

XUnit Test Patterns	

- Gerard Meszaros
Tipp: Die xUnit Test Bibel
33
JUnit 3.X Design
JUnit3 Framework Design (Quelle Projektseite http://junit.sourceforge.net/doc/cookstour/cookstour.htm)
+ run(TestResult)
Test
+ run(TestResult)
+ runTest()
+ setUp()
+ tearDown()
TestCase
+ run(TestResult)
+ addTest(Test)
TestSuite
+ setUp()
+ testMyApp()
+ testOtherStuff()
+ tearDown()
MyTestCase
34
Vier Phasen Test (Four-Phase Test)
Setup
Verify
Teardown
Exercise
SUT
test 	

fixture
1
2
3
4
„a test fixture is all the things we need to have in place in order to run a test“ - xUnit Patterns

Einführung in die Software-Qualitätssicherung

  • 1.
    Vorlesung Software-Qualitätssicherung Oder Wegezu guter Software Christian Baranowski
  • 2.
    Willkommen • Christian Baranowski •Projektleiter, QM @ SEITENBAU Gmbh Konstanz (DE) • Custom Software Solutions • E-Government Solutions • Identity Management and SSO Solutions • www.seitenbau.de • Vorstand OSGi Users' Forum Germany • Co-lead (mit Jochen Hiller) German Enterprise Working Group. • OSGi Code Camp • Kontakt • christian.Baranowski@htwg-konstanz.de 2
  • 3.
    Modulhandbuch • Konstruktive undanalytische Qualitätssicherung • ISO 9126 • Kurze Wiederholung der Entwicklungsprozesse • Testen im Software-Lebenszyklus: Modultests, Integrationstests, Systemtests,Abnahmetests • Reviews: Inspektion,Walkthrough, technische und informelle Reviews • Statische Code Analyse, Metriken, Namenskonventionen, Formatierung • Abdeckungsgrade • Blackbox-Testing: Äquivalenzklassen, Grenzwerte, Fehlerbasiertes Testen, zustandbasiertes Testen, Entscheidungstabellen, • Lasttests, Stresstests, Smoke-Tests • Regressionstests • Usability-Testing • Optional: Normen • Werkzeuge: JUnit, JUnitReport, Code Cover, Checkstyle, JMockIt, HTMLUnit, Selenium … • Optional:Versions- und Konfigurationsverwaltung 3
  • 4.
    Vorlesungsaufbau 4 Einführung in dieSoftware Qualitätssicherung Komponententests (Modultests) und Testabdeckung Statische Testverfahren Integrationstest Systemtest und Akzeptanztest Smoke Test, Performance-Test und Lasttest Security-Test und Usability-Test Klausurvorbereitung
  • 5.
    Literatur Basiswissen Softwaretest - AndreasSpillner Management und Optimierung 
 des Testprozesses - Martin Pol The Art of Software Testing - Myers et. al. XUnit Test Patterns - Gerard Meszaros Agile Testing - Lisa Crispin 5
  • 6.
    Einführung in die
 Software- Qualitätssicherung 6
  • 7.
    Warum Qualitätssicherung? Beispiel woSoftware Qualitätssicherung Fehler vermeiden hätte können. Patriot Missile die Rakete Schlug in einer amerikanischen Kaserne ein. Fehler 24 Bit Register zum speichern der Scud Missile Geschwindigkeit, diese kann aber nicht akkurat in diesem gespeichert werden. Es ergibt sich über die Laufzeit des Systems immer ein größerer Fehler. 2 Quelle: Wikipedia Toll Collect Projekt kam es 2003 aufgrund der fehlenden Kompatibilität von Software Modulen zu Verzögerungen undVertragsstrafen. 3 Quelle: Wikipedia Ariane 5 nach 36,7 Sekunden sprengte sich die Rakete selbst. Programmierfehler Umwandlung 64 Bit Gleitkommazahl in 16 Bit Ganzzahl. 1 Quelle: Wikipedia 7
  • 8.
    Magisches Dreieck ! ! Projekterfolg Kosten Zeit Qualität In einemProjekt stehen Zeit, Kosten und Qualität in Zielkonkurrenz zueinander. Beispiele: - Um Termin zu halten werden weitere Entwickler eingestellt Kosten - Um Kosten zu halten werden Funktionen gestrichen Qualität. - Es werden mehr Tests gemacht Zeit und Qualität 8
  • 9.
    Was ist SoftwareQualität? 9
  • 10.
    Funktionelle Eignung (engl. FunctionalSuitability) Was ist Software Qualität? 10
  • 11.
  • 12.
  • 13.
  • 14.
    Beispiel für keinegute Bedienbarkeit: Therac 25 User Interface - Medizingerät Linearbeschleuniger zur Anwendung in der Strahlentherapie 14
  • 15.
    // Win32 MFCAPI HWND CreateWindowEx ( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam ); Beispiel für keine gute Bedienbarkeit: 15
  • 16.
  • 17.
    Sicherheit (engl. Security) Was istSoftware Qualität? Security 17
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    Fehlerwirkung (engl. Failure) Ziele derQualitätssicherung Fehlerwirkung ist ein nach außen sichtbares Fehlerverhalten. Ziel der Qualitätssicherung Wahrscheinlichkeit für Eintritt von Fehlerwirkungen minimieren.
 23
  • 24.
    Fehlerzustand (engl. Bug) Ziele derQualitätssicherung Ein Fehlerzustand kann zu einer nach außen sichtbaren Fehlerwirkung führen. Ziel der Qualitätssicherung die Anzahl an Möglichkeiten für Fehlerzustände minimieren. Quelle: Wikipedia 24
  • 25.
    Fehlerhandlung (engl. Error, Misstake) Zieleder Qualitätssicherung Irrtum bei der Software-Entwicklung. Ziel der Qualitätssicherung Prozesse und Methoden etablieren die Wahrscheinlichkeit für Fehlerhandlung minimieren. 25
  • 26.
    Fehlermaskierung Ziele der Qualitätssicherung DieWirkung eines Fehlers (Fehlerzustand) ist nach außen nicht sichtbar (keine Fehlerwirkung), weil er durch einen weiteren Fehler verborgen (überlagert / maskiert) wird.
 Ziel der Qualitätssicherung Wahrscheinlichkeit für Fehlermaskierung zu senken. 26
  • 27.
    Fehlerhandlung Fehlerzustand Fehlermaskierung Fehlerwirkung min. einweiter Fehlerzustand vorhanden. wird nicht maskiert. 1 2 3 3 Wie entstehen Fehler? 27
  • 28.
    Wege zu guterSoftware konstruktive Qualitätssicherung analytische Qualitätssicherung • Software Tests ! • Reviews ! • Audits • Projektplanung ! • Ausbildung ! • Testplanung ! • Entwicklungsprozesse * Themenbereiche die in dieserVorlesung behandelt werden. 28
  • 29.
  • 30.
    Fragestellung beim Testen TestVerifikation Debugging Ist die Software richtig? Die Software ist richtig! Warum ist die Software nicht richtig? 30
  • 31.
    Testen und Qualität •Testen ermöglicht die Qualität von Software zu messen. • Qualität wird ausgedrückt durch Anzahl gefundener Fehlerzustände. • Wenn wenige oder keine Fehlerzustände gefunden werden, kann TestenVertrauen in die Qualität eines Systems schaffen. • Falls Testen Fehlerzustände findet und diese Fehlerzustände behoben werden, steigt die Qualität. 31
  • 32.
    Komponententest • Testbasis (Wasist die Grundlage für die Testfälle) • Anforderungen an die Komponente • detaillierter Entwurf • Code • Testobjekte (SUT = System Under Test): • Komponenten • Programme • Datenumwandlung/Migrationsprogramme • Datenbankmodule 32
  • 33.
    xUnit • xUnit istdie Bezeichnung für verschiedene Frameworks für automatisierte Unit-Tests (Komponenten Test). • Das erste xUnit-Framework SUnit wurde von Kent Beck für die Programmiersprache Smalltalk entwickelt. • xUnit Frameworks für Java JVM sind JUnit und TestNG (oder Spock) • NUnit für das .NET-Framework, PHPUnit für PHP, CppUnit für C++ ... XUnit Test Patterns - Gerard Meszaros Tipp: Die xUnit Test Bibel 33
  • 34.
    JUnit 3.X Design JUnit3Framework Design (Quelle Projektseite http://junit.sourceforge.net/doc/cookstour/cookstour.htm) + run(TestResult) Test + run(TestResult) + runTest() + setUp() + tearDown() TestCase + run(TestResult) + addTest(Test) TestSuite + setUp() + testMyApp() + testOtherStuff() + tearDown() MyTestCase 34
  • 35.
    Vier Phasen Test(Four-Phase Test) Setup Verify Teardown Exercise SUT test fixture 1 2 3 4 „a test fixture is all the things we need to have in place in order to run a test“ - xUnit Patterns