Von einem Testgenerator werden Recorderpakete verwendet und Testmodellelemente erzeugt, die dann vom Testgenerator zum Testmodell hinzugefügt werden.
Bevor Sie einen Testgenerator definieren, müssen Sie den Datentyp, der vom Generator verwendet werden kann, sowie den vom Generator erzeugten Modellelementtyp angeben. Bei den Eingabedaten für einen Testgenerator kann es sich entweder um die von den Recordern erzeugten Rohdaten handeln oder um Daten, die während der Konvertierungsphase geändert wurden. Die Ausgabeelemente eines Testgenerators sind nach Funktion typisiert, was normalerweise einem bestimmten Protokoll entspricht.
So definieren Sie einen neuen Testgenerator:
- Deklarieren Sie in der Datei plugin.xml einen neuen Testgeneratortyp. Verwenden Sie dazu den Erweiterungspunkt com.ibm.rational.test.lt.testgen.core3.testGenerator.
- Weisen Sie dem Testgenerator eine eindeutige ID und einen Namen zu.
- Deklarieren Sie, welche Pakettypen vom Testgenerator verwendet werden können.
- Deklarieren Sie die erforderlichen Eigenschaften des Paketdatenstroms, der an den Testgenerator gesendet wird. Das Framework weist die erforderlichen Converter in der Konvertierungsphase, sodass diese Eigenschaften überprüft werden, wenn die Pakete den Testgenerator erreichen. Informationen zum Definieren von Eigenschaften mithilfe von Convertern finden Sie unter Neuen Paketconverter definieren.
- Definieren Sie eine Implementierungsklasse, mit der die Schnittstelle "com.ibm.rational.test.lt.testgen.core.testgen.ITestGenerator" implementiert wird.
Das Produkt verfügt über einen integrierten Converter, mit dem ein nach den Startzeitmarken der einzelnen Pakete sortierter Paketdatenstrom erzeugt wird. Gewöhnlich werden von Recordern Pakete nach den Endzeitmarken sortiert erstellt. Bei den meisten Testgeneratoren ist es erforderlich, dass die Eingabedatenpakete nach Startzeitmarken sortiert sind. Aus diesem Grund muss zu den erforderlichen Eigenschaften des Paketdatenstroms die Eigenschaft sorted gehören.
Berücksichtigen Sie in Bezug auf Implementierungen von "ITestGenerator" die folgenden Fakten:
- Normalerweise erweitern Sie die Klasse "com.ibm.rational.test.lt.testgen.core.testgen.BaseTestGenerator", die eine Basisimplementierung bereitstellt und nur das Überschreiben der benötigten Methoden erfordert.
- In der Methode "initialize()" werden alle Optionen aus der Konfiguration des Testgenerators mithilfe der Methode "getContext().getConfiguration()" gelesen.
- Die Methode "process()" ist die wichtigste Methode. Sie wird vom Framework für jedes Eingabepaket aufgerufen. Mit dieser Methode werden Modellelemente erstellt und die Elemente zum Ausgabetest hinzugefügt. Modellelemente müssen mit Methoden aus dem Objekt "ITestStack", das von der Methode "getContext().getStack()" zurückgegeben wird, zum Test hinzugefügt werden.
- Die Methode "complete()" wird vom Framework aufgerufen, nachdem alle Pakete an den Testgenerator gesendet wurden. Die Methode "complete()" kann für die Ausführung von Nachbearbeitungsoperationen verwendet werden.
- Verwenden Sie die Methode "getContext().logMessage()", um Nachrichten des Testgenerators (inkl. Fehlernachrichten) für den Benutzer auszugeben. Wenn sich die Nachricht auf einen nicht behebbaren Fehler bezieht, wird der Prozess der Testgenerierung vom Framework gestoppt.
Anmerkung: Beim Hinzufügen von Elementen zu einem Test darf es bei einem Testgenerator zu keinerlei Verzögerung kommen. Elemente müssen von Testgeneratoren direkt bei ihrer Erstellung zum Test hinzugefügt werden. Nachdem ein Element zu einem Test hinzugefügt wurde, können weiterhin vom Testgenerator Daten zu diesem Element hinzugefügt werden. Wenn beim Hinzufügen von Elementen zu einem Test Verzögerungen auftreten, weisen generierte Elemente möglicherweise nicht die richtige Reihenfolge auf. Wenn beispielsweise von einem anderen Testgenerator ebenfalls Elemente in einer Umgebung mit gemischten Protokollen generiert werden oder die Aufzeichnung Anmerkungen enthält, weisen die generierten Elemente möglicherweise nicht die richtige Reihenfolge auf. Wenn Sie dennoch eine Verarbeitung ausführen müssen, durch die sich das Einfügen eines Elements in den Test verzögert (z. B. Kumulieren von Daten zum Erstellen eines Objekts auf höherer Ebene), schreiben Sie einen Converter, mit dem die Verarbeitung durchgeführt werden kann und fügen Sie diesen Converter vor dem Starten des Testgenerators ein.