Einführung in die Software-Qualitätssicherung

Post on 25-Jun-2015

421 views 2 download

transcript

Vorlesung Software-QualitätssicherungOder 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 und Vertragsstrafen.

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

KostenZeit

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 dieser Vorlesung 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 Testen Vertrauen 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