前のトピック: マジック ストリングとマジック デート次のトピック: マジック ストリングの除外


マジック ストリング

レコーディング時には、VSE によって各要求の引数またはパラメータが確認されます。 たとえば、天気予報 Web サービス コールには都市名が含まれる可能性があり、航空券予約システム要求にはフライト番号が含まれる可能性があります。 記録された応答にフライト番号が含まれている場合、それはマジック ストリングとして分類されます。

たとえば、VSE が再生モードで、記録されていないフライト番号に対する要求を受信した場合、正しいフライト番号は応答に含まれています。

以下の例では、会話で何らかの「状態」を設定する要求を記録しました(この場合はフライト番号(ABC53))。 レコーダは、文字列 ABC53 も応答に含まれていたことを認識して、ABC53 をマジック ストリングに変換します。 マジック ストリングは '=request_arg1;/ABC53/ としてサービス イメージ データベースに保存されます。

仮想サービス エンジンのマジック ストリングの例

{{ }} 表記法は、標準の VSE プロパティ代入構文です。 この表記法は、「{{ }} テキストに要求の最初の引数のランタイム値を代入する」ことを意味しています。最初の引数が存在しない場合は、デフォルトとして ABC53 を使用します。

実用的な重要性は、将来のクライアントがフライト ZZ99 を要求した場合、仮想化されたサービスが正しいフライト番号 ZZ99 で応答することです。

VSE は、マジック ストリングを単純な要求/応答ペア以外でも検出します。 会話の後続のいずれかの応答に引数がある場合、VSE はそれをマジックと見なし、引数値を会話状態に格納します。

デフォルトでは、VSE は XML タグ内のテキストをマジック ストリングと見なしません。 この除外には、XML タグ、属性名、および属性値が含まれます。 この動作は、local.properties ファイルで lisa.magic.string.xml.tags=true を設定することによって変更できます。この場合には、通常のマジック ストリング ルールが適用されます。

言いかえれば、<foo bar="baz"/> が存在する場合、そのいずれもマジック ストリングとは見なされません。 対照的に、構造が <foo>bar</foo> である場合、「bar」(「foo」ではない)はマジック ストリングと見なされます。

以下の例は、前の会話の続きです。 要求操作は「itko_seat」であり、単一の引数は、この場合には「Person1」という名前です。 応答には、要求内の名前、以前に設定されたフライト番号、および日付が含まれます。

仮想サービス エンジンのマジック デートの例

これは、ステートレス プロトコル(この場合は、SOAP over HTTP)での会話状態の標準的な例です。 VSE の再生モードで、フライトが ZZ99 に設定され、PersonSomeoneElse の座席を予約する要求があった場合、これらの詳細が記録されなかったとしても、応答には「フライト番号 ZZ99 の座席番号 1 で PersonSomeoneElse 様の席を予約いたしました」という文字列が含まれます。

VSE は、座席番号(この場合は 1)をマジック ストリングと見なしません。 座席番号は、この応答に至るまでの一連の要求では出現していません。 また、マジック ストリングと見なされるほど長くもありません。 マジック ストリングと見なされるには、少なくとも 3 文字の長さが必要であり、必要に応じて、文字列の左側、右側、または両側に空白を持つことができます。 長さおよび空白のパラメータは、local.properties ファイルで調整できます。

{{ }} プロパティ表記法は強力かつ柔軟であり、マジック ストリングの使用のみに制限されません。 たとえば、例の応答の「1」を「DataSetValue」に変更することができます。また、仮想サービス モデルにデータ セットを定義することもできます。 その後、そのデータ セットは、ランタイム応答値の生成に使用されます。 データ セットは、ランダム文字列ジェネレータ、カウンタ、データベースへのコール、Excel スプレッドシートの行への参照などにすることができます。 }} は、任意の Java コードを実行し、有効なクレジット カード番号 {{=[:Credit Card:] などの現実的な「日常の」データも生成できます。

詳細については、「使用」の「DevTest での BeanShell の使用」を参照してください。