Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
280,89 KB
Nội dung
132 4 ¨ Aquivalenzpr ¨ ufung Referenztestf ¨ alle stimuli Referenz- ergebnisse Vergleicher Implementierung Implementierung Version k Version k +1 ? ≡ 0 Referenz- Abb. 4.11. Prinzip des Regressionstests [305] Zun ¨ achst werden in einem Simulationslauf sowohl die verwendeten Testfallein- gaben als auch die erzeugten Ausgaben einer Version k der Implementierung auf- gezeichnet und gespeichert. Diese Daten werden als Referenztestf ¨ alle, aufgeteilt in Referenzstimuli und Referenzergebnisse, bezeichnet. Liegt eine Version k +1 der Im- plementierung vor, wird diese mit den Referenzstimuli stimuliert und die erzeugten Ergebnisse mit den Referenzergebnissen verglichen. Treten Diskrepanzen zwischen erzeugten Ergebnissen der Version k + 1 und den Referenzergebnissen auf, muss bewertet werden, ob es sich hierbei um eine gew ¨ unschte oder unerw ¨ unschte Abweichung handelt. Unerw ¨ unschte Ergebnisse las- sen auf einen Fehler in der Implementierung schließen, was weiter ¨ uberpr ¨ uft werden muss. Dies ist notwendig, da es ebenfalls denkbar ist, dass das Referenzergebnis fehlerhaft war. Handelt es sich jedoch um eine gew ¨ unschte Abweichung von dem Referenzergebnis, etwa durch detailliertere Ausgaben, so wird das Referenzergebnis durch das neu erzeugte Ergebnis ersetzt. W ¨ ahrend Ende-zu-Ende-Tests auf einen konkreten Anwendungsfall eingeschr ¨ an- kt sind, stellen Regressionstests heutzutage einen Mindeststandard in der Systement- wicklung dar. Dies liegt im Wesentlichen an dem hohen Automatisierungsgrad, der bei Regressionstest erreicht werden kann. Auf der anderen Seite bieten Ende-zu- Ende-Tests die M ¨ oglichkeit, die Qualit ¨ at der Spezifikation zu erh ¨ ohen, da durch die mehrfache Implementierung Mehrdeutigkeiten und Unvollst ¨ andigkeit in der Spezifi- kation mit einer h ¨ oheren Wahrscheinlichkeit aufgedeckt werden. Allerdings kommt diese Qualit ¨ atssteigerung zu dem Preis der mehrfachen Entwicklung. 4.2 Explizite ¨ Aquivalenzpr ¨ ufung 133 4.2.2 Bereichstest Im Zusammenhang mit diversifizierenden Verifikationsmethoden stellt sich die Fra- ge, wie mit der gr ¨ oßten Wahrscheinlichkeit aber minimierten Simulationsaufwand Fehler aufgedeckt werden k ¨ onnen. Das Ziel ist es, die meist große Anzahl an Testf ¨ allen zu reduzieren und nur wichtige Szenarien zu simulieren. Hierzu muss man entscheiden, welche Testf ¨ alle wichtig und welche eher unwichtig sind. Da hierbei typischerweise eine große Menge an Testf ¨ allen ausgeschlossen wird, muss man bei der Auswahl der Testf ¨ alle sehr sorgf ¨ altig vorgehen. Die wesentlichen Kriterien zur Auswahl sind dabei, dass: • potentielle Fehler zuverl ¨ assig erkannt und • die Testf ¨ alle m ¨ oglichst f rei von Redundanz sind. W ¨ ahrend ersteres darauf abzielt, effektive Testf ¨ alle auszuw ¨ ahlen, zielt letzteres dar- auf ab, die Effizienz der Simulation der Testf ¨ alle zu erh ¨ ohen. Ein weit akzeptiertes Vorgehen bei der Auswahl von Testf ¨ allen ist die sog. ¨ Aqui- valenzklassenbildung. Hierbei werden Testf ¨ alle in sog. ¨ Aquivalenzklassen eingeteilt. Definition 4.2.1 ( ¨ Aquivalenzklasse). Eine ¨ Aquivalenzklasse von Testf ¨ allen ist eine Teilmenge aller m ¨ oglichen Testf ¨ alle, bei denen das erwartete Verhalten durch Stimu- lation mit Testfalleingaben aus dieser ¨ Aquivalenzklasse ¨ ahnlich ist. Man sieht bereits an dieser Definition, dass es sich bei dem Begriff der ¨ Aqui- valenzklasse um ein Konzept handelt, da es viele m ¨ ogliche Interpretationen f ¨ ur die ¨ Ahnlichkeit von Verhalten des Systems gibt. Dies ist maßgeblich von der gew ¨ ahlten Abstraktionsebene abh ¨ angig. Prinzipiell werden zwei Arten von ¨ Aquivalenzklassen- bildung unterschieden, die funktionsorientierte ¨ Aquivalenzklassenbildung und die strukturorientierte ¨ Aquivalenzklassenbildung. Bei der funktionsorientierten ¨ Aquiva- lenzklassenbildung werden die ¨ Aquivalenzklassen anhand der Spezifikation erstellt. Im Gegensatz dazu basiert die strukturorientierte ¨ Aquivalenzklassenbildung auf der Implementierung. Weiterhin beachte man bei Definition 4.2.1, dass lediglich von einem erwarteten Verhalten gesprochen wird. Resultiert aus den Simulationen mit zwei Elementen aus der selben ¨ Aquivalenzklasse unterschiedliches Verhalten, muss entweder die ¨ Aquivalenzklassenbildung oder die Implementierung des Systems feh- lerhaft sein. Beispiel 4.2.1. Als einfaches Beispiel wird zun ¨ achst ein System mit einem einzelnen nummerischen Eingang betrachtet. Die Spezifikation gibt vor, dass das System aus- schließlich positive Werte als Eingabe gestattet. Somit k ¨ onnen zwei ¨ Aquivalenzklas- sen von Testf ¨ allen gebildet werden: Solche mit Stimuli durch positive Zahlen und solche mit Stimuli durch nichtpositive Zahlen. Die Eingabe von positiven Zahlen stellen den Normalfall f ¨ ur das System dar, weshalb die zugeh ¨ orige ¨ Aquivalenzklasse als g ¨ ultig bezeichnet wird. Testf ¨ alle mit Eingaben von nichtpositiven Zahlen bilden entsprechend die ung ¨ ultige ¨ Aquivalenzklasse. Dies weißt darauf hin, dass Testfal- leingaben aus dieser ¨ Aquivalenzklasse ung ¨ ultig sind und somit vermutlich zu einem Fehlverhalten f ¨ uhren. 134 4 ¨ Aquivalenzpr ¨ ufung Zur Auswahl der Testf ¨ alle k ¨ onnen auf Basis der ¨ Aquivalenzklassen die folgenden Richtlinien gegeben werden: Falls die g ¨ ultige ¨ Aquivalenzklasse einen Bereich von Werten repr ¨ asentiert, so k ¨ onnen jeweils zwei ung ¨ ultige ¨ Aquivalenzklassen gebildet werden. Ist z. B. die g ¨ ultige ¨ Aquivalenzklasse durch den Bereich 1 ≤ x ≤ 10 gegeben, so lauten die zugeh ¨ origen ung ¨ ultigen ¨ Aquivalenzklassen x < 1 und x > 10. Ist die g ¨ ultige ¨ Aquivalenzklasse allerdings eine Menge an Werten, so wird in der Regel lediglich eine ung ¨ ultige ¨ Aquivalenzklasse gebildet. Sei z. B. x ∈{rot,blau} eine g ¨ ultige ¨ Aquivalenzklasse, so kann eine ung ¨ ultige ¨ Aquivalenzklasse wie folgt gebildet werden: x ∈{allerFarben}\{rot,blau}. Ist eine g ¨ ultige ¨ Aquivalenzklasse durch eine Bedingung gegeben, z. B. x > 10, so kann eine ung ¨ ultige ¨ Aquivalenzklasse wie folgt aussehen: x ≤ 10. H ¨ aufig werden ¨ Aquivalenzklassen aber nicht anhand der Eing ¨ ange, sondern f ¨ ur Ausgangsbedingungen eines Systems gebildet. Hierzu werden zun ¨ achst die Aus- gangsbedingungen aufgestellt. Anhand dieser werden, in einem folgenden Schritt, die ¨ Aquivalenzklassen f ¨ ur die Testfalleingaben ermittelt, welche die gew ¨ unschten Ausgangsbedingungen produzieren. Die Regeln zur Erzeugung der g ¨ ultigen und ung ¨ ultigen ¨ Aquivalenzklassen k ¨ onnen in diesem Fall direkt ¨ ubertragen werden. Unter der Annahme, dass das System die Funktion y = f (x) implementiert und die Ausgangsbedingung 1 ≤ y ≤ 10 lautet, k ¨ onnen eine g ¨ ultige ¨ Aquivalenzklasse x ∈{x | 1 ≤ f (x) ≤ 10} und zwei ung ¨ ultige ¨ Aquivalenzklassen x ∈{x | f (x) < 1} und x ∈{x | f (x) > 10} gebildet werden. 4.2.3 Pfadbereichstest Durch Bildung von ¨ Aquivalenzklassen ist das Problem der Auswahl sinnvoller Testf ¨ alle allerdings noch nicht gel ¨ ost. Hierzu wurden eine Reihe von Verfahren ent- wickelt, die sich unter dem Begriff Bereichstest (engl. domain testing) zusammen- fassen lassen. Das strukturorientierte Verfahren mit dem Namen Pfadbereichstest [462] geht davon aus, dass Fehler in einem System in zwei Klassen eingeteilt wer- den k ¨ onnen: 1. Bereichsfehler f ¨ uhren zur Ausf ¨ uhrung eines falschen Kontrollpfads. 2. Berechnungsfehler entstehen, wenn zwar der richtige Kontrollpfad ausgef ¨ uhrt wird, das berechnete Ergebnis allerdings falsch ist. Der Pfadbereichstest zielt auf die Erkennung von Bereichsfehlern. Allerdings ist hierdurch nicht ausgeschlossen, dass ebenfalls Berechnungsfehler erkannt werden k ¨ onnen. Das prinzipielle Vorgehen zur Erstellung eines Pfadbereichstests ist das wie- derholte bilden von ¨ Aquivalenzklassen anhand des Kontrollflusses eines Systems. Dies wird anhand eines Beispiels aus [305] verdeutlicht. Beispiel 4.2.2. Gegeben ist die folgende C-Funktion zur Bestimmung der betragsm ¨ a- ßig gr ¨ oßeren Zahl zweier reeller Zahlen. 4.2 Explizite ¨ Aquivalenzpr ¨ ufung 135 1 void minMaxBetrag(double &min, double &max) { 2 if (min < 0) { 3 min *= -1; 4} 5 if (max < 0) { 6 max *= -1; 7} 8 if (min > max) { 9 double tmp = min; 10 min = max; 11 max = tmp; 12 } 13 } Hierzu wird zun ¨ achst der Betrag der Variable min, anschließend der Betrag der Varia- blen max bestimmt. In einem anschließenden Schritt wird der gr ¨ oßere Betrag beider Zahlen bestimmt. Der gr ¨ oßere Betrag ist am Ende in der Variablen max, der kleinere Betrag in der Variablen min gespeichert. Zur Auswahl der Testf ¨ alle beim Pfadbereichstest st ¨ utzt man sich auf die An- nahme, dass Fehler am h ¨ aufigsten an Bereichsgrenzen auftreten. Um auf dieser An- nahme Testf ¨ alle zu generieren, werden zun ¨ achst Eingabebedingungen f ¨ ur die unter- schiedlichen Programmpfade der C-Funktion aufgestellt. Die Eingabebedingungen definieren Teilbereiche der Eingabewerte, durch welche die Ausf ¨ uhrung eines be- stimmten Programmpfads stimuliert wird. Ist einer dieser Teilbereiche leer, so kann der zugeh ¨ orige Pfad nicht ausgef ¨ uhrt werden. Sind die Eingabebedingungen bekannt, kann jedem Pfad p i ein Teilbereich d(p i ) der Eingabewerte, der sog. Pfadbereich, und die berechnete Funktion c(p i ), die sog. Pfadberechnung, zugeordnet werden. Mit diesem Wissen kann das Verhalten eines Systems durch eine potentiell unendlich große Anzahl an Paaren (d(p i ),c(p i )) re- pr ¨ asentiert werden. Beispiel 4.2.3. F ¨ ur das Programm aus Beispiel 4.2.2 ist der zugeh ¨ orige Kontroll- Datenflussgraph in Abb. 4.12 dargestellt. Insgesamt sind acht unterschiedliche Pfade im Kontrollflussgraphen m ¨ oglich. Somit l ¨ asst sich das Programm aus Beispiel 4.2.2 durch folgende Paare aus Eingangsbedingungen und Berechnungen f ¨ ur die acht Pfa- de darstellen, wobei die Pfadbereiche durch Pr ¨ adikate beschrieben werden: p 1 =(v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 6 ,v 7 ): d(p 1 ) : (min in < 0) ∧(max in < 0) ∧(−max in < −min in ) c(p 1 ) : min out := −max in ; max out := −min in p 2 =(v 1 ,v 3 ,v 4 ,v 5 ,v 6 ,v 7 ): d(p 2 ) : (min in ≥ 0) ∧(max in < 0) ∧(−max in < min in ) c(p 2 ) : min out := −max in ; max out := min in 136 4 ¨ Aquivalenzpr ¨ ufung CFG NOP NOP NOP NOP NOP NOP v 1 v 2 v 3 v 4 v 5 v 6 v 7 min ≥ 0 min < 0 max ≥ 0 max < 0 max < min max ≥ min min *= -1 max *= -1 tmp = min min = max max = tmp Abb. 4.12. Kontroll–Datenflussgraph f ¨ ur die Funktion minMaxBetrag aus B eispiel 4.2.2 p 3 =(v 1 ,v 2 ,v 3 ,v 5 ,v 6 ,v 7 ): d(p 3 ) : (min in < 0) ∧(max in ≥ 0) ∧(max in < −min in ) c(p 3 ) : min out := max in ; max out := −min in p 4 =(v 1 ,v 3 ,v 5 ,v 6 ,v 7 ): d(p 4 ) : (min in ≥ 0) ∧(max in ≥ 0) ∧(max in < min in ) c(p 4 ) : min out := max in ; max out := min in p 5 =(v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 7 ): d(p 5 ) : (min in < 0) ∧(max in < 0) ∧(−min in ≤−max in ) c(p 5 ) : min out := −min in ; max out := −max in p 6 =(v 1 ,v 3 ,v 4 ,v 5 ,v 7 ): d(p 6 ) : (min in ≥ 0) ∧(max in < 0) ∧(min in ≤−max in ) c(p 6 ) : min out := min in ; max out := −max in 4.2 Explizite ¨ Aquivalenzpr ¨ ufung 137 p 7 =(v 1 ,v 2 ,v 3 ,v 5 ,v 7 ): d(p 7 ) : (min in < 0) ∧(max in ≥ 0) ∧(−min in ≤ max in ) c(p 7 ) : min out := −min in ; max out := max in p 8 =(v 1 ,v 3 ,v 5 ,v 7 ): d(p 8 ) : (min in ≥ 0) ∧(max in ≥ 0) ∧(min in ≤ max in ) c(p 8 ) : min out := min in ; max out := max in Dabei bezeichnet min in und max in jeweils die Eingangsbelegung der Variablen min und max. Entsprechend bezeichnet min out und max out die jeweilige Belegung der Variablen min und max beim Verlassen der Funktion minMaxBetrag. Zur Auswahl der Testf ¨ alle werden in [462] sog. On- und Off-Testf ¨ alle definiert. Eingaben von On-Testf ¨ alle besitzen die Eigenschaft, dass sie Werte, die direkt auf einer Bereichsgrenze liegen, stimulieren. Eingaben von Off-Testf ¨ alle hingegen sti- mulieren Werte, die ein ε von dieser Bereichsgrenze entfernt liegen. Hierbei m ¨ ussen zwei F ¨ alle unterschiedenen werden: 1. Ist die betrachtete Bereichsgrenze eine geschlossene Grenze, so liegt der On- Testfall innerhalb dieses Bereiches. Der Off-Testfall wird ein ε entfernt von der Bereichsgrenze gelegt, also außerhalb des Bereichs. Der Off-Testfall geh ¨ ort so- mit zu einem Nachbarbereich. 2. Ist die betrachtete Bereichsgrenze hingegen eine offene Grenze, so liegt der On- Testfall bereits in einem Nachbarbereich. Der Off-Testfall wird dann ein ε ent- fernt von der Bereichsgrenze, in den betrachteten Bereich gelegt. Beispiel 4.2.4. Als Fortsetzung f ¨ ur die Beispiele 4.2.2 und 4.2.3 werden Testfallein- gaben f ¨ ur die Pfadbereiche d(p i ) f ¨ ur alle acht Kontrollflusspfade p i des Programms minMaxBetrag erstellt. Hierzu bietet es sich an, die Pfadbereiche graphisch dar- zustellen (siehe Abb. 4.13). Pfadbereichsgrenzen sind durch die min in - und max in - Achse sowie die beiden Winkelhalbierenden gegeben. Ob eine Bereichsgrenze offen oder geschlossen ist, ist jeweils durch einen kleinen Pfeil gekennzeichnet. Hierbei zeigt der Pfeil an der Grenze immer in den f ¨ ur die Grenze geschlossenen Bereich. Als Beispiel seien die Bereichsgrenzen des Bereichs d(p 6 ) : (min in ≥ 0) ∧ (max in < 0)∧(min in ≤−max in ) betrachtet. Sowohl die angrenzende max in -Achse als auch die angrenzende Winkelhalbierende geh ¨ oren zu diesem Bereich. Um die Pfad- bereichsgrenze, die durch die Winkelhalbierende gegeben ist, zu ¨ uberpr ¨ ufen, w ¨ ahlt man nun drei Testfalleingaben, so dass diese eine On-Off-On-Folge ergeben, d. h. man w ¨ ahlt zun ¨ achst einen Testfall direkt auf der Winkelhalbierenden, dann einen um einen ε entfernten im Bereich d(p 2 ) liegenden, und anschließend wieder einen Testfall direkt auf der Winkelhalbierenden. Dies ist in Abb. 4.13 f ¨ ur die Testf ¨ alle mit Eingabe (x 1 ,x 2 ,x 3 ) gegeben. F ¨ uhrt man nun eine Simulation f ¨ ur einen Pfadbereich d(p i ) entsprechend mit den On-Off-On-Testf ¨ allen durch, kann es zu einem nicht erwarteten Ergebnis kommen. 138 4 ¨ Aquivalenzpr ¨ ufung 0 1 1 d(p 1 ) d(p 3 ) d(p 2 ) d(p 4 ) d(p 5 ) d(p 6 ) d(p 7 ) d(p 8 ) geschlossene Grenze f ¨ ur d( p 7 ) offene Grenze f ¨ ur d( p 3 ) x 1 x 3 ε x 2 max in min in Abb. 4.13. Pfadbereiche des Programms minMaxBetrag aus Beispiel 4.2.2 [305] Ob dieses unerwartete Ergebnis auf einen Fehler schließen l ¨ asst, muss zun ¨ achst ge- pr ¨ uft werden. Handelt es sich um ein Fehlverhalten, so k ¨ onnen drei Arten von Fehler unterschieden werden: 1. Wird ein Bereichsfehler entdeckt, so muss der Pfadbereich d(p i ) angepasst werden. Es wird eine sog. Pfadbereichsanpassung vorgenommen. Dies ist in Abb. 4.14a) f ¨ ur den Fall, dass ein On-Testfall fehlschl ¨ agt, in Abb. 4.14b) f ¨ ur den Fall, dass der Off-Testfall fehlschl ¨ agt, dargestellt. M ¨ ogliche neue Bereichsgren- zen sind als gepunktete Linien gezeichnet. 2. Wird hingegen ein Berechnungsfehler erkannt, d. h. das tats ¨ achliche Ergebnis passt nicht zu dem erwarteten Ergebnis, so muss die Berechnung c(p i ) dieses Pfades korrigiert werden. Es wird eine sog. Pfadberechnungsanpassung vorge- nommen. 3. Wird das Fehlen eines Pfades p j erkannt, so muss ein neues Paar (d(p j ),c(p j )) gebildet werden, wobei d(p j ) ein Teilbereich des vorherigen Pfadbereichs d(p i ) ist. Es wird eine sog. Pfaderg ¨ anzung vorgenommen. Man beachte, dass Anpassungen im Allgemeinen nicht einer einzelnen Klasse dieser Fehler zugeordnet werden k ¨ onnen. So kann eine ¨ Anderung in einer Variablenbele- 4.2 Explizite ¨ Aquivalenzpr ¨ ufung 139 0 1 d(p 2 ) d(p 6 ) x 1 x 3 ε x 2 b) fehlerhaft min in 0 1 d(p 2 ) d(p 6 ) x 1 x 3 ε x 2 fehlerhaft a) min in Abb. 4.14. Anpassung der Pfadbereichsgrenze [305] gung sowohl den Pfadbereich als auch die Pfadberechnung ¨ andern. Insbesondere ist jede Pfaderg ¨ anzung auch eine Pfadbereichsanpassung. Falls jedoch alle drei Testfalleingaben das erwartete Ergebnis liefern, gibt es zwei M ¨ oglichkeiten: 1. Entweder ist die Bereichsgrenze korrekt oder 2. sie weicht im Dreieck der drei Testf ¨ alle maximal um das gew ¨ ahlte ε ab. Ein solches Beispiel ist in Abb. 4.13 als gepunktete Linie dargestellt. In den meisten F ¨ allen wird es nicht m ¨ oglich sein, alle Pfade eines Programms mit Testf ¨ allen zu simulieren, da dies zu aufwendig w ¨ are. Allerdings l ¨ asst sich der Grad der erzielten Verifikationsvollst ¨ andigkeit beim Pfadbereichstest direkt mit der Pfad ¨ uberdeckung messen und somit eine Aussage ¨ uber den Grad der Vollst ¨ andigkeit der Verifikation treffen. 4.2.4 Fehleroffenbarende Unterbereiche Eine Erweiterung des Pfadbereichstests ist in [461] vorgestellt. Neben der Konstruk- tion der Pfadbereiche anhand der Implementierung, wird zus ¨ atzlich die Spezifikation zu Rate gezogen. Hierdurch soll es z. B. erm ¨ oglicht werden, fehlende Pfade in der Implementierung zu erkennen. Hierzu werden sog. fehleroffenbarende Unterberei- che konstruiert. Dabei werden zun ¨ achst die Pfadbereiche nach dem oben beschrie- benen Verfahren bestimmt. In einem zweiten Schritt werden ¨ Aquivalenzklassen aus der Spezifikation abgeleitet. Pfadbereiche und ¨ Aquivalenzklassen werden paarwei- se geschnitten. Als Ergebnis erh ¨ alt man die fehleroffenbarenden Unterbereiche, die dadurch gekennzeichnet sind, dass sie nur Testfalleingaben enthalten, die laut Spe- zifikation zu einem gleichen Verhalten f ¨ uhren und die auch vom System gleichartig verarbeitet werden. Dies wird an folgendem Beispiel aus [305] gezeigt: 140 4 ¨ Aquivalenzpr ¨ ufung Beispiel 4.2.5. F ¨ ur das Programm minMaxBetrag aus Beispiel 4.2.2 wurde in Bei- spiel 4.2.3 gezeigt, dass die Implementierung acht verschiedene Kontrollpfade ent- h ¨ alt. Aus der Spezifikation k ¨ onnen drei ¨ Aquivalenzklasse d(s 1 ),d(s 2 ) und d(s 3 ) ab- geleitet werden: s 1 : d(s 1 ) : |min in | < |max in | c(s 1 ) : min out := |min in |; max out := |max in | s 2 : d(s 2 ) : |min in | > |max in | c(s 2 ) : min out := |max in |; max out := |min in | s 3 : d(s 3 ) : |min in | = |max in | c(s 3 ) : min out = max out := |min in | W ¨ ahrend die ¨ Aquivalenzklasse d(s 2 ) die Pfadbereiche d(p 1 ), ,d(p 4 ) umfasst, kann eine eindeutige Zuordnung f ¨ ur die ¨ Aquivalenzklassen d(s 1 ) und d(s 3 ) nicht gemacht werden. So gilt z. B., dass d(p 5 ) zum Teil in d(s 1 ) und zum Teil in d(s 3 ) enthalten ist, aber weder d(s 1 ) noch d(s 3 ) vollst ¨ andig in d(p 5 ) enthalten ist. Durch die paarweise Schnittmengenbildung k ¨ onnen die fehleroffenbarenden Unterbereiche identifiziert werden: d 1 = d(s 1 ) ∩d(p 5 )=(min in < 0) ∧(max in < 0) ∧(−min in < −max in ) d 2 = d(s 1 ) ∩d(p 6 )=(min in ≥ 0) ∧(max in < 0) ∧(min in < −max in ) d 3 = d(s 1 ) ∩d(p 7 )=(min in < 0) ∧(max in ≥ 0) ∧(−min in < max in ) d 4 = d(s 1 ) ∩d(p 8 )=(min in ≥ 0) ∧(max in ≥ 0) ∧(min in < max in ) d 5 = d(s 2 ) ∩d(p 1 )=(min in < 0) ∧(max in < 0) ∧(−max in < −min in ) d 6 = d(s 2 ) ∩d(p 2 )=(min in ≥ 0) ∧(max in < 0) ∧(−max in < min in ) d 7 = d(s 2 ) ∩d(p 3 )=(min in < 0) ∧(max in ≥ 0) ∧(max in < −min in ) d 8 = d(s 2 ) ∩d(p 4 )=(min in ≥ 0) ∧(max in ≥ 0) ∧(max in < min in ) d 9 = d(s 3 ) ∩d(p 5 )=(min in < 0) ∧(max in < 0) ∧(−min in = −max in ) d 10 = d(s 3 ) ∩d(p 6 )=(min in ≥ 0) ∧(max in < 0) ∧(min in = −max in ) d 11 = d(s 3 ) ∩d(p 7 )=(min in < 0) ∧(max in ≥ 0) ∧(−min in = max in ) d 12 = d(s 3 ) ∩d(p 8 )=(min in ≥ 0) ∧(max in ≥ 0) ∧(min in = max in ) Die hier vorgestellten simulativen Verfahren zur expliziten ¨ Aquivalenzpr ¨ ufung lassen sich auf speicherbehaftete Systeme erweitern, indem Sequenzen von Ein- und Ausgaben anstelle einzelner Ein- und Ausgabesymbole betrachtet werden, um den Einfluss des im Speicher abgebildeten Zustands erfassen zu k ¨ onnen. Weiterf ¨ uhrende Verfahren zur Generierung von funktions- und strukturorientierten Testf ¨ allen sind in Abschnitt 7.2 beschrieben. Formale Methoden zur expliziten ¨ Aquivalenzpr ¨ ufung kombinatorischer Hardware sind in Abschnitt 6.1.2 zu finden. 4.3 Sequentielle ¨ Aquivalenzpr ¨ ufung 141 4.3 Sequentielle ¨ Aquivalenzpr ¨ ufung Digitale Hardware/Software-Systeme arbeiten typischerweise ¨ uber sehr lange Zeit- r ¨ aume ohne Neustart. Dabei verarbeiten sie nicht nur ein einzelnes Eingabesymbol zu einem Ausgabesymbol, sondern Sequenzen von Eingabesymbolen zu Sequenzen von Ausgabesymbolen. Dabei h ¨ angt die aktuelle Ausgabe eines Systems im Allge- meinen nicht nur von der momentanen, sondern auch von vorherigen Eingaben ab. Dies ist in Abb. 4.15 dargestellt, wobei die Ausgabe des speicherbehafteten Systems (Abb. 4.15b)) stets von dem aktuellen und den zwei vorherigen Eingangssymbolen abh ¨ angt. System speicherbehaftetes speicherloses System b) a) Abb. 4.15. Verarbeitung in Systemen a) ohne und b) mit Speicher [272] Die Information zur Berechnung der aktuellen Ausgabe ist dabei in den Speicher- elementen des Systems gespeichert. Viele wichtige speicherbehaftete Systeme lassen sich als deterministische endliche Automaten (engl. Deterministic Finite Automaton, DFA) (siehe Definition 2.2.13 auf Seite 47) modellieren. Aus diesem Grund wird die sequentielle ¨ Aquivalenzpr ¨ ufung anhand von Automaten- ¨ Aquivalenz eingef ¨ uhrt. Verfahren zur sequentiellen ¨ Aquivalenzpr ¨ ufung f ¨ ur Hardware sind in Abschnitt 6.1.3 beschrieben. Verfahren zur Prozessor- und Software- ¨ Aquivalenzpr ¨ ufung sind in den Abschnitten 6.3 und 7.1 diskutiert. Endliche Automaten k ¨ onnen explizit als Zustandsdiagramme repr ¨ asentiert wer- den. Zust ¨ ande s ∈ S werden als Knoten gezeichnet. Zustands ¨ uberg ¨ ange werden ent- sprechend der ¨ Ubergangsfunktion f als Kanten (s, s ) modelliert, wobei s der aktuelle Zustand und s := f (s,i) der Folgezustand ist. Diese werden mit dem Eingabesymbol i ∈ I, das den ¨ Ubergang ausl ¨ ost, und dem erzeugten Ausgabesymbol o ∈ O beschrif- tet, wobei o := g(s,i) sich aus der Ausgabefunktion g ergibt. Endliche Automaten arbeiten auf Sequenzen von Eingabesymbolen. Sei I + die Menge aller endlichen Sequenzen, die sich aus den Symbolen i ∈ I bilden lassen. Entsprechend sei O + die Menge aller endlichen Sequenzen, die sich aus den Ausga- besymbolen o ∈ O bilden lassen. Eingabesequenzen w ∈ I + der L ¨ ange n werden im . finden. 4.3 Sequentielle ¨ Aquivalenzpr ¨ ufung 141 4.3 Sequentielle ¨ Aquivalenzpr ¨ ufung Digitale Hardware/Software-Systeme arbeiten typischerweise ¨ uber sehr lange Zeit- r ¨ aume ohne Neustart.