einführung in die software-qualitätssicherung
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
• [email protected]���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