このセクションでは、カスタム ツールで SOAtest/Virtualize を拡張する方法について説明します。

このセクションの内容:

カスタム ツールとは

 SOAtest/Virtualize にはカスタム ツールを追加できるフレームワークがあります。カスタム ツールを構成して、入力に対してカスタム拡張を実行できます。たとえば、カスタム ツールで変数を変更したり、ブラウザーの cookie を削除したりすることができます。

カスタム ツール用に実装するインターフェイス

「拡張機能の追加: 基本手順」に記載のように環境設定をしたら、次のインターフェイスを実装します (インターフェイスの詳細については、Extensibility API ドキュメントに記載されています)。

ICustomTool の実装

このクラスは必須であり、ツール拡張ロジックを実装するために使用されます。このインターフェイスには、実装するメソッドが 3 個あります。 

execute() メソッドにツールの実行ロジックを実装します。execute() メソッドには、IToolInput および IToolContext があります。IToolInput には、リクエストまたはレスポンスの XML またはトラフィックなど、ツールに送信された入力メッセージが格納されます。コンテキストを使用すると、UI 構成および出力マネージャーにアクセスできます。メソッドから true を返すと、ツールの実行が成功したことを意味し、false を返すと、ツールの実行が失敗したことを意味します。

出力マネージャーを使用すると、カスタム ツールのインスタンスに連結されたツールに IToolInput を送信できます。IToolInput の独自の実装を構築するか、Parasoft が提供するデフォルトの実装を使用できます。

たとえば、次のように parasoft-extension.xml に 2 つの出力が定義されているとします。

<output key="output_1" name="traffic header"/> 
<output key="output_2" name="traffic body"/>

SOAtest/Virtualize でカスタム ツールを選択して [テストまたは出力の追加] ボタン (SOAtest) または [レスポンダーまたは出力の追加] ボタン (Virtualize) をクリックし、出力を選択してツールに追加することができます。次のコードは、入力を構築して連結された出力ツールに渡すサンプルです。

public boolean execute(IToolInput input, IToolContext context) throws CustomToolException
{
    String charset ="UTF-8";
    String mimeType ="text/plain";
    String header ="";
    String message ="";
    . . .
    DefaultTextInput headerOutput = new DefaultTextInput(header, charset, mimeType);
    context.getOutputManager().runOutput("output_1", headerOutput, context);
    . . .
   DefaultTextInput msgOutput = new DefaultTextInput(message, charaset, mimeType);
   context.getOutputManager().runOutput("output_2", msgOutput, context);
   . . .
   return true;
}

 

ツールの実行中にエラーが発生した場合、IToolContext.report(String) を使用して 1 つ以上のエラーをレポートする必要があります。ツールの実行を完了できないような致命的なエラーが発生した場合、CustomToolException をスローします。これによって、ツールの実行が途中終了し、ツールが失敗するほか、シナリオの実行が中断します (致命的なエラーが発生した場合にシナリオが終了するよう設定されている場合)。どちらの方法でレポートされたエラーも、品質タスク ビューに表示されます。

その他に実装するメソッド

IToolInputs を処理する際、ツールに渡された IToolInputs の型をチェックする必要があります。多くの場合、SOAtest/Virtualize は IToolInputs のサブインターフェイスのインスタンスを渡します。しかしときには、入力を IToolInputs のより具体的なサブインターフェイスに変換できない場合があります。そのような場合、ツールに IToolInputs が渡されます。IToolInputs にはメソッドがありませんが、使用される内部的なオブジェクトにアクセスする方法があります。すべての IToolInputs は、内部的なインターフェイス com.parasoft.tool.IToolInputWrapper のインスタンスです。インターフェイスをキャストして getToolUsable() を呼び出すと、使用される内部的なオブジェクトにアクセスすることができます。

入力をカスタム ツールの出力に渡す場合にも、同様のケースが発生します。IToolInput のサブインターフェイスのインスタンスではなく、内部的な API のオブジェクトを渡す必要がある場合があります。その場合、内部インターフェイス com.parasoft.tool.IToolInputWrapper のインスタンスを返すと、com.parasoft.tool.ToolUsable が返されます。

カスタム ツール用に parasoft-extension.xml を定義

必要なクラスを実装した後、次のように parasoft-extension.xml を定義します。

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:ocm/parasoft/extensibility-framework/v1/extension"
                    type="tool"
                    name='the name of your tool, appears in menus'
                    description='A more detailed description'>
<class>com.myCompany.MyTool</class> <!-- implements ICustomTool -->
<version id='your version ID' updaterClass="com.myCompany.myUpdater"/>
<tool xmlns="http://schemas.parasoft.com/extensibility-framework/v1/tool"
           icon="myIcon.gif"
           useInputTab="true"
           successIndicator="true"
           category="myCategory"
           supportXmlConversion="true"
           showInToolList="common"
           showInOutputList="common">
           <outputs>
                     <output key="key" name="output name"/>
                     ...
           </outputs>
           </tool>
<form xmlns="urn:com/parasoft/extensibility-framework/gui">
                    <section label="field group 1">
                              <field id="key 1" label="field 1"/>
                              <field id="key 2" label="field 2"/>
                              <field id="element" label="Select an element" type="xpath"/>
                    </section>
                    <section label="field group 2">
                              <field id="key 3" label="field 1"/>
                              <field id="usr" label="Username"/>
                              <field id="pwd" label="Password" type="password"/>
                              . . .
                    </section>
                    . . .
</form>
</extension>

<tool> 要素

この要素は、カスタム ツール タイプの拡張に固有の要素です。カスタム ツールを SOAtestにインポートするには、この要素が有効で正しくなければなりません。

属性:

<form> 要素

この要素は、カスタム ツール タイプの拡張に固有の要素です。カスタム ツールを SOAtestにインポートするには、この要素が有効で正しくなければなりません。カスタム ツールの入力フィールドを定義します。

属性:

ヒント

 

新しいツールの検証

新しいツールが作成され、Parasoft 定義のツールとともに表示されることを確認します。