O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Software-Test für Embedded Systems, 2nd Edition

Book Description

Dieses Buch vermittelt die wichtigsten praxistauglichen Methoden des Software-Tests für Embedded Systems und zeigt, wie sie sich in ein planungsgesteuertes bzw. agiles Projekt eingliedern lassen. Dabei werden die Teststufen in chronologischer Reihenfolge behandelt und die Erläuterungen mit zahlreichen Beispielen illustriert. Persönliche Bewertungen von Testmethoden, Erfahrungsberichte und eine Diskussion von Testwerkzeugen am Ende jedes Kapitels geben dem Leser wichtige Orientierungshilfen bei der Umsetzung des Stoffs in die Praxis.Neu in der 2. Auflage:- Aktualisierung auf die neuesten Normen – z. B. Norm ISO 29119- Neues Kapitel zu Trace-Daten im Testumfeld- Zusätzliche Erfahrungsberichte

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhaltsverzeichnis
  5. 1 Einleitung
    1. 1.1 Motivation
    2. 1.2 Abgrenzung des Buchs zu ISTQB-Lehrplänen
    3. 1.3 Zur Gliederung dieses Buchs
    4. 1.4 Die wichtigsten Begriffe kurz erklärt
    5. 1.4.1 Definition von Fachbegriffen
    6. 1.4.2 Zu Definitionen und TesterInnen
    7. 1.5 Ein Überblick über das Umfeld des Software-Testing
    8. 1.5.1 Ursachen von Software-Fehlern
    9. 1.5.2 Warum Programmfehler nicht entdeckt werden
    10. 1.5.3 Angebrachter Testaufwand
    11. 1.5.4 Der Tester und der Testprozess
    12. 1.5.5 Modellieren der Software-Umgebung
    13. 1.5.6 Erstellen von Testfällen
    14. 1.5.7 Ausführen und Evaluieren der Tests
    15. 1.5.8 Messen des Testfortschritts
    16. 1.5.9 Testdesign und Testdokumentation im Software-Entwicklungsprozess
    17. 1.5.10 Verschiedene Teststufen und deren Zusammenspiel
    18. 1.5.11 Andere Verifikationsmethoden als Ergänzung zum Test
    19. 1.5.12 Agile Prozessmodelle
    20. 1.5.13 Der Software-Test in agilen Vorgehensmodellen
    21. 1.5.14 Wer testet die Tester?
  6. 2 Anforderungen und Test
    1. 2.1 Die Bedeutung textueller Anforderungen
    2. 2.2 Requirements Engineering im Projekt
    3. 2.3 Arten und Quellen von Anforderungen
    4. 2.4 Warum Anforderungen dokumentiert werden sollen
    5. 2.5 Die Review von Anforderungen
    6. 2.5.1 Testbarkeit von Anforderungen
    7. 2.5.2 Modifizierbarkeit und Erweiterbarkeit
    8. 2.5.3 Relevanz von Anforderungen
    9. 2.6 Der Umgang mit natürlicher Sprache
    10. 2.6.1 Einfache Sprache gegen Missverständnisse
    11. 2.6.2 Gelenkte Sprache
    12. 2.7 Hinweise zur Dokumentenform
    13. 2.8 Die Spezifikation an der Schnittstelle zum Testteam
    14. 2.8.1 Konfiguration von Testdesigns
    15. 2.8.2 Vollständigkeit von Spezifikationen
    16. 2.9 Werkzeuge zur Review von Anforderungen
    17. 2.10 Diskussion
    18. 2.10.1 Verifikation beim Requirements Engineering mit Augenmaß
    19. 2.10.2 Bewertung der Rolle des Requirements Engineering für den Testprozess
    20. 2.11 Fragen und Übungsaufgaben
  7. 3 Review des Designs
    1. 3.1 Ziele der Review des Architekturdesigns
    2. 3.2 Ziele der Review des Detaildesigns
    3. 3.3 Eigenschaften von gutem Software-Design
    4. 3.4 Hinweise zur Architektur-Design-Review
    5. 3.5 Embedded Design
    6. 3.5.1 Sicherheit, Verfügbarkeit & Co
    7. 3.5.2 Wartbarkeit des Geräts
    8. 3.5.3 Ressourcenverbrauch
    9. 3.5.4 Design von Echtzeitsystemen
    10. 3.6 Diskussion
    11. 3.7 Fragen und Übungsaufgaben
  8. 4 Automatische statische Code-Analyse
    1. 4.1 Motivation zum Einsatz von Analysewerkzeugen
    2. 4.2 Techniken von Analysewerkzeugen im unteren Preissegment
    3. 4.2.1 Sprachspezifische Fallstricke
    4. 4.2.2 Kontrollflussanalyse
    5. 4.2.3 Datenflussanalyse, Initialisation Tracking
    6. 4.2.4 Datenflussanalyse, Value Tracking
    7. 4.2.5 Semantische Analyse
    8. 4.2.6 Starke Typenprüfung
    9. 4.3 Techniken von Analysewerkzeugen im oberen Preissegment
    10. 4.3.1 Größerer Komfort für den Benutzer
    11. 4.3.2 Concurrency Checks
    12. 4.3.3 Stack-Analyse und erweiterte Kontrollflussanalyse
    13. 4.3.4 Erschöpfende Analyse des Zustandsbaums
    14. 4.4 Statische Security-Analyse (SSA)
    15. 4.5 Code-Metriken
    16. 4.6 Werkzeuge für die Automatische Code-Analyse
    17. 4.7 Diskussion
    18. 4.8 Fragen und Übungsaufgaben
  9. 5 Code-Reviews
    1. 5.1 Review-Arten
    2. 5.1.1 Code-Inspektionen
    3. 5.1.2 Walkthrough
    4. 5.1.3 Peer-Review
    5. 5.2 Pair Programming
    6. 5.3 Werkzeuge zur Code-Review
    7. 5.4 Diskussion
    8. 5.5 Fragen und Übungsaufgaben
  10. 6 Unit-Tests
    1. 6.1 Der Unit-Test im Entwicklungsprozess
    2. 6.2 Zur Definition von Unit-Test und Modultest
    3. 6.3 Black-Box-Testfälle beim White-Box-Test
    4. 6.3.1 Äquivalenzklassenbildung
    5. 6.3.2 Grenzwertanalyse
    6. 6.3.3 Andere Methoden
    7. 6.4 Stubs und Treiber
    8. 6.5 Verschiedene Typen von Werkzeugen beim White-Box-Test
    9. 6.5.1 Unit-Test-Frameworks
    10. 6.5.2 Werkzeuge zur Testerstellung
    11. 6.5.3 Werkzeuge zur Messung der Testabdeckung
    12. 6.6 Testabdeckung
    13. 6.6.1 Statement Coverage
    14. 6.6.2 Branch Coverage und Decision Coverage
    15. 6.6.3 Decision/Condition Coverage
    16. 6.6.4 Modified Condition/Decision Coverage
    17. 6.6.5 Andere Testabdeckungen
    18. 6.6.6 Testabdeckung bei modellbasierter Entwicklung
    19. 6.6.7 Messung der Testabdeckung
    20. 6.7 Basis Path Testing
    21. 6.8 Host oder Target Testing?
    22. 6.9 Den Code immer unverändert testen?
    23. 6.10 Unit-Tests bei objektorientierten Sprachen
    24. 6.11 Grenzen des Unit-Tests
    25. 6.12 Werkzeuge für den Unit-Test
    26. 6.12.1 Unit-Test-Frameworks
    27. 6.12.2 Werkzeuge zur Testerstellung
    28. 6.12.3 Coverage-Analyse
    29. 6.13 Diskussion
    30. 6.13.1 Testabdeckung
    31. 6.13.2 Organisation von Unit-Tests
    32. 6.14 Fragen und Übungsaufgaben
  11. 7 Integrationstests
    1. 7.1 Software/Software-Integrationstest
    2. 7.1.1 Bottom-up-Unit-Tests als Integrationstest
    3. 7.1.2 Strukturierter Integrationstest
    4. 7.1.3 Testabdeckung der Aufrufe von Unterprogrammen
    5. 7.1.4 Vergleich der Teststrategien
    6. 7.1.5 Grenzen des Software/Software-Integrationstests
    7. 7.1.6 Diskussion des Software/Software-Integrationstests
    8. 7.2 Ressourcentests
    9. 7.2.1 Statischer Ressourcentest
    10. 7.2.2 Dynamischer Ressourcentest
    11. 7.3 Hardware/Software-Integrationstest
    12. 7.3.1 Bottom-up-Verfahren
    13. 7.3.2 Regressionsverfahren
    14. 7.3.3 Black-Box-Verfahren
    15. 7.3.4 Test und Analysen bei Sicherheitsrelevanz
    16. 7.3.5 Diskussion des Hardware/Software-Integrationstests
    17. 7.4 Systemintegrationstest
    18. 7.5 Werkzeuge für den Integrationstest
    19. 7.6 Fragen und Übungsaufgaben
  12. 8 Systemtests
    1. 8.1 Funktionale Systemtests
    2. 8.1.1 Zuordnung funktionaler Systemtests zu Anforderungen
    3. 8.1.2 Äquivalenzklassen und Grenzwerte im Black-Box-Test
    4. 8.1.3 Zustandsbasierter Test
    5. 8.1.4 Ursache-Wirkungs-Analyse
    6. 8.1.5 CECIL-Methode
    7. 8.1.6 Entscheidungstabellentechnik
    8. 8.1.7 Paarweises Testen und Klassifikationsbaum-Methode
    9. 8.1.8 Back To Back Testing
    10. 8.1.9 Erfahrungsbasierter Test
    11. 8.1.10 Diskussion des Black-Box-Tests
    12. 8.1.11 Auswahl eines Black-Box-Testverfahrens für eine Aufgabe
    13. 8.1.12 Werkzeuge für Funktionstests
    14. 8.2 Test der Benutzerschnittstelle
    15. 8.2.1 Grafische Benutzerschnittstelle
    16. 8.2.2 Werkzeuge für GUI-Tests
    17. 8.2.3 Eingebettete Benutzerschnittstellen
    18. 8.2.4 Werkzeuge für den Test von eingebetteten Benutzerschnittstellen
    19. 8.3 Performanztest und Lasttest
    20. 8.4 Stresstest
    21. 8.5 Volumentest
    22. 8.6 Failover und Recovery Testing
    23. 8.7 Ressourcentests
    24. 8.8 Installationstests
    25. 8.9 Konfigurationstests
    26. 8.10 Security-Tests
    27. 8.11 Dokumententests
    28. 8.12 Testumgebung und Testdaten
    29. 8.13 Formale Methoden
    30. 8.13.1 Symbolischer Test
    31. 8.13.2 Deduktive Verifikation von funktionalen Anforderungen
    32. 8.13.3 Model Checking
    33. 8.14 Automation von Systemtests
    34. 8.14.1 Vor- und Nachteile der Testautomation
    35. 8.14.2 Tipps zur Automation von Systemtests
    36. 8.15 Dokumentation des Testdesigns und der Testergebnisse
    37. 8.16 Grenzen des Systemtests
    38. 8.17 Fragen und Übungsaufgaben
  13. 9 Testen von RTOS und Middleware
    1. 9.1 Definition und Motivation
    2. 9.2 White-Box-Requirements-Test
    3. 9.3 Test eines Interrupt-Managers
    4. 9.4 Test eines Schedulers
    5. 9.5 Fragen und Übungsaufgaben
  14. 10 Race Conditions
    1. 10.1 Definition von Data Races
    2. 10.2 Dynamische Data-Race-Analyse
    3. 10.2.1 Eraser
    4. 10.2.2 Lamports Happens-Before-Relation
    5. 10.3 Statische Data-Race-Analyse
    6. 10.3.1 Ansätze zur statischen Data-Race-Analyse
    7. 10.3.2 Vergleich zur dynamischen Data-Race-Analyse
    8. 10.4 Werkzeuge für die Data-Race-Analyse
    9. 10.5 Diskussion
    10. 10.6 Fragen und Übungsaufgaben
  15. 11 Deadlocks
    1. 11.1 Über die Entstehung von Deadlocks
    2. 11.2 Verschiedene Arten der Deadlock-Analyse
    3. 11.3 Dynamische Deadlock-Analyse
    4. 11.4 Statische Deadlock-Analyse
    5. 11.5 Werkzeuge zur Deadlock-Detektion
    6. 11.6 Diskussion
    7. 11.7 Fragen und Übungsaufgaben
  16. 12 Echtzeit-Verifikation
    1. 12.1 Antwortzeiten bei funktionalen Tests
    2. 12.2 WCET-Analyse
    3. 12.2.1 Problemstellung
    4. 12.2.2 Laufzeitanalyse
    5. 12.3 Werkzeuge für die WCET-Analyse
    6. 12.4 Diskussion
    7. 12.5 Fragen und Übungsaufgaben
  17. 13 Schedulability-Analyse
    1. 13.1 Aufgaben der Schedulability-Analyse
    2. 13.2 Definitionen
    3. 13.3 Diskussion der Scheduling-Strategien
    4. 13.3.1 Statisches Scheduling
    5. 13.3.2 Dynamisches Scheduling
    6. 13.4 Analyse bei Fixed-Priority-Single-CPU-Systemen
    7. 13.4.1 Optimale Prioritätsvergabe
    8. 13.4.2 Rate Monotonic Analysis
    9. 13.4.3 Exakte Antwortzeitenanalyse
    10. 13.4.4 Gegenseitiger Ausschluss
    11. 13.4.5 Aperiodische Aufgaben
    12. 13.4.6 Kontextwechsel
    13. 13.4.7 Cache und Out Of Order Execution
    14. 13.4.8 Input-Jitter
    15. 13.4.9 Interrupts
    16. 13.5 Multi-CPU-Systeme
    17. 13.5.1 Multicore- und Multiprozessor-Systeme
    18. 13.5.2 Verteilte Systeme
    19. 13.6 Scheduling-Analyse für CAN
    20. 13.7 Werkzeuge
    21. 13.8 Diskussion
    22. 13.9 Fragen und Übungsaufgaben
  18. 14 Hardware/Software-Interaktionsanalyse
    1. 14.1 Die FMEA als Grundlage der HSIA
    2. 14.2 Die HSIA als Quelle für Software-Anforderungen
    3. 14.3 Software-Kritikalitätsanalyse
    4. 14.4 Software-FMEA
    5. 14.5 Werkzeuge
    6. 14.6 Diskussion
    7. 14.7 Fragen und Übungsaufgaben
  19. 15 Modellbasierter Test
    1. 15.1 Begriffsdefinition
    2. 15.2 MBT und Testautomation
    3. 15.3 Modelle
    4. 15.3.1 Statecharts
    5. 15.3.2 SDL
    6. 15.3.3 Message Sequence Charts
    7. 15.3.4 UML Version 2
    8. 15.3.5 SysML
    9. 15.3.6 Funktionsmodellierung
    10. 15.4 Testmodell vs. Implementierungsmodell
    11. 15.5 Werkzeuge
    12. 15.6 Diskussion
    13. 15.7 Fragen und Übungsaufgaben
  20. 16 Trace-Daten im Testumfeld
    1. 16.1 Das Dilemma mit instrumentiertem Code
    2. 16.2 Embedded-Trace-Schnittstellen
    3. 16.3 Werkzeuge
    4. 16.4 Diskussion
  21. 17 Testmanagement
    1. 17.1 Testplanung
    2. 17.2 Teststeuerung
    3. 17.3 Abweichungsmanagement
    4. 17.4 Bewertung und Anpassung des Testprozesses
    5. 17.4.1 Formale Reifegradmodelle für den Software-Test
    6. 17.4.2 Prozessbewertung in agilen Projekten
    7. 17.4.3 Mit Augenmaß ins Kostenoptimum
    8. 17.5 Risikobasierter Test
    9. 17.6 Werkzeuge
    10. 17.7 Diskussion
    11. 17.8 Fragen und Übungsaufgaben
  22. 18 Qualitätsmanagement
    1. 18.1 Definition
    2. 18.2 Qualitätsmanagement-Standards
    3. 18.3 Kosten und Haftungsrelevanz des QM
    4. 18.4 Umsetzung des Qualitätsmanagements
    5. 18.5 Die Rolle des Qualitätsmanagers
    6. 18.6 Mit Metriken die Qualität steuern
    7. 18.7 Die Wirtschaftlichkeit von QM
    8. 18.8 Werkzeuge
    9. 18.9 Diskussion
    10. 18.10 Fragen und Übungsaufgaben
  23. 19 Software-Test und Haftungsrisiko
    1. 19.1 Ein Software-Fehler im Sinne des Gesetzes
    2. 19.2 Vertragliche Gewährleistung und Haftung
    3. 19.3 Vertragliche Beschränkung der Haftung
    4. 19.4 Produzentenhaftung bei Software
    5. 19.5 Produkthaftung
    6. 19.6 Sorgfaltspflicht des Software-Herstellers
    7. 19.7 Technische Normen mit Bezug zum Software-Test
    8. 19.7.1 DIN IEC 56/575/CD
    9. 19.7.2 IEEE Std 1012
    10. 19.7.3 IEEE Std 829
    11. 19.7.4 IEEE Std 1008-1987
    12. 19.7.5 ISO/IEC 29119
    13. 19.7.6 IEC/EN 61508
    14. 19.7.7 ISO 26262
    15. 19.7.8 Normenreihe 250XX
    16. 19.8 Tipps vom Rechtsanwalt und vom Techniker
    17. 19.9 Fragen und Übungsaufgaben
  24. Nachwort
  25. Anhang
    1. Anhang A – Lösungen zu den Übungsaufgaben
    2. Anhang B – Dokumentation des Testdesigns
    3. Anhang C – Software-Verifikationsplan
    4. Anhang D –Software-Verifikationsreport
  26. Quellenverzeichnis
  27. Index
  28. Fußnoten