Die von einem Recorder erfassten Daten müssen in einer Datei gespeichert und von einem Testgenerator verarbeitet werden, um einen Test zu erzeugen. Erfasste Daten müssen so definiert sein, dass sie vom Recorder gespeichert und vom Testgenerator verarbeitet werden können.
Zum Definieren eines neuen Typs für erfasste Daten müssen Sie folgende Schritte ausführen:
- Deklarieren Sie in der Datei plugin.xml einen neuen Recorderpakettyp. Verwenden Sie dazu den Erweiterungspunkt com.ibm.rational.test.lt.recorder.core.recorderPacket.
- Definieren Sie in demselben Plug-in eine oder mehrere Implementierungsklassen, mit denen die Schnittstelle com.ibm.rational.test.lt.recorder.core.packet.IRecorderPacket implementiert wird.
Die folgenden Faktoren beziehen sich auf Implementierungen der Klasse "IRecorderPacket":
- Sie können so viele Felder definieren, wie zum Speichern der Daten erforderlich sind.
- Da diese Klassen durch einen Recorder instanziiert werden, müssen Sie ein Verfahren für ihre Erstellung bieten.
- Da diese Klassen von einem Testgenerator verwendet werden, müssen Sie Verfahren zum Abrufen von Informationen für den Testgenerator bereitstellen. Mit anderen Worten: Sie müssen Getter-Methoden bieten.
- Sie müssen die Klassen serialisierbar machen. Beachten Sie dies beim Entwerfen der Klassen. Die Klassen dürfen keine Verweise auf Daten enthalten, die nicht in die gespeicherten Informationen aufgenommen werden sollen. Felder, die Verweise auf Daten enthalten, die nicht gespeichert werden sollen, müssen mit dem Schlüsselwort transient deklariert werden. Wenn Sie Weiterentwicklungen dieser Klassen planen, müssen Sie sicherstellen, dass diese Weiterentwicklungen mit früheren Versionen kompatibel sind.
Recorderpakete haben die folgenden gemeinsamen Merkmale:
- Sie weisen einen Typ auf. Dabei muss es sich um eine Typ-ID handeln, die in einer Erweiterung für den Erweiterungspunkt com.ibm.rational.test.lt.recorder.core.recorderPacket deklariert ist. Die Implementierungsklasse muss sich in demselben Plug-in befinden, in dem auch die Typ-ID deklariert ist.
- Sie weisen eine Startzeit und eine Endzeit auf. Dies ist für das Sortieren erfasster Pakete wichtig, da Recorder die Pakete in der Regel nicht zu exakt demselben Zeitpunkt senden, zu dem sie erfasst werden. Viele Pakete weisen denselben Zeitpunkt für Start- und Endereignisse auf, da sie einzeln erfasst werden. Die Pakete müssen nicht unterschiedliche Start- und Endzeiten aufweisen. Die Paketendzeit muss allerdings später oder gleich der Packetstartzeit sein. Alle Zeitmarken müssen in Einheiten angegeben werden, die vom Framework bereitgestellt werden. Diese Einheiten müssen die höchste vom System gebotene Genauigkeit aufweisen.
Mit den folgenden Verfahren erzielen Sie beim Implementieren von Recorderpaketen die besten Ergebnisse:
- Wenn Sie über mehr als einen Datentyp verfügen, definieren Sie eine Schnittstelle, die von allen Implementierungsklassen implementiert wird.
- Definieren Sie eine Schnittstelle für jede konkrete Implementierungsklasse, die nur schreibgeschützte Funktionen der Klasse bereitstellt. Der Testgenerator muss nur auf die Schnittstellen zugreifen können, während der Recorder auf die Klassen zugreifen muss.
- Definieren Sie keine redundanten oder berechenbaren Felder. Da die Klassen serialisiert sind, kann sich die Aufzeichnungsdatei durch ein einziges zusätzliches Feld wesentlich vergrößern, wenn viele Pakete gespeichert werden. Deklarieren Sie ein redundantes oder berechenbares Feld mit dem Schlüsselwort transient.