Module level

Transcription

Module level
Qualitätssicherung von
Software (SWQS)
Prof. Dr. Holger Schlingloff
Humboldt-Universität zu Berlin
und
Fraunhofer FOKUS
!6.4.2013: Softwaretest
Fragen zur Wiederholung
• Was versteht man unter Qualität?
• Kausalkette Defekt, Ausfall, Fehler, Irrtum,
Unfall?
• Was versteht man unter “Softwaretest”?
• Abgrenzung: experimentieren, probieren,
testen, verifizieren, prüfen?
• Unterschied validieren – verifizieren – testen?
H. Schlingloff, Software-Qualitätssicherung
1. Einleitung
16.4.2013
Folie 2
Kapitel 2. Softwaretest
2.1
2.2
2.3
2.4
H. Schlingloff, Software-Qualitätssicherung
Testen im SW-Lebenszyklus
Funktionale Tests, Modultests
Strukturelle Tests, Integrationstests
Modellbasierte Tests
1. Einleitung
Folie 3
Bücher zum Testen
• Myers, Glenford J.: The Art of Software Testing. Wiley & Sons (1979)
(auch in deutsch erhältlich)
• Paul Jorgensen: Software Testing, a craftsman‘s approach. 4th ed in
preparation. Auerbach 2014
• Andreas Spillner, Tilo Linz: Basiswissen Softwaretest. DPUNKT Verlag (2003)
• A.P. Mathur: Foundations of Software Testing. Addison-Wesley 2008
• Bart Broekman, Edwin Notenboom: Testing Embedded Software, Addison-Wesley
•
•
•
•
•
(2003) (DC)
Harry Sneed, Mario Winter: Testen objektorientierter Software. Hanser (2002)
Edward Kit: Software Testing in the Real World – Improving the process. AddisonWesley (1995)
Dorothy Graham, Mark Fewster: Software Test Automation - Effective Use of Test
Execution Tools. Addison-Wesley (2000)
Cem Kaner, J-Falk, H.Q. Nguyen: Testing Computer Software. Wiley (2 ed. 1999)
Marnie L. Hutcheson: Software Testing Fundamentals - Methods and Metrics.
Wiley (2003)
H. Schlingloff, Software-Qualitätssicherung
2.1 Testen
Folie 4
Spezifikationen
• Testen ist unmöglich ohne Spezifikation
• Spezifikationen sind oft impizit und unpräzise




“keine Systemabstürze”
“keine Fehlermeldungen”, keine Endlosschleifen
“Alle Funktionen sind vorhanden”
“so schnell wie möglich”, “Zu jedem Zeitpunkt
sicher”, “vernünftiges Preis/Leistungsverhältnis”
• Die Spezifikation muss testbar sein!
H. Schlingloff, Software-Qualitätssicherung
Folie 5
Tests, Testfälle und Testsuiten
• Test – Ausführung eines Testfalls
• Testfall – Beschreibung eines Verhaltens des
SUTs, üblicherweise durch Vorbedingungen,
Eingaben, erwartete Ausgaben und/oder
Nachbedingungen
• Testsuite – Menge von zusammengehörigen
Testfällen für ein bestimmtes Testvorhaben,
üblicherweise mit gemeinsamen
Qualitätsmerkmalen und Testschnittstellen
• Testziel – spezieller abzudeckender Punkt oder
Einzelergebnis beim Testen
Test Case A34871
Table lookup
mod_admin
Pre: n_usr>0
In: uid = 0x5f0e
Out: uname =“abc”
Post: tbl=tbl’
 ein Testfall kann mehrere Testziele abdecken
 zu jedem Testziel sollte es einen Testfall geben:
eine Testsuite ist vollständig, wenn sie alle
Testziele abdeckt
H. Schlingloff, Software-Qualitätssicherung
Folie 6
Implementierung und Test
• “Programmierer” und “Tester” sind fundamental
unterschiedliche Rollen
 Programmier wollen die Korrektheit ihrer Arbeit
nachweisen
 Tester sollen Fehler finden; haben Erfolg wenn sie die
Software als unkorrekt nachweisen
• “Programmierer” und “Tester” sind im Wesen
ähnliche Rollen
 Programmierer erstellen Programme aus Spezifikationen
 Tester erstellen Testsuiten aus Spezifikationen
H. Schlingloff, Software-Qualitätssicherung
Folie 7
Implementierung und Test
• V-Model: Konstruktive und analytische Seite
des Software-Lebenszyklus
Requirements Analysis
System Deployment
Requirements Testing
Acceptance Testing
Architecture Design
System Integration
Design Testing
System Testing
Module Design
Module Integration
Module Testing
Integration Testing
Unit Design & Implementation
H. Schlingloff, Software-Qualitätssicherung Unit
Testing
Folie 8
Topics in Testing
• Was ist die Spezifikation, was ist das Testobjekt?
• Was ist das Ziel des Testens?
• Welche Schnittstellen werden benötigt, wie werden sie
•
•
•
•
•
•
•
angesprochen? Welche Werkzeuge werden verwendet?
Wie ist die Teststrategie (inhaltliche Vorgehensweise)?
Wann ist genug getestet? (Testüberdeckung)
Wie werden die Testfälle erstellt? (manuell, automatisch?)
Wie erfolgt die Testbewertung? (Testorakel)
Wie werden die Testfälle notiert? (Testskriptsprache)
Wie werden die Testfälle ausgeführt? (Testumgebung)
Wie passiert die Testauswertung, welche Aktionen folgen?
Wie können Testsuiten angepasst und wiederverwendet
werden? (Regressionstest)
H. Schlingloff, Software-Qualitätssicherung
Folie 9
Testaufgaben und Rollen
Beim SW-Test sind etliche Aufgaben durchzuführen:
• Testentwurf (was ist zu testen)
• Testfallauswahl (welche Datensätze)
• Testausführung (wie ist SUT zu starten)
• Testfallbewertung (was ist das Verdikt)
• Testauswertung (wann ist der Test beendet)
• Testdokumentation (welche Dokumente)
• Testverwaltung (wie in den Lebenszyklus integriert)
• Testmanagement (welche Verantwortlichkeiten)
• Testautomatisierung (welche Werkzeuge wie benützen)
• Testwerkzeugadministration (Beschaffung, Installation etc.)
H. Schlingloff, Software-Qualitätssicherung
Folie 10
Klassifikation von Softwaretests
• nach Lebenszyklus-Phase oder Systemstruktur
 Analyse, Entwurf, Implementierung, Integration, Einsatz, Wartung
 Modul/Unit, Komponente, Schicht, System
• nach Testobjekt
 OS/Middleware, Treiber, Bibliothek, Applikation, GUI, Web-Dienst,
eingebettete Software, ...
• nach Testmethode / Testauswahlverfahren
 statisch oder dynamisch, struktur- oder funktionsorientiert kontrolloder datenflussorientiert, Einmal- oder Regressionstest, ...
H. Schlingloff, Software-Qualitätssicherung
Folie 11
Klassifikation von Softwaretests (2)
• nach Testziel
 Funktionstest, Abnahmetest, Benutzbarkeitstest, Lasttest,
Interoperabilitätstest, Sicherheitstest, …
• nach Informationsstand bzw. Spezifikationsverfahren
 Black-Box, White-Box, Grey-Box
 UML-/modellbasiert, Lasten-/Pflichtenheft-basiert, Styleguide-basiert,
formale Spezifikation, …
• nach Werkzeug bzw. Automatisierungsgrad
 manuell, automatische (skriptgesteuerte) Testausführung,
automatische Testgenerierung, automatische Testauswertung,
automatisches Testmanagement und Testdokumentation
H. Schlingloff, Software-Qualitätssicherung
Folie 12
Teststufen
• Unit level: unit test, logic test, equivalence class
•
•
•
test, boundary value test, control flow test, loop test
Module level: module test, integration test,
communication test, data flow test, data integrity
test, cause-effect test
System level: system test, design test, module
interaction test, acceptance test, back-to-back-test,
GUI testing, performance and robustness test
User level: requirements test, rapid prototyping,
usability test, installation and configuration test, load
and stress test
H. Schlingloff, Software-Qualitätssicherung
Folie 13
Werkzeugunterstützung
www.testingfaqs.org listet mehr als 500 (!) Testwerkzeuge in
den Kategorien










Bundled Tool Suites
Defect Tracking
GUI Test Drivers
Load and Performance
Static Analysis
Test Coverage
Test Design Tools
Test Drivers and Test Suite Management
Test Implementation
Unit Test Tools
• Wie ist hier eine akzeptabele Auswahl zu treffen?
H. Schlingloff, Software-Qualitätssicherung
Folie 14
Test-Sprachen
Zur Notation der Tests werden eine Reihe von Formalismen
verwendet







MS Word, Excel oder .txt
csh, .bat
Perl, Python, AWK, Tcl, …
C, C++, Sprache des SUTs
TSL, TestML
TTCN-3
…
• Welche sind wann geeignet?
H. Schlingloff, Software-Qualitätssicherung
Folie 15
Beispiel: Triangle Problem
• Function triangle takes three integers a,b,c which
•
are length of triangle sides; calculates whether the
triangle is equilateral, isosceles, or scalene.
The task is to write down test cases for this function
• “Classical” testing task (Myers)
• Do it NOW!
H. Schlingloff, Software-Qualitätssicherung
Folie 16
Evaluation
Each “yes” gives you one point
• Do you have a test case for an equilateral triangle?
• Do you have a test case for an isoscele triangle?
(must be a triangle, not, e.g. (2,2,4))
• Do you have a test case for an admissible scalene
triangle (must be a real triangle, not, e.g. (1,2,3))
• Do you have at least three test cases for isoscele
triangles, where all permutations of sides are
considered? (e.g. (3,3,4), (3,4,3), (4,3,3))
• Did you state for each test case the expected result?
H. Schlingloff, Software-Qualitätssicherung
Folie 17
Evaluation (2)
• Do you have a test case with one side zero?
• Do you have a test case with negative values?
• Do you have a test case where the sum of two sides
•
•
•
equals the third one? (e.g. (1,2,3))
Do you have at least three test cases for such nontriangles, where all permutations of sides are
considered? (e.g. (1,2,3), (1,3,2), (3,1,2))
Do you have a test case where the sum of the two
smaller inputs is greater than the third one?
Do you have at least three such test cases?
H. Schlingloff, Software-Qualitätssicherung
Folie 18
Evaluation (3)
• Do you have the test case (0,0,0)?
• Do you have test cases with very large integers (maxint)?
• Do you have a test case with non-integer values? (e.g., real
numbers, hex values, strings,…)
• Do you have a test case where 2 or 4 inputs are provided?
Average programmer’s score 7-8 points
Myers 1979: this example should demonstrate that testing
even a trivial program is not an easy task. Consider the
problem of testing an air traffic guidance system with
100.000 instructions, a compiler or just a payroll program.
Today’s programs have 1-30 MLoC
H. Schlingloff, Software-Qualitätssicherung
Folie 19
Improved Triangle Problem
• The program accepts three integers between 1 and
•
•
•
200 which satisfy the triangle inequalities. The
output is the type of triangle determined by the
three sides.
If the input does not match the range requirements,
the program issues an error message and aborts.
If the input does not satisfy the triangle inequalities,
the program output is “NotATriangle”
Otherwise, the output is
 “Equilateral”, if all three inputs are equal
 “Isosceles”, if exactly one pair of inputs is equal
 “Scalene”, if all inputs are pairwise unequal
H. Schlingloff, Software-Qualitätssicherung
Folie 20