レコーダーによって収集されたデータは、ファイルに保管して、テストを生成するためにテスト・ジェネレーターによって取り込む必要があります。
収集されるデータは、レコーダーによって保管され、テスト・ジェネレーターによって取り込まれるように定義する必要があります。
記録されるデータの新規の型を定義するには、以下のタスクを実行します。
- com.ibm.rational.test.lt.recorder.core.recorderPacket 拡張ポイントを使用して、plugin.xml ファイルでレコーダー・パケットの新規の型を宣言します。
- 同じプラグインの中に、com.ibm.rational.test.lt.recorder.core.packet.IRecorderPacket インターフェースを実装する 1 つ以上の実装クラスを定義します。
IRecorderPacket クラス実装には以下の要因が該当します。
- データを格納するフィールドは任意の数だけ定義できます。
- これらのクラスはレコーダーによってインスタンス化されるため、各クラスは自身を構成する方法を公開する必要があります。
- テスト・ジェネレーターはこれらのクラスを使用するため、各クラスはテスト・ジェネレーター向けに情報を取得する方法を公開する必要があります。
言い換えると、getter メソッドを公開する必要があります。
- クラスを直列化可能にする必要があります。クラスの設計時にはこのことを考慮してください。
保管される情報に含めないデータに対する参照がこれらのクラスにあってはなりません。
保管されないデータに対する参照を含むフィールドは、transient キーワードを使用して宣言する必要があります。
これらのクラスを進化させる予定がある場合には、進化させたものに旧バージョンとの互換性を持たせるようにしてください。
レコーダー・パケットには以下の共通する特徴があります。
- タイプがあります。
これは、com.ibm.rational.test.lt.recorder.core.recorderPacket 拡張ポイントに対する拡張内で宣言されたタイプ ID である必要があります。このタイプ ID が宣言された場所と同じプラグイン内に実装クラスがある必要があります。
- 開始時刻および終了時刻があります。
通常、レコーダーは収集したその同じ時刻にパケットを送信するわけではないため、収集されたパケットをソートする際にこれが重要になります。パケットはアトミックに収集されるため、多くのパケットで開始イベントおよび終了イベントの時刻が同じになっています。
パケットの開始時刻と終了時刻は異なるものでなくても構いません。ただし、パケットの終了時刻は開始時刻以降である必要があります。すべてのタイム・スタンプは、フレームワークで指定された単位で表す必要があります。
単位はシステムで許可された最高精度のものである必要があります。
最良の結果を得るために、レコーダー・パケットの実装についての以下の方法に従ってください。
- 複数の型のデータがある場合は、すべての実装クラスによって実装されるインターフェースを定義してください。
- 具象実装クラスごとにインターフェース (クラスの読み取り専用フィーチャーのみを公開します) を定義してください。
レコーダーはクラスにアクセスする必要がありますが、テスト・ジェネレーターはインターフェースにのみアクセスする必要があります。
- 冗長フィールドおよび計算可能フィールドは定義しないでください。
クラスは直列化されるため、多くのパケットが格納される場合、1 つの追加フィールドによって記録ファイルが非常に大きくなってしまう場合があります。
冗長フィールドまたは計算可能フィールドは、transient キーワードを使用して宣言してください。