Verlässliche Echtzeitsysteme

Ähnliche Dokumente
Verlässliche Echtzeitsysteme

Verlässliche Echtzeitsysteme

Verlässliche Echtzeitsysteme

Verlässliche Echtzeitsysteme

Verlässliche Echtzeitsysteme

Verlässliche Echtzeitsysteme

Whitebox-Tests: Allgemeines

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Softwaretechnik 1 Tutorium

Qualitätsmanagement im Projekt

SEP 114. Design by Contract

Abschnitt 16: Objektorientiertes Design

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Probeklausur Softwareengineering SS 15

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Softwaretechnik (Allgemeine Informatik) Überblick

Some Software Engineering Principles

Übungsklausur vom 7. Dez. 2007

Anforderungen an die HIS

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim

Programmiertechnik II

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Klausur Software-Engineering SS 2005 Iwanowski

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Software Engineering Klassendiagramme Assoziationen

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS Ohne Gewähr -

T1 - Fundamentaler Testprozess

Softwaretechnikpraktikum SS Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal

Testen. SEPR Referat: Testen - Oliver Herbst

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Petri-Netze / Eine Einführung (Teil 2)

Testen Prinzipien und Methoden

Softwaretechnik. Vertretung von Prof. Dr. Blume Fomuso Ekellem WS 2011/12

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Testen - Konzepte und Techniken

Programmiertechnik II

SDD System Design Document

Universität Paderborn Die Universität der Informationsgesellschaft. Validierung und Verifikation (inkl. Testen, Model-Checking, Theorem Proving)

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Powermanager Server- Client- Installation

Informationsblatt Induktionsbeweis

6 Systematisches Testen von Programmen

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Ausführungszeiten. Worst-Case Execution-Time. Übung zur Vorlesung EZS. Zeitgeber Oszilloskop Diskussion

3: Systematisches Testen

Data Mining-Projekte

Datenstrukturen & Algorithmen

Klausur Software-Engineering WS 2006 / 2007 Iwanowski

Übungen Programmieren 1 Felix Rohrer. Übungen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Simulation (vormals Feldversuch) Cico im Gelenkbus

Einführung und Motivation

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Grundbegriffe der Informatik

Übungen zur Softwaretechnik

Qualitätssicherung im Lebenszyklus des itcs. Anspruch und Wirklichkeit.

Softwarelösungen: Versuch 4

Installation und Inbetriebnahme von Microsoft Visual C Express

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

OUTSOURCING ADVISOR. Analyse von SW-Anwendungen und IT-Dienstleistungen auf ihre Global Sourcing Eignung. Bewertung von Dienstleistern und Standorten

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.


Erwin Grüner

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Video Unlimited -Nutzungsbeschränkungen

SWE12 Übungen Software-Engineering

Grundlagen der Theoretischen Informatik, SoSe 2008

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Software Engineering II (IB) Testen von Software / Modultests

Ein einfaches Modell zur Fehlerfortpflanzung

Softwaretechnik 3. Klausurnachbesprechung , Phillip Ghadir

Software Engineering in der Praxis

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Kugel-Fächer-Modell. 1fach. 3fach. Für die Einzelkugel gibt es 3 Möglichkeiten. 6fach. 3! Möglichkeiten

Einsatz automatischer Testdatengenerierung im modellbasierten Test

Software - Testung ETIS SS05

Testen mit JUnit. Motivation

Java Entwicklung für Embedded Devices Best & Worst Practices!

Software-Engineering

1 Mathematische Grundlagen

Integrierte IT Portfolioplanung

3D Visualisierung von UML Umgebungsmodellen

fungen Debugging Boris Tripolskij

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Requirements-Traceability in der industriellen Praxis Ziele und Einsatz

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

.. für Ihre Business-Lösung

Transkript:

Verlässliche Echtzeitsysteme Testen Peter Ulbrich Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de 28. April 2015

Warum testet man eigentlich? Ziel: Aussage zu nicht-funktionalen Eigenschaften von Software Fokus der Vorlesung: Korrektheit oder zumindest Absenz von Defekten Schrittweise Annäherung über Qualität und Verhalten Hierfür existieren unterschiedliche Ansätze: informelle Methoden Inspection, Review, Walkthrough,... analytische Methoden Metriken, Kodierrichtlinien,... dynamisches Testen Black-Box, White-Box, Regression, Unit,... formale Methoden Statische Code-Analyse, Model Checking,... Aussagen über die Qualität Aussagen über das Verhalten in dieser Vorlesung steht das Testen des Verhaltens im Vordergrund 1 Überblick 2/36

Gliederung 1 Überblick 2 Testarten und Vorgehen Entwicklungsprozess Modultests Black-Box- vs. White-Box-Tests 3 Bewertung McCabe s Cyclomatic Complexity Testüberdeckung 4 Testen verteilter Echtzeitsysteme Problemfeld Reproduzierbarkeit Beobachtbarkeit Kontrollierbarkeit 5 Zusammenfassung 2 Testarten und Vorgehen 3/36

Einordnung in den Entwicklungsprozess Softwareentwicklung nach dem V-Modell wird zugrunde gelegt Validierung Anforderungen Anwendungsszenarien Abnahmetest Spezifikation Testfälle Systemtest Systementwurf Testfälle Testfälle Integrationstest Feinentwurf Modultest Verifikation Implementierung weit verbreitetes Vorgehensmodell in der Softwareentwicklung absteigender Ast Spezifikation, Entwurf, Implementierung aufsteigender Ast Verifikation & Validierung Querbeziehungen Testfallableitung 2 Testarten und Vorgehen 2.1 Entwicklungsprozess 4/36

Tests in den verschiedenen Phasen des V-Modells Modultest (engl. unit testing) Diskrepanz zwischen Implementierung und Entwurf/Spezifikation Integrationstest (engl. integration testing) Probleme beim Zusammenspiel mehrere Module Systemtest (engl. system testing) Black-Box-Test auf Systemebene Vergleich: geforderte Leistung tatsächliche Leistung funktional: sind alle Merkmale verfügbar nicht-funktional: wird z.b. ein bestimmter Durchsatz erreicht Abnahmetest (engl. acceptance testing) erfüllt das Produkt die Anforderungen des Auftraggebers Korrektheit, Robustheit, Performanz, Dokumentation,... wird durch Anwendungsszenarien demonstriert/überprüft hier findet also eine Validierung statt, keine Verifikation 2 Testarten und Vorgehen 2.1 Entwicklungsprozess 5/36

Fokus der heutigen Vorlesung Validierung Anforderungen Anwendungsszenarien Abnahmetest Spezifikation Testfälle Systemtest 2 Systementwurf Testfälle Testfälle Integrationstest Feinentwurf Modultest 1 Verifikation Implementierung 1 Modultests Grundbegriffe und Problemstellung Black- vs. White-Box, Testüberdeckung 2 Systemtest Testen verteilter Echtzeitsysteme Problemstellung und Herausforderungen 2 Testarten und Vorgehen 2.1 Entwicklungsprozess 6/36

Eigenschaften von Modultests Modultests beziehen sich auf kleine Softwareeinheiten meist auf Ebene einzelner Funktionen die Testbarkeit ist zu gewährleisten Begrenzung der notwendigen Testfälle Modultests erfolgen in Isolation für den (Miss-)Erfolg ist nur das getestete Modul verantwortlich andere Module werden durch Attrappen (engl. mock-objects) ersetzt Modultests werden fortlaufend durchgeführt jede Änderung am Quelltext sollte auf ihre Verträglichkeit geprüft werden Regressionstests (engl. regression testing) Automatisierung notwendig Modultests sollten auch den Fehlerfall prüfen es genügt nicht, zu prüfen, dass ein korrektes Ergebnis berechnet wurde der Fehlerfall (Eingaben, Zustand,... ) soll einbezogen werden Modultest betrachten die Schnittstelle Anwendung des Design-By-Contract-Prinzips Black-Box-Tests interne Details ( White-Box-Tests) führen zu fragilen Testfällen 2 Testarten und Vorgehen 2.2 Modultests 7/36

Black-Box- vs. White-Box-Tests Black-Box-Tests keine Kenntnis der internen Struktur Testfälle basieren ausschließlich auf der Spezifikation Synonyme: funktionale, datengetriebene, E/A-getriebene Tests Frage: Wurden alle Anforderungen implementiert? White-Box-Tests Kenntnis der internen Struktur zwingend erforderlich Testfälle basieren auf Programmstruktur, Spezifikation wird ignoriert Synonyme: strukturelle, pfadgetriebene, logikgetriebene Tests Frage: Wurden nur Anforderungen implementiert? weiterer Verlauf der Vorlesung: Fokus auf White-Box-Verfahren abstrakte Interpretation, Model Checking, Coverage, WP-Kalkül,... 2 Testarten und Vorgehen 2.3 Black-Box- vs. White-Box-Tests 8/36

Gliederung 1 Überblick 2 Testarten und Vorgehen Entwicklungsprozess Modultests Black-Box- vs. White-Box-Tests 3 Bewertung McCabe s Cyclomatic Complexity Testüberdeckung 4 Testen verteilter Echtzeitsysteme Problemfeld Reproduzierbarkeit Beobachtbarkeit Kontrollierbarkeit 5 Zusammenfassung 3 Bewertung 9/36

Testen hat seine Grenzen! Testen ist im Allgemeinen sehr aufwändig! Ziel müssen möglichst vollständige Tests sein! Aber woher weiß man, dass man genügend getestet hat? Praktisch sind Tests für einen Korrektheitsnachweis ungeeignet!... wir haben schon lange keinen Fehler mehr gefunden... eine Auffassung, der man oft begegnet der entscheidende Fehler kann sich immer noch versteckt halten der Therac 25 (s. Folie II/3 ff.) wurde > 2700 Stunden betrieben ohne dass ein nennenswerter Fehler aufgetreten wäre trotzdem kam es zu den verheerenden Vorfällen Testen kann nur das Vertrauen in Software erhöhen! Formale Methoden gehen einen anderen Weg Weisen Übereinstimmung anstatt Abweichung nach Deutlich komplexere Handhabung Tests oft unumgänglich Gegenstand kommender Vorlesungen 3 Bewertung 10/36

Problem: Kombinatorische Explosion Ohne Einsicht in die Programmstruktur ist Testen sehr mühsam! Beispiel: Modultests für OSEK OS [2] verschiedene Betriebssystemdienste Fadenverwaltung, Fadensynchronisation, Nachrichtenkommunikation,... hohe Variabilität 4 Konformitätsklassen: BCC1, BCC2, BCC3, BCC4 3 Varianten der Ablaufplanung: NON, MIXED, FULL 2 Betriebsmodi: Betrieb (STANDARD), Entwicklung (EXTENDED) 24 Varianten für jeden Testfall Black-Box kein Wissen über die interne Struktur nutzbar konservative Annahme: Parameter beeinflussen sich gegenseitig alle Kombinationen sind relevant: Kombinatorische Explosion! Kombination aus Black- und White-Box-Tests Unabhängigkeit der Parameter kann evtl. sichergestellt werden Reduktion der Testfälle bzw. deren Varianten 3 Bewertung 11/36

Hat man genug getestet? Wie viele Testfälle sind genug Testfälle? Kriterium: Anzahl der Testfälle basierend auf Metriken McCabe s Cyclomatic Complexity (MCC), Function/Feature Points,... mithilfe von Statistiken aus früheren Projekten Kennzahlen früherer Projekte Anzahl zu erwartender Defekte Wie viele Defekte hat man bereits gefunden, wie viele sind noch im Produkt? Wie viele Defekte will/kann man ausliefern? Übertragbarkeit? Kriterium: Testüberdeckung Welcher Anteil des Systems wurde abgetestet? Wurden ausreichend viele Programmpfade absolviert? Wurden alle Variablen, die definiert wurden, auch verwendet? 3 Bewertung 12/36

McCabe s Cyclomatic Complexity [1, Kapitel 8.1] Maß für die Anzahl der unabhängigen Pfade durch ein Programm je höher die MCC, desto höher die Komplexität Berechnung basiert auf dem Kontrollflussgraphen Knoten repräsentieren Anweisungen, Kanten Pfade Komplexität C: C = e n + 2 e = Anzahl der Kanten, n = Anzahl der Knoten Beispiele: Sequenz C = 1 Verzweigung C = 2 Do-While C = 2 Fallunterscheidung C = 3 Untere Schranke für die Anzahl der Testfälle! in der Praxis gilt ein Wert im Bereich 1-10 als akzeptabel 3 Bewertung 3.1 McCabe s Cyclomatic Complexity 13/36

Grundlegende Überdeckunskriterien Wie sehr wurde ein Modul durch Tests beansprucht? C 0 = s/s Anweisungsüberdeckung (engl. statement coverage) s erreichte Anweisungen, S alle Anweisungen findet nicht erreichbaren/getesteten/übersetzten Code Nachteile: Gleichgewichtung aller Anweisungen keine Berücksichtigung leerer Pfade oder Datenabhängigkeiten C 1 = b/b Zweigüberdeckung (engl. branch coverage) b ausgeführte primitive Zweige, B alle primitiven Zweige Verzweigungen hängen u.u. voneinander ab Zweigüberdeckung und dafür benötigte Testfälle sind nicht proportional primitive Zweige sind unabhängig von anderen Zweigen findet nicht erreichbare Zweige, Defekterkennungsrate ca. 33% Nachteile: unzureichende Behandlung von abhängigen Verzweigungen Schleifen Pfadüberdeckung komplexe Verzweigungsbedingungen Bedingungsüberdeckung 3 Bewertung 3.2 Testüberdeckung 14/36

Beispiel: Anweisungs- und Zweigüberdeckung int foo ( int a, int b, int c) { if ((a > b && a > c) c < 0) { if( a < b) return 1; else { if( b < c) return 2; } } return 4; } Anweisungsüberdeckung Test 1: foo(0,0,0) Test 2: foo(0,1,-1) Test 3: foo(2,0,1) Zweigüberdeckung Test 1: foo(0,0,0) Test 2: foo(0,1,-1) Test 3: foo(2,0,1) Test 4: foo(2,1,1) 100% Zweigüberdeckung 100% Anweisungsüberdeckung Zweigüberdeckung: weite industrielle Verbreitung moderater Aufwand, gute Defekterkennungsrate 3 Bewertung 3.2 Testüberdeckung 15/36

Pfadüberdeckung C 2 = p/p Pfadüberdeckung (engl. path coverage) Pfade vom Anfangs- bis zum Endknoten im Kontrollflussgraphen Abstufungen der Pfadüberdeckung C 2 a vollständige Pfadüberdeckung Abdeckung aller möglichen Pfade Problem: durch Schleifen entstehen u. U. unendlich viele Pfade C 2 b boundary-interior Pfadüberdeckung wie C 2a, Anzahl der Schleifendurchläufe wird auf 2 beschränkt C 2 c strukturierte Pfadüberdeckung wie C 2b, Anzahl der Schleifendurchläufe wird auf n beschränkt Bedeutung Boundary-Interior boundary jede Schleife wird 0-mal betreten jede Schleife wird 1-mal betreten, alle Pfade im Rumpf abgearbeitet interior Beschränkung: mit 2 bzw. n Durchläufen erreichbare Pfade im Rumpf hohe Defekterkennungsrate bestimmte Pfade können nicht erreicht werden, hoher Aufwand 3 Bewertung 3.2 Testüberdeckung 16/36

Bedingungsüberdeckung C 3 Bedingungsüberdeckung (engl. condition coverage) C 0,1,2 : unzureichende Betrachtung von Bedingungen ihre Zusammensetzung/Hierarchie wird nicht berücksichtigt Abstufungen der Bedingungsüberdeckung C 3 a Einfachbedingungsüberdeckung jede atomare Bedingung wird einmal mit true und false getestet C 3 b Mehrfachbedingungsüberdeckung alle Kombinationen atomarer Bedingungen werden getestet C 3 c minimale Mehrfachbedingungsüberdeckung jede atomare/komplexe Bedingung wird einmal mit true und false getestet MC/DC (engl. modified condition/decision coverage) Sonderform der C 3c-Überdeckung jede atomare Bedingung wird mit true und false getestet und... muss zusätzlich die umgebende komplexe Bedingung beeinflussen sehr hohe Fehlererkennungsrate bestimmte Pfade können nicht erreicht werden, hoher Aufwand 3 Bewertung 3.2 Testüberdeckung 17/36

Beispiel: Bedingungsüberdeckung int foo ( int a, int b, int c) { if ((a > b && a > c) c < 0) { if( a < b) return 1; else { if( b < c) return 2; } } return 4; } Einfachbedingungsüberdeckung a > b a > c c < 0 Testfall w w w f(1,0,-1) f f f f(0,1,1) Fokus auf die Bedingung: (a > b && a > c) c < 0 3 atomare Teilbedingungen a > b a > c c < 0 Modified Condition/Decision Coverage a > b a > c c < 0 (a > b && a > c) c < 0 Testfall w w f w f(1,0,0) f w f f f(1,1,0) w f f f f(1,0,1) f f w w f(-1,0,-1) 3 Bewertung 3.2 Testüberdeckung 18/36

Gliederung 1 Überblick 2 Testarten und Vorgehen Entwicklungsprozess Modultests Black-Box- vs. White-Box-Tests 3 Bewertung McCabe s Cyclomatic Complexity Testüberdeckung 4 Testen verteilter Echtzeitsysteme Problemfeld Reproduzierbarkeit Beobachtbarkeit Kontrollierbarkeit 5 Zusammenfassung 4 Testen verteilter Echtzeitsysteme 19/36

Testen: Ein Problem des SW-Engineering SW-Engineering Organisation Verteilte Systeme Reproduzierbarkeit Echtzeitsysteme Beobachtbarkeit Wirts-/Zielrechner A B A bedingt B A B A beeinflusst B A B anderweitige Beziehung Umgebungssimulation Repräsentativität 4 Testen verteilter Echtzeitsysteme 4.1 Problemfeld 20/36

Problemfeld: Reproduzierbarkeit SW-Engineering Organisation Verteilte Systeme Reproduzierbarkeit Echtzeitsysteme Beobachtbarkeit Wirts-/Zielrechner A B A bedingt B A B A beeinflusst B A B anderweitige Beziehung Umgebungssimulation Repräsentativität 4 Testen verteilter Echtzeitsysteme 4.2 Reproduzierbarkeit 21/36

Reproduzierbarkeit Für die Fehlersuche muss man das Fehlverhalten nachstellen können! wichtige Testvariante: Regressionstests (engl. regression testing) Wurde der Fehler auch wirklich korrigiert? Hat die Korrektur neue Defekte verursacht? Voraussetzung für Regressionstests Reproduzierbarkeit andernfalls ist keine Aussage zur Behebung des Fehler möglich verschiedene Ursachen können dasselbe Symptom hervorrufen Voraussetzung für die Reproduzierbarkeit ist: Beobachtbarkeit und die Kontrollierbarkeit des Systems Wie sonst soll man das Fehlverhalten nachstellen? 4 Testen verteilter Echtzeitsysteme 4.2 Reproduzierbarkeit 22/36

Reproduzierbarkeit Beobachtbarkeit Fehlverhalten zu reproduzieren erfordert mehr Wissen, als es zu erkennen. nicht-deterministische Operationen Abhängigkeiten z. B. vom Netzwerkverkehr Zufallszahlen ungenügendes Vorabwissen Fadensynchronisation asynchrone Programmunterbrechungen Zeitbasis der untersuchten Systeme dies sind relevante Ereignisse sie beeinflussen den Programmablauf hängen von der Anwendung ab Identifikation und Beobachtung erforderlich 4 Testen verteilter Echtzeitsysteme 4.2 Reproduzierbarkeit 23/36

Problemfeld: Fokus Verteilte Systeme SW-Engineering Organisation Verteilte Systeme Reproduzierbarkeit Echtzeitsysteme Beobachtbarkeit Wirts-/Zielrechner A B A bedingt B A B A beeinflusst B A B anderweitige Beziehung Umgebungssimulation Repräsentativität 4 Testen verteilter Echtzeitsysteme 4.2 Reproduzierbarkeit 24/36

Beobachtbarkeit verteilter EZS Erfassen des relevanten Verhaltens des Systems und der Umwelt Was kann man beobachten? Ausgaben bzw. Ergebnisse Zwischenzustände und -ergebnisse erfordern u.u. zusätzliche Ausgaben ( aufwändig, häufiges Übersetzen) Inspektion des Speichers mit einem Debugger Problem: Ausgaben beeinflussen das Systemverhalten Ausgaben verzögern Prozesse, Nachrichten,... Termin Problem: Debuggen Unmöglichkeit globaler Haltepunkte perfekt synchronisierte Uhren existieren nicht Wie soll man Prozesse gleichzeitig anhalten? bekanntes Phänomen: Probe Effect Vorführeffekt sobald man hinsieht, ist der Fehler verschwunden muss vermieden oder kompensiert werden 4 Testen verteilter Echtzeitsysteme 4.3 Beobachtbarkeit 25/36

Problemfeld: Fokus Echtzeitsysteme SW-Engineering Organisation Verteilte Systeme Reproduzierbarkeit Echtzeitsysteme Beobachtbarkeit Wirts-/Zielrechner A B A bedingt B A B A beeinflusst B A B anderweitige Beziehung Umgebungssimulation Repräsentativität 4 Testen verteilter Echtzeitsysteme 4.3 Beobachtbarkeit 26/36

Probe Effect : Verschärfung durch zeitlichen Aspekt Aspekt verteilte Systeme Probe Effect durch gleichzeitige Prozesse Systemzustand verteilt sich auf mehrere, gleichzeitig ablaufende Prozesse durch Beeinflussung einzelner Prozesse verändert sich der globale Zustand andere Prozesse enteilen dem beeinflussten Prozess ein Fehler lässt sich evtl. nicht reproduzieren Aspekt Echtzeitsysteme Probe Effect durch Zeitstempel neben dem Datum ist häufig ein Zeitstempel notwendig das Erstellen des Zeitstempels selbst benötigt Zeit (Auslesen eine Uhr,... ) die zu protokollierende Datenmenge wächst ebenfalls an Probe Effect durch Kopplung an die physikalische Zeit das kontrollierte Objekt enteilt dem beeinflussten Prozess auch einzelne Prozesse sind anfällig 4 Testen verteilter Echtzeitsysteme 4.3 Beobachtbarkeit 27/36

Probe Effect : Lösungsmöglichkeiten Ignoranz der Probe Effect wird schon nicht auftreten Minimierung hinreichend effiziente Datenaufzeichnung Kompensation der aufgezeichneten Daten verhindert nicht die Verfälschung des globalen Zustands Vermeidung Datenaufzeichnung existiert auch im Produktivsystem Einsatz dedizierter Hardware für die Datenaufzeichnung Einflussnahme wird hinter einer logischen Uhr verborgen zeitliche Schwankungen sind nicht relevant solange sich eine gewisse Reihenfolge nicht ändert 4 Testen verteilter Echtzeitsysteme 4.3 Beobachtbarkeit 28/36

Kontrollierbarkeit: Ein umfassendes Problem SW-Engineering Organisation Verteilte Systeme Reproduzierbarkeit Echtzeitsysteme Beobachtbarkeit Wirts-/Zielrechner A B A bedingt B A B A beeinflusst B A B anderweitige Beziehung Umgebungssimulation Repräsentativität 4 Testen verteilter Echtzeitsysteme 4.4 Kontrollierbarkeit 29/36

Kontrollierbarkeit Abspielen relevanter Ereignisse Beibehaltung der ursprünglichen Reihenfolge zeitlich akkurat umfasst alle relevanten Ereignisse asynchrone Programmunterbrechungen interne Entscheidungen des Betriebssystems Einplanung, Synchronisation Simulierte Zeit statt realer, physikalischer Zeitbasis Entkopplung von der Geschwindigkeit der realen Welt ansonsten könnte die Fehlersuche sehr, sehr lange dauern... Ansätze zur Kontrollierbarkeit sprachbasierte Ansätze statische Quelltextanalyse Quelltexttransformation implementierungsbasierte Ansätze Record & Replay 4 Testen verteilter Echtzeitsysteme 4.4 Kontrollierbarkeit 30/36

Statische Quelltextanalyse Identifizierung möglicher Ausführungsszenarien Berücksichtigung von Kommunikation, Synchronisation, Einplanung,... Ausführungsszenarien werden erzwungen Random Scheduler gleichzeitige Prozesse sequentielles Programm teste Sequentialisierungen statt der gleichzeitigen Prozesse Vorgehen ist mit grob-granularem Model Checking vergleichbar Random Scheduler 4 Testen verteilter Echtzeitsysteme 4.4 Kontrollierbarkeit 31/36

Record & Replay Monitoring zur Laufzeit Aufzeichnung aller relevanten Ereignisse event histories bzw. event traces dieser Mitschnitt wird später erneut abgespielt Vorteil: Lösungen für verteilte Echtzeitsysteme existieren vermeiden Probe Effect decken eine Vielzahl verschiedener Ereignisse ab Systemaufrufe, Kontextwechsel, asynchrone Unterbrechungen,... Synchronisation, Zugriffe auf gemeinsame Variablen,... Nachteil: enorm hoher Aufwand häufig ist Spezialhardware erforderlich es fallen große Datenmengen an Aufzeichnung erfolgt i. d. R. auf Maschinencodeebene, Eingaben,... es können nur beobachtete Szenarien wiederholt werden Änderungen am System machen existierende Mitschnitte u. U. wertlos Wiederholung & Mitschnitt müssen auf demselben System stattfinden 4 Testen verteilter Echtzeitsysteme 4.4 Kontrollierbarkeit 32/36

Herausforderungen beim Testen verteilter EZS [3] Ergeben sich vor allem aus der Systemebene Herausforderungen spezifisch für Echtzeitsysteme starke Kopplung zur Umgebung Echtzeitsysteme interagieren vielfältig mit dem kontrollierten Objekt Voranschreiten der realen Zeit nicht vernachlässigbar physikalische Vorgänge im kontrollierten Objekt sind an die Zeit gekoppelt Umgebung kann nicht beliebig beeinflusst werden Kontrollbereich der Aktuatoren ist beschränkt Herausforderungen spezifisch für verteilte Systeme hohe Komplexität Verteilung erhöht Komplexität Allokation, Kommunikation,... Beobachtung und Reproduzierbarkeit des Systemverhaltens fehlende globale Zeit kein eindeutiger globaler Zustand globale, konsistente Abbilder sind ein großes Problem 4 Testen verteilter Echtzeitsysteme 4.5 Überblick 33/36

Gliederung 1 Überblick 2 Testarten und Vorgehen Entwicklungsprozess Modultests Black-Box- vs. White-Box-Tests 3 Bewertung McCabe s Cyclomatic Complexity Testüberdeckung 4 Testen verteilter Echtzeitsysteme Problemfeld Reproduzierbarkeit Beobachtbarkeit Kontrollierbarkeit 5 Zusammenfassung 5 Zusammenfassung 34/36

Zusammenfassung Testen ist die Verifikationstechnik in der Praxis! Modul-, Integrations-, System- und Abnahmetest kann die Absenz von Defekten aber nie garantieren Modultests sind i. d. R. Black-Box-Tests Black-Box- vs. White-Box-Tests McCabe s Cyclomatic Complexity Minimalzahl von Testfällen Kontrollflussorientierte Testüberdeckung Anweisungs-, Zweig-, Pfad- und Bedinungsüberdeckung Angaben zur Testüberdeckung sind immer relativ! Systemtests für verteilte Echtzeitsysteme sind herausfordernd! Problemfeld: Testen verteilter Echtzeitsysteme SW-Engineering, verteilte Systeme, Echtzeitsysteme Probe-Effect, Beobachtbarkeit, Kontrollierbarkeit, Reproduzierbarkeit 5 Zusammenfassung 35/36

Literaturverzeichnis [1] Laplante, P. A.: Real-Time Systems Design and Analysys. third. John Wiley & Sons, Inc., 2004. ISBN 0 471 22855 9 [2] OSEK/VDX Group: Operating System Specification 2.2.3 / OSEK/VDX Group. 2005. Forschungsbericht. http://portal.osek-vdx.org/files/pdf/specs/os223.pdf, visited 2014-09-29 [3] Schütz, W. : Fundamental issues in testing distributed real-time systems. In: Real-Time Systems Journal 7 (1994), Nr. 2, S. 129 157. http://dx.doi.org/10.1007/bf01088802. DOI 10.1007/BF01088802. ISSN 0922 6443 6 Bibliographie 36/36