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
- Cover
- Titel
- Impressum
- Inhaltsverzeichnis
-
1 Einleitung
- 1.1 Motivation
- 1.2 Abgrenzung des Buchs zu ISTQB-Lehrplänen
- 1.3 Zur Gliederung dieses Buchs
- 1.4 Die wichtigsten Begriffe kurz erklärt
- 1.4.1 Definition von Fachbegriffen
- 1.4.2 Zu Definitionen und TesterInnen
- 1.5 Ein Überblick über das Umfeld des Software-Testing
- 1.5.1 Ursachen von Software-Fehlern
- 1.5.2 Warum Programmfehler nicht entdeckt werden
- 1.5.3 Angebrachter Testaufwand
- 1.5.4 Der Tester und der Testprozess
- 1.5.5 Modellieren der Software-Umgebung
- 1.5.6 Erstellen von Testfällen
- 1.5.7 Ausführen und Evaluieren der Tests
- 1.5.8 Messen des Testfortschritts
- 1.5.9 Testdesign und Testdokumentation im Software-Entwicklungsprozess
- 1.5.10 Verschiedene Teststufen und deren Zusammenspiel
- 1.5.11 Andere Verifikationsmethoden als Ergänzung zum Test
- 1.5.12 Agile Prozessmodelle
- 1.5.13 Der Software-Test in agilen Vorgehensmodellen
- 1.5.14 Wer testet die Tester?
-
2 Anforderungen und Test
- 2.1 Die Bedeutung textueller Anforderungen
- 2.2 Requirements Engineering im Projekt
- 2.3 Arten und Quellen von Anforderungen
- 2.4 Warum Anforderungen dokumentiert werden sollen
- 2.5 Die Review von Anforderungen
- 2.5.1 Testbarkeit von Anforderungen
- 2.5.2 Modifizierbarkeit und Erweiterbarkeit
- 2.5.3 Relevanz von Anforderungen
- 2.6 Der Umgang mit natürlicher Sprache
- 2.6.1 Einfache Sprache gegen Missverständnisse
- 2.6.2 Gelenkte Sprache
- 2.7 Hinweise zur Dokumentenform
- 2.8 Die Spezifikation an der Schnittstelle zum Testteam
- 2.8.1 Konfiguration von Testdesigns
- 2.8.2 Vollständigkeit von Spezifikationen
- 2.9 Werkzeuge zur Review von Anforderungen
- 2.10 Diskussion
- 2.10.1 Verifikation beim Requirements Engineering mit Augenmaß
- 2.10.2 Bewertung der Rolle des Requirements Engineering für den Testprozess
- 2.11 Fragen und Übungsaufgaben
-
3 Review des Designs
- 3.1 Ziele der Review des Architekturdesigns
- 3.2 Ziele der Review des Detaildesigns
- 3.3 Eigenschaften von gutem Software-Design
- 3.4 Hinweise zur Architektur-Design-Review
- 3.5 Embedded Design
- 3.5.1 Sicherheit, Verfügbarkeit & Co
- 3.5.2 Wartbarkeit des Geräts
- 3.5.3 Ressourcenverbrauch
- 3.5.4 Design von Echtzeitsystemen
- 3.6 Diskussion
- 3.7 Fragen und Übungsaufgaben
-
4 Automatische statische Code-Analyse
- 4.1 Motivation zum Einsatz von Analysewerkzeugen
- 4.2 Techniken von Analysewerkzeugen im unteren Preissegment
- 4.2.1 Sprachspezifische Fallstricke
- 4.2.2 Kontrollflussanalyse
- 4.2.3 Datenflussanalyse, Initialisation Tracking
- 4.2.4 Datenflussanalyse, Value Tracking
- 4.2.5 Semantische Analyse
- 4.2.6 Starke Typenprüfung
- 4.3 Techniken von Analysewerkzeugen im oberen Preissegment
- 4.3.1 Größerer Komfort für den Benutzer
- 4.3.2 Concurrency Checks
- 4.3.3 Stack-Analyse und erweiterte Kontrollflussanalyse
- 4.3.4 Erschöpfende Analyse des Zustandsbaums
- 4.4 Statische Security-Analyse (SSA)
- 4.5 Code-Metriken
- 4.6 Werkzeuge für die Automatische Code-Analyse
- 4.7 Diskussion
- 4.8 Fragen und Übungsaufgaben
- 5 Code-Reviews
-
6 Unit-Tests
- 6.1 Der Unit-Test im Entwicklungsprozess
- 6.2 Zur Definition von Unit-Test und Modultest
- 6.3 Black-Box-Testfälle beim White-Box-Test
- 6.3.1 Äquivalenzklassenbildung
- 6.3.2 Grenzwertanalyse
- 6.3.3 Andere Methoden
- 6.4 Stubs und Treiber
- 6.5 Verschiedene Typen von Werkzeugen beim White-Box-Test
- 6.5.1 Unit-Test-Frameworks
- 6.5.2 Werkzeuge zur Testerstellung
- 6.5.3 Werkzeuge zur Messung der Testabdeckung
- 6.6 Testabdeckung
- 6.6.1 Statement Coverage
- 6.6.2 Branch Coverage und Decision Coverage
- 6.6.3 Decision/Condition Coverage
- 6.6.4 Modified Condition/Decision Coverage
- 6.6.5 Andere Testabdeckungen
- 6.6.6 Testabdeckung bei modellbasierter Entwicklung
- 6.6.7 Messung der Testabdeckung
- 6.7 Basis Path Testing
- 6.8 Host oder Target Testing?
- 6.9 Den Code immer unverändert testen?
- 6.10 Unit-Tests bei objektorientierten Sprachen
- 6.11 Grenzen des Unit-Tests
- 6.12 Werkzeuge für den Unit-Test
- 6.12.1 Unit-Test-Frameworks
- 6.12.2 Werkzeuge zur Testerstellung
- 6.12.3 Coverage-Analyse
- 6.13 Diskussion
- 6.13.1 Testabdeckung
- 6.13.2 Organisation von Unit-Tests
- 6.14 Fragen und Übungsaufgaben
-
7 Integrationstests
- 7.1 Software/Software-Integrationstest
- 7.1.1 Bottom-up-Unit-Tests als Integrationstest
- 7.1.2 Strukturierter Integrationstest
- 7.1.3 Testabdeckung der Aufrufe von Unterprogrammen
- 7.1.4 Vergleich der Teststrategien
- 7.1.5 Grenzen des Software/Software-Integrationstests
- 7.1.6 Diskussion des Software/Software-Integrationstests
- 7.2 Ressourcentests
- 7.2.1 Statischer Ressourcentest
- 7.2.2 Dynamischer Ressourcentest
- 7.3 Hardware/Software-Integrationstest
- 7.3.1 Bottom-up-Verfahren
- 7.3.2 Regressionsverfahren
- 7.3.3 Black-Box-Verfahren
- 7.3.4 Test und Analysen bei Sicherheitsrelevanz
- 7.3.5 Diskussion des Hardware/Software-Integrationstests
- 7.4 Systemintegrationstest
- 7.5 Werkzeuge für den Integrationstest
- 7.6 Fragen und Übungsaufgaben
-
8 Systemtests
- 8.1 Funktionale Systemtests
- 8.1.1 Zuordnung funktionaler Systemtests zu Anforderungen
- 8.1.2 Äquivalenzklassen und Grenzwerte im Black-Box-Test
- 8.1.3 Zustandsbasierter Test
- 8.1.4 Ursache-Wirkungs-Analyse
- 8.1.5 CECIL-Methode
- 8.1.6 Entscheidungstabellentechnik
- 8.1.7 Paarweises Testen und Klassifikationsbaum-Methode
- 8.1.8 Back To Back Testing
- 8.1.9 Erfahrungsbasierter Test
- 8.1.10 Diskussion des Black-Box-Tests
- 8.1.11 Auswahl eines Black-Box-Testverfahrens für eine Aufgabe
- 8.1.12 Werkzeuge für Funktionstests
- 8.2 Test der Benutzerschnittstelle
- 8.2.1 Grafische Benutzerschnittstelle
- 8.2.2 Werkzeuge für GUI-Tests
- 8.2.3 Eingebettete Benutzerschnittstellen
- 8.2.4 Werkzeuge für den Test von eingebetteten Benutzerschnittstellen
- 8.3 Performanztest und Lasttest
- 8.4 Stresstest
- 8.5 Volumentest
- 8.6 Failover und Recovery Testing
- 8.7 Ressourcentests
- 8.8 Installationstests
- 8.9 Konfigurationstests
- 8.10 Security-Tests
- 8.11 Dokumententests
- 8.12 Testumgebung und Testdaten
- 8.13 Formale Methoden
- 8.13.1 Symbolischer Test
- 8.13.2 Deduktive Verifikation von funktionalen Anforderungen
- 8.13.3 Model Checking
- 8.14 Automation von Systemtests
- 8.14.1 Vor- und Nachteile der Testautomation
- 8.14.2 Tipps zur Automation von Systemtests
- 8.15 Dokumentation des Testdesigns und der Testergebnisse
- 8.16 Grenzen des Systemtests
- 8.17 Fragen und Übungsaufgaben
- 9 Testen von RTOS und Middleware
-
10 Race Conditions
- 10.1 Definition von Data Races
- 10.2 Dynamische Data-Race-Analyse
- 10.2.1 Eraser
- 10.2.2 Lamports Happens-Before-Relation
- 10.3 Statische Data-Race-Analyse
- 10.3.1 Ansätze zur statischen Data-Race-Analyse
- 10.3.2 Vergleich zur dynamischen Data-Race-Analyse
- 10.4 Werkzeuge für die Data-Race-Analyse
- 10.5 Diskussion
- 10.6 Fragen und Übungsaufgaben
- 11 Deadlocks
- 12 Echtzeit-Verifikation
-
13 Schedulability-Analyse
- 13.1 Aufgaben der Schedulability-Analyse
- 13.2 Definitionen
- 13.3 Diskussion der Scheduling-Strategien
- 13.3.1 Statisches Scheduling
- 13.3.2 Dynamisches Scheduling
- 13.4 Analyse bei Fixed-Priority-Single-CPU-Systemen
- 13.4.1 Optimale Prioritätsvergabe
- 13.4.2 Rate Monotonic Analysis
- 13.4.3 Exakte Antwortzeitenanalyse
- 13.4.4 Gegenseitiger Ausschluss
- 13.4.5 Aperiodische Aufgaben
- 13.4.6 Kontextwechsel
- 13.4.7 Cache und Out Of Order Execution
- 13.4.8 Input-Jitter
- 13.4.9 Interrupts
- 13.5 Multi-CPU-Systeme
- 13.5.1 Multicore- und Multiprozessor-Systeme
- 13.5.2 Verteilte Systeme
- 13.6 Scheduling-Analyse für CAN
- 13.7 Werkzeuge
- 13.8 Diskussion
- 13.9 Fragen und Übungsaufgaben
- 14 Hardware/Software-Interaktionsanalyse
- 15 Modellbasierter Test
- 16 Trace-Daten im Testumfeld
-
17 Testmanagement
- 17.1 Testplanung
- 17.2 Teststeuerung
- 17.3 Abweichungsmanagement
- 17.4 Bewertung und Anpassung des Testprozesses
- 17.4.1 Formale Reifegradmodelle für den Software-Test
- 17.4.2 Prozessbewertung in agilen Projekten
- 17.4.3 Mit Augenmaß ins Kostenoptimum
- 17.5 Risikobasierter Test
- 17.6 Werkzeuge
- 17.7 Diskussion
- 17.8 Fragen und Übungsaufgaben
-
18 Qualitätsmanagement
- 18.1 Definition
- 18.2 Qualitätsmanagement-Standards
- 18.3 Kosten und Haftungsrelevanz des QM
- 18.4 Umsetzung des Qualitätsmanagements
- 18.5 Die Rolle des Qualitätsmanagers
- 18.6 Mit Metriken die Qualität steuern
- 18.7 Die Wirtschaftlichkeit von QM
- 18.8 Werkzeuge
- 18.9 Diskussion
- 18.10 Fragen und Übungsaufgaben
-
19 Software-Test und Haftungsrisiko
- 19.1 Ein Software-Fehler im Sinne des Gesetzes
- 19.2 Vertragliche Gewährleistung und Haftung
- 19.3 Vertragliche Beschränkung der Haftung
- 19.4 Produzentenhaftung bei Software
- 19.5 Produkthaftung
- 19.6 Sorgfaltspflicht des Software-Herstellers
- 19.7 Technische Normen mit Bezug zum Software-Test
- 19.7.1 DIN IEC 56/575/CD
- 19.7.2 IEEE Std 1012
- 19.7.3 IEEE Std 829
- 19.7.4 IEEE Std 1008-1987
- 19.7.5 ISO/IEC 29119
- 19.7.6 IEC/EN 61508
- 19.7.7 ISO 26262
- 19.7.8 Normenreihe 250XX
- 19.8 Tipps vom Rechtsanwalt und vom Techniker
- 19.9 Fragen und Übungsaufgaben
- Nachwort
- Anhang
- Quellenverzeichnis
- Index
- Fußnoten
Product information
- Title: Software-Test für Embedded Systems, 2nd Edition
- Author(s):
- Release date: May 2017
- Publisher(s): dpunkt
- ISBN: 9783864904486
You might also like
book
Software-Test für Embedded Systems
Testen wird im Embedded-Bereich genauso wichtig wie schon vor einigen Jahren im Bereich betrieblicher Anwendungen+ Autor …
book
Rugged Embedded Systems
Rugged Embedded Systems: Computing in Harsh Environments describes how to design reliable embedded systems for harsh …
book
Embedded Linux®: Hardware, Software, and Interfacing
Embedded Linux will help the user: select an Embedded Linux platform based on hardware requirements; build …
book
Communicating Embedded Systems: Networks Applications
Embedded systems become more and more complex and require having some knowledge in various disciplines such …