このトピックでは、カスタム ツールを使用して SOAtest と Virtualize を拡張する方法について説明します。
セクションの内容:
SOAtest と Virtualize には、カスタム ツールを追加するためのフレームワークが含まれています。カスタム ツールは、入力時にカスタム実行を実行するように構成できます。たとえば、カスタム ツールは変数を変更したり、ブラウザーの Cookie を削除したりする場合があります。
カスタム拡張機能の環境を設定したら、次のインターフェイスを実装します (Extensibility API ドキュメントで説明しています)。
これは、ツール実行ロジックを実装するために使用される必須クラスです。このインターフェイスで実装するメソッドは 3 つあります。
IToolInput と IToolContext を提供する execute() メソッドを使用して、ツールの実行ロジックを実装します。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 を使用する場合は、ツールに渡される IToolInput の特定のタイプを確認する必要があります。ほとんどの場合、SOAtest または Virtualize は IToolInput のサブインターフェイスのインスタンスを渡します。ただし、入力を IToolInput のより具体的なサブインターフェイスに変換できない場合もあります。そのような場合は、単純な IToolInput がツールに渡されます。IToolInput にはメソッドはありませんが、使用されている内部オブジェクトにアクセスする方法はあります。すべての IToolInputs は、com.parasoft.tool.IToolInputWrapper と呼ばれる内部インターフェイスのインスタンスになります。そのインターフェイスにキャストしてから getToolUsable() メソッドを呼び出して、使用されている内部オブジェクトにアクセスできます。
カスタム ツールの出力に入力を渡すときにも、同様のケースが発生する可能性があります。IToolInput のより具体的なサブインターフェイスのインスタンスではなく、内部 API からオブジェクトを渡す必要がある場合があります。その場合は、com.parasoft.tool.ToolUsable を返す内部インターフェイス com.parasoft.tool.IToolInputWrapper のインスタンスを返します。
必要なクラスを実装した後、次のように 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> |
この要素はこの拡張機能タイプに固有であり、カスタム ツールをインポートするには有効かつ正しい必要があります。
属性:
icon - オプション属性。メニュー内のツール名の横、およびテストケース エクスプローラー (SOAtest) または仮想アセット エクスプローラー (Virtualize) 内のツールを使用するアセットの横に表示されるカスタムアイコンの名前を指定できます。指定しない場合は、デフォルトのアイコンが使用されます。
この要素はこの拡張機能タイプに固有であり、カスタム ツールをインポートするには有効かつ正しい必要があります。カスタム ツールの入力フィールドを定義します。
属性:
string
: 通常のフィールド。xpath
: XPath Chooser 機能を提供します。password
: 入力時に値を非表示にし、保存時に値を暗号化します。GUI フィールドをパスワード フィールド (入力が隠され、指定したパスワードが安全に保存される) として働かせたい場合、そのフィールド要素に password
に設定した type
属性を与えます。たとえば、次は pwd
フィールドをパスワード モードにする例です。
<form xmlns="urn:com/parasoft/extensibility-framework/gui"> <section label="Main Settings"> <field id="usr" label="Username"/> <field id="pwd" label="Password" type="password"/> </section> </form> |
GUI フィールドを XPath 選択として実装する場合は、そのフィールドに xpath に設定された type
要素を指定します。たとえば、次のコードは、element
フィールドを XPath 選択に設定します。
<form xmlns="urn:com/parasoft/extensibility-framework/gui"> <section label="Main Settings"> <field id="element" label="Select an element" type="xpath"/> </section> </form> |
supportXmlConversion
オプションを有効にします。ツール ユーザーは、ツールの構成パネルで目的のメッセージ形式を選択できます。さらに、XPath セレクターが実装されている場合 (上記を参照)、そのツリー ビューには、選択したメッセージ タイプに適した形式でメッセージが表示されます。(メッセージ形式は、ツールの構成パネルの [メッセージ形式] セクションで設定されることに注意してください)。${var_name} 構文を使用して、拡張 GUI フィールドでデータソース、Data Bank 値、環境変数、およびテスト スイートまたはレスポンダー スイートの変数を参照できます。標準の [パラメータライズ] および [スクリプト] GUI コントロールを使用してフィールドをパラメータライズすることもできます。
新しいツールが作成され、他の Parasoft 定義ツールとともにリストされていることを確認します。