実行環境設定のカスタマイズ

このトピックでは、rts.ymlファイルをカスタマイズして、DevWebスクリプトを使用してテスト実行の拡張機能を定義する方法について説明します。

このトピックの内容:

実行環境設定について

rts.ymlには、DevWebスクリプトテスト実行の実行時設定が含まれています。標準設定のrts.ymlファイルはDevWebルートフォルダーにあり、各設定の横に実行環境設定の説明が含まれています。

注: サポートされている実行環境設定は、使用している製品バージョンによって異なります。

実行環境設定は、各仮想ユーザーに固有です。これらの設定をカスタマイズする場合は、スクリプトのフォルダーに作成するローカル実行環境設定ファイルでカスタマイズできます。スクリプトを実行すると、カスタマイズされた実行環境設定が標準設定の実行環境設定よりも優先されます。

たとえば、カスタマイズしたい実行環境設定には次のものがあります。

  • ログモードを有効にして、ログレベルを設定します。
  • DevWebを構成して、要求ヘッダーを正規化するのではなく、「現状のまま」渡すようにします。これを行うには、canonicalHeaderEntriesの値をfalseに設定します。
  • プロキシの設定: これらには、PACサポート、プロキシサーバーの詳細と認証資格情報、認証タイプ (基本またはNTLM)、および除外されたホストが含まれます。
  • SSL設定: これには、再生のHTTP/2およびHTTP/3サポートの有効化/無効化、使用する最大TLSバージョン、不正な証明書を無視するかどうかが含まれます。

    注:  

    • サーバーがHTTP/3接続を拒否した場合、DevWebは次に有効なHTTPバージョンにフォールバックします。

    • HTTP/3が有効になっている場合、実行環境設定で定義されている最大TLSバージョンに関係なく、DevWebはTLS1.3を使用します。

  • 再生またはエラー時にスナップショットを保存します。
  • アクションの実行論理を定義します。詳細については、以下の実行論理の実装を参照してください。
  • 思考遅延時間: 詳細については、以下の思考遅延時間の設定を参照してください。
  • 属性を追加します。詳細については、以下の属性の追加を参照してください。
  • Dynatraceモニターへのデータプッシュ。詳細については、Dynatrace統合を参照してください。
  • 仮想ユーザーへの複数のIP割り当てを定義します。詳細については、仮想ユーザーにIPアドレスを割り当てるを参照してください。

  • ネイティブgRPC通信プロトコルの接続設定。(gRPC-Webはサポートされていません。)

注: サポートされている実行環境設定は、使用しているOpenText Performance Engineering for Developersのバージョンによって異なります。

実行環境設定をカスタマイズするには:

  1. rts.template.ymlDevWebルートフォルダーからスクリプトのフォルダーにコピーし、名前をrts.ymlに変更します。
  2. コピーしたファイルをカスタマイズして、変更を保存します。

先頭に戻る

実行論理の実装

実行論理は、テスト中にアクションが実行される順序です。スクリプトのローカル実行環境設定ファイル (rts.yml) にflowセクションを追加することで、DevWebスクリプトの実行論理を定義できます。

スクリプトごとにrts.ymlファイルをカスタマイズする方法については、スクリプト構造を参照してください。

フローセクションは、指定された初期化、実行、およびファイナライズセクションがスクリプトで実行される順序を定義します。ランダムな順序、ランダムな選択、およびアクションをブロックにグループ化することを定義できます。

  • initializeセクションの項目は、最初に1回だけ実行されます。
  • runセクションの項目は、ブロックにグループ化できるアクションであり、複数の反復で実行できます。
  • finalizeセクションの項目は、最後に1回だけ実行されます。

フローを作成し、アクションをブロックに分割することで、テストの実行方法のロジックを構築できます。スクリプトで定義されているすべての項目をフローに含める必要はないため、実際のコードを変更せずに実行論理を変更できます。

ブロックの作成

アクションのブロックを作成するときに、ブロックの実行方法のロジックを定義できます。

ロジック名 動作
順次 ブロック、またはブロック内のアクションは、表示される順序で実行されます。
ランダム アクションまたはブロックは毎回ランダムに選択され、そのアクションまたはブロックのみが実行されます。
シャッフル ブロック内のすべてのアクション (またはすべてのブロック) をランダムな順序で実行します。

その他の実行論理パラメーター:

  • loop: これは、ブロックを実行する回数を定義します。0より大きい正の数である必要があります。runセクションレベルでループ値を定義することはできません。

  • probability: ランダムロジックを使用する場合、各アイテムの確率値を定義できます。これは0~100の任意の値にすることができますが、すべてのアイテムの合計確率が100%になる必要があります。

フローセクションの例

以下に、スクリプトのコード例と、rts.ymlファイルでスクリプト用に作成されたフローセクションを示します。

スクリプトにリストされているすべての項目がフローに表示されるわけではないことに注意してください。含まれていないアイテムはフローに参加しません。

ヒント: <DevWeb root>\examples\CustomRunLogic\rts.ymlファイルでフローの例を確認することもできます。

スクリプトの例:

load.initialize('Set default headers', async function () {
    //Set default headers
}); 
load.initialize('Login', async function () {
    //Do login
}); 
load.initialize('Set additional defaults', async function () {
    //Set additional defaults
}); 
load.initialize(async function () {
    //Initialize something else
}); 
load.action("Add food to the cart", async function () {
    //Add food to the cart
}); 
load.action("Add chocolate to the cart", async function () {
    //Add chocolate to the cart
}); 
load.action("Add marshmallow to the cart", async function () {
    //Add marshmallow to the cart
}); 
load.action("Add doughnut to the cart", async function () {
    //Add doughnut to the cart
}); 
load.action("Purchase items in the cart", async function () {
    //Purchase items in the cart
}); 
load.finalize('Logout', async function () {
    //Do logout
}); 
load.finalize('Clear cookies', async function () {
    //Clear cookies
}); 
load.finalize(async function () {
    //Finalize something else
}); 
load.finalize('Clear headers', async function () {
    //Clear headers
});

フローセクションの例:

flow: 
  #Allow the user to enable or disable the flow control
  enabled: true
  initialize:                                         
    #List of initializers to be used.
    #An empty list will lead to no initializers.
    items:                                            #List of items to run.
      - name: "Set default headers"
      - name: "Login"
  run: 
    #Define the logic between the items, can be sequential, random or shuffle.
    logic: "sequential"                               
    items:                                            #List of items to run.
      - name: "Add food to the cart"                      #Define the action name.
      - name: "Add something sweet to the cart"           #This part create a "block" of actions.
        logic: "random"                               
        #Loop a positive number define the number of times to run the current section
        loop: 3           
        items: 
        - name: "Add chocolate to the cart"
          #Probability value between 0 to 100 include.Total probability of all items should be 100%.
          probability: 40                             
        - name: "Add marshmallow to the cart"
          #Probability value between 0 to 100 include.Total probability of all items should be 100%.
          probability: 60
      - name: "Purchase items in the cart"
  finalize:                                           
    #List of finalizers to be used.
    #An empty list will lead to no initializers.
    items:                                            #List of items to run.
      - name: "Logout"
      - name: "Clear cookies"

DevWebを使用して、OpenText Professional Performance Engineeringで論理を実行します

DevWebスクリプトをOpenText Professional Performance Engineeringで実行すると、スクリプトの定義済み実行論理フローが、スクリプト実行環境設定の実行論理ビューに表示されます。

先頭に戻る

追加ファイル

スクリプトのローカルrts.ymlで、filesセクションに追加のファイルを定義できます (スクリプトフォルダーにない場合は、絶対パスを使用します)。追加のファイルはスクリプトの一部として自動的に読み込まれるため、負荷名前空間 (JavaScript SDKで定義されている) が含まれています。ファイルセクションでは、ファイルのロールも定義します。これはスクリプトとして設定する必要があります。

次の例では、追加ファイルの名前はextra.jsです。

files:                   # A list of all the extra files which are a mandatory part of the script
  - name: extra.js       # The file name, it can be relative to the script directory or rooted
    role: script         # The role of the file in the script.Currently only "script" role is supported

<DevWebルートフォルダー>\examples\CustomRunLogicスクリプトには、実行論理フローで追加ファイルを使用するための例が含まれています。

先頭に戻る

思考遅延時間の設定

思考遅延時間は、思考遅延時間が使用された時点で仮想ユーザーが実行を一時停止する時間を定義します。これは、ビジネスプロセスの次のステップに進む前に、一時停止しているユーザーをエミュレートするものです。

スクリプトの実行中に、仮想ユーザーが思考時間を使用する方法、およびスクリプトに記録された思考時間を処理する方法を制御するために、思考時間の設定を構成できます。

rts.ymlファイルのthinkTimeセクションで、思考時間のtypeを定義します。サポートされているタイプは次のとおりです。

  • ignore:: 記録された思考時間を無視し、遅延なしでスクリプトを実行します。
  • asRecorded: 録音中に検出された思考時間は、変更なしで再生されます。
  • multiply: 記録された思考時間は、定義した値 (0.01~10000) で乗算されます。例:

    thinkTime: 
      limit: 0
      type: multiply
      arguments: 
        by: 5       
  • randomPercentage: 定義された最小および最大パーセンテージ値内で、記録された思考時間のランダムなパーセンテージを使用します。定義できる最小範囲は1~150です。最大範囲は50~10000です。

    例:

    thinkTime: 
      limit: 0
      type: randomPercentage          
      arguments: 
        max: 50
        min: 3

limit値を設定して、スクリプト実行中の各思考期間の最大思考時間を定義することもできます。

  • 可能な範囲は0-10000秒です。
  • -1は無効を示します。

先頭に戻る

属性の追加

ユーザー引数を指定することにより、DevWebスクリプトに追加の属性を提供できます。これらの引数は、load.config.user.argsを使用してテスト実行中に取得されます (Configを参照)。

追加の属性ごとに、属性名とその値を定義します。以下に説明するように、属性のユーザー引数を定義する方法は3つあり、実行時に使用する値を決定する階層があります。

ユーザー引数の場所 説明
rts.yml

userArgumentsパラメーターを使用して、スクリプトのrts.ymlファイルに属性を追加します。

例:

userArguments: 
  username: admin
  Attribute_2: system

user_args.json

スクリプトフォルダー内のuser_args.jsonファイルに属性を追加します。値は文字列である必要があります。

特定の属性に定義された値は、rts.ymlファイルでその属性に定義された値を上書きします。

例:

{
  "username": "RDteam",
  "Attribute_2": "system"
}
コマンドライン

引数userArgsを使用して、コマンドラインに属性を追加します。

特定の属性に定義された値は、user_args.jsonまたはrts.ymlファイルでその属性に定義された値を上書きします。

例:

DevWeb  -userArgs="{"username": "Kim"}"

先頭に戻る

関連項目: