Organisation
- Fachgespräche: 19.07. und 02.08.
Zustandsbasiertes Testen
Testvorgehen
Warum PLS (gemäß Serie 4) tatsächlich nicht
deterministisch ist:
- die Transitionen aus den Zustandsmaschinen
FSB
und
RTS
feuern z.T. quasi gleichzeitig
- somit gibt es die Signale
pramfsb
und
pramrts
ebenfalls manchmal quasi gleichzeitig
- dann gibt es in
statemachine PRAM
folgenden
Nichtdeterminismus:
- Wenn der aktuelle Zustand
off
ist, dann macht die
Zustandsmaschine zwei aufeinanderfolgenden Übergänge bis
schließlich zum Zustand bothActive
.
- Dabei ist nicht festgelegt, welches der beiden Signale
pramfsb
und
pramrts
zuerst verarbeitet wird, somit ist
nicht festgelegt, welche Transition zuerst feuert, und somit ist
nicht festgelegt, ob die Zustandsmaschine den Weg durch
fsbActive
oder rtsActive
wählt.
Das Problem bei dem bisherigen Testvorgehen (Tutorium von 28.06.2004):
- Problem (1)
- Die Simulation wählt einen der oben beschriebenen Wege, im
ersten Schritt z.B. in den Zustand
fsbActive
.
- Der Testling wählt ggf. den anderen Weg, also in den Zustand
rtsActive
.
- Dann passen die tatsächlichen Ausgaben und die erwarteten
Ausgaben nicht zusammen, der Test schlägt fehl.
- Problem (2)
- Der Testling führt Transitionen möglicherweise
schnell
durch.
- Somit kann es sein, daß der Testling schon in
bothActive
angekommen ist, während der Test noch
auf die Resultate nach der 1. Transition (nach
fsbActive
) wartet.
- Dann passen die Ausgaben ebenfalls nicht zusammen.
Lösung: Tests werden nur gemacht (bzw. berücksichtigt), wenn die
Simulation nicht voranschreiten kann.
- Testvorgehen also wie gehabt, aber:
- Nach einem Simulationsschritt (d.h. nachdem in der Simulation eine
Transition gefeuert ist) testen, ob innerhalb von 100ms die
tatsächlichen Ausgaben mit den erwarteten übereinstimmen, ...
- ... aber falls in der Zwischenzeit eine weitere Transition
freigeschaltet ist, wird der aktuelle Testschritt verworfen,
und die Simulation macht den nächsten möglichen Schritt.
- Somit wird der zweite problematische Test (s.o.) effektiv nicht
durchgeführt.
- Der erste problematische Test (s.o.) wird ebenfalls verworfen; somit ist
es auch gleichgültig, durch welchen (internen) Zustand Testling und
Simulation laufen.
- Beachte: Diese Lösung ist nur ein Workaround für die
konkrete PLS-Spezifikation. Eine allgemeine Lösung müßte
im Gegensatz dazu die verschiedenen Wege prüfen und dabei
auswerten, ob der Testling einen der erlaubten Wege genommen
hat.
Auswertung
- Zustandsüberdeckung (state coverage)
- Welche Zustände wurden (wie oft) betreten?
- Transitionsüberdeckung (transition coverage)
- Welche Transitionen haben (wie oft) gefeuert?
- Simple Auswertung: Am Ende der Testdurchführung pro Zustand und pro
Transition die entsprechende Zahl ausgeben.
- [technisch:] achtet darauf, daß die Ausgabe im Logfile
erscheint bzw. speichert sie manuell, so daß sie bei der
Aufgabenlösung enthalten ist!
- [technisch:] Problem ist die Funktionalität von @rttPrint -
scheinbar funktioniert das nach Ende des Tests nicht vollständig.
Allgemeines
Feld von Funktionszeigern: arrayfp.c
Last modified: July 05, 2004 17:53:47 (GMT+2)
Stefan Bisanz stefan@bisanz-online.de