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