Software Testen 2.0 VL Software Testen 2009W http://www.inso.tuwien.ac.at/lectures/software_testen INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien
Folie: 2 Lernziele Ziele und Grundsätze des Softwaretests: Was sind die Ziele und Nicht-Ziele des Softwaretests? Test- und Integrationsstufen: Warum sind Test und Integration in Software-Projekten stufenweise organisiert und was sind die Ziele der einzelnen Stufen? Funktionale und nichtfunktionale Testmethoden: Welche Methoden unterstützen mich beim Testentwurf, um eine möglichst hohe Testabdeckung zu erreichen? Testautomatisierung: Wann und wie setze ich Testautomatisierung richtig ein? Testprozess: Wie plane und organisiere ich Softwaretests im Rahmen des Entwicklungsprozesses?
Der Therac-25 Fall Prominentes Literaturbeispiel zum Versagen des Tests Strahlentherapiegerät für die Krebstherapie SW-Fehler verursachte Überbestrahlung: Normale Therapie 1 Gray Tödlich ab 10 Gray SW-Fehler verursachte 40-200 Gray Mind. 3 bestätigte Todesfälle Entwicklung und Test von nur einer Person Notwendigkeit der Unabhängigkeit des Tests bei entsprechenden Risiko 3
Folie: 4 Stellenwert von Softwaretests Keine Software ist frei von Fehlern Testen von Software gehört zu den wichtigsten Aktivitäten des Software-Entwicklungsprozesses Systematisches Testen notwendig Eine gut geplante Testphase ist die Grundlage für ein erfolgreiches Projekt Ziel ist es, Fehler so früh wie möglich zu finden Softwaretests sind eine dynamische und produktorientierte Qualitätssicherungstechnik Aufgrund wachsender Komplexität und hohe Abhängigkeiten von Softwaresystemen, wird der Softwaretest strategisch immer bedeutender
Folie: 5 Definition Softwaretests Definition nach IEEE 610.12, 1990 : Software testing is a formal process carried out by a specialized testing team in which a software unit, several integrated software units or an entire software package are examined by running the programs on a computer. All the associated tests are performed according to approved test procedures on approved test cases.
Folie: 6 Ziele des Softwaretests 1. Ziel ist es, Testfälle zu identifizieren, mit denen die höchste Wahrscheinlichkeit gegeben ist, festzustellen, ob das Softwaresystem korrekt funktioniert 2. Ein guter Test ist jener, der eine möglichst hohe funktionale oder nichtfunktionale Abdeckung hat 3. Beim Softwaretest sollen Fehler von Programmen identifiziert werden. 4. Wenn ein Test einen Fehler gefunden hat, war er erfolgreich
Folie: 7 Grundsätze des Softwaretests (nach ISTQB) 1. Grundsatz: Testen zeigt die Anwesenheit von Fehlern 2. Grundsatz: Vollständiges Testen ist nicht möglich 3. Grundsatz: Mit dem Testen frühzeitig beginnen 4. Grundsatz: Häufung von Fehlern 5. Grundsatz: Wiederholungen haben keine Wirksamkeit 6. Grundsatz: Testen ist abhängig vom Umfeld 7. Grundsatz: Trugschluss: Keine Fehler bedeutet ein brauchbares System
Beispiel für die Fehlerverteilung in Stadt21 8
Folie: 9 Test- und Integrationsstufen Strategie der Zerlegung der gestellten Aufgabe in beherrschbare Teile bei der Herstellung von Softwaresystemen Zerlegung in Teststufen ermöglicht eine frühe Prüfung von unterschiedliche Teilen des zu entwickelnden Systems Teststufen können durch folgenden Aspekte charakterisiert werden: allgemeine Ziele Arbeitsergebnisse, als Grundlage für daraus abgeleitete Testfälle (Testbasis) das eigentliche Testobjekt (Testgegenstand) auftretende Fehlerwirkungen und zustände, die identifiziert werden sollten Anforderungen an den Testrahmen; Werkzeugunterstützung; spezifische Ansätze und Verantwortlichkeiten
Teststufenkonzept A-symmetriemodell 10
Fundamentaler Testprozess für jede Teststufe 11
Beispiel Softwaretest KIS Medical Information Systems (z.b. Krankenhausinformationssysteme KIS) Größtes Risiko: Finanzielle Risiken Primäre Testziele: Funktionalität, Integration Landschaft und Prozesse (!) Usability: Geschultes Personal Zulassung: nicht erforderlich, jedoch oftmals Anmeldung am DVR Standards und Normen: Keine Spezifischen in Österreich oftmals ISO900x für die Softwareentwicklung Testtypus: Fokus im Blackbox Test Besonderheiten: Ein KIS System ist oftmals Standardsoftware die konfiguriert bzw. parametrisiert wird. Der Test eines Rollouts konzertiert sich somit oft auf die Adaption und Integration und nicht auf die Kernfunktionalität. 12
Beispiel Softwaretest EPA Medical Infrastructure Systems (z.b. Elektronische Gesundheitskarten, Elektronischer Patientenakt) Größtes Risiko: Informationsoffenlegung, Data-Mining, Performance Primäre Testziele: Datenschutz, Performance, Interoperabilität Usability: Oftmals gesamte Bevölkerung Zulassung: Erforderlich (länderspezifisch) Standards und Normen: länderspezifisch Testtypus: Entwicklung von Komponenten Black- und Whitebox Tests. Bei der Integration von Komponenten starker Fokus auf die Schnittstellen (Interoperabilitätstests sind strikte Blackbox Tests), Sicherheitstests z.b. Penetrationstests Besonderheiten: Stufenweises Rollout und entsprechende Testmaßnahmen 13
Typische Teststufen beim der Entwicklung eines Med. Infrastruktursystems Labortests Test der Komponenten und deren Integration unter Laborbedingungen durch professionelle Tester Fokus: Konformität, Kompatibilität, Performance, Sicherheit (z.b. Pseudonymisierung, PKI etc.) Anwendertests Test der Integrierten Gesamtsystematik durch die End-User im Laborumfeld Fokus: Usability (friendly User), Validierung der Funktionsweise Feldtests Test der Integrierten Gesamtsystematik durch die End-User im realen Umfeld Fokus: Usability (alle User auch die Oma ), Integration in reale Prozesse z.b. Integration mit dem KIS und PVS 14
Logische Architektur einer Med. Infrastruktur (bsp egk) n-fach 1-fach n-fach 15
10/08/ 07 Aufbau dertestorganisation für die Infrastruktur egk Testleitung Administration Test Dez. Komponenten Test Zentr. Komponenten Test Fachdienste und externe Provider Test System- und Anwendungen Tools und Testumgebungen Karte Broker VSDD Integration Testautomatisier. Kartenterminal Audit UFS Performance /Last Konnektor SDS CMS / CAMS System-/Anwendung Testumg. / Netze Primärsysteme VODD Interoperabilität Anwendertests Teilintegration Z.K Teilintegration FD Sicherheitstests Tool-Admin. Datenstrukturen Test - Daten Externe PKI Test - Daten Teilintegration Dez. K. Zentrale PKI sonstige ext.dienste Zugangsnetze / VPN BetriebsTests
Primärsystem Primärsystemsimulation (Testtreiber) Beispiel der Integrationsstufen im Labortest der egk Integrationsteststufe I3 Gesamtsystemtest Systemtest I2 ZK-FD (II) Teilint. Dez. K. (Ia) Systemt.I1 Basisinfrastruktur TCL/TSL Teilint. Zentr. Komp. TSL/TCL/CRL Teilint. Fachdienste SDS AuditS Externe PKI Fachdienste R2 Konnektor MPLS Broker i.e.s VSDD CMS egk Kartenleser Kartenleser HBA Zeit- und Namensdi enst TimeS (NTP) 2 3 NameS (DNS) UFS VODD Logging 17
Beispielhafter Testaufbau beim Test einer Komponente Steuertabelle TPTP- Log BlackBox GetXML Request Functional Tester Testtreiber Broker Service-Simulator Log4j Verifikations -tabelle Response Steuertabelle 18
Testen in der iterativen Entiwicklung 19
Typische Quellen für Testfälle 20
Software Test Outsourcing Traditionell sind Softwaretestaktivitäten eine reine In- House-Angelegenheit Notwendigen Ressourcen, wie z.b. speziell geschulte und trainierte Testspezialisten, nur mit sehr großem finanziellen Aufwand realisierbar Outsourcing durch ermöglicht eine klare Abgrenzung der Aufwände und eine genaue Ermittlung der Kosten für den Testprozess Ziel: Kosten des Testprozesses durch ein teilweises oder vollständiges Outsourcing minimieren