スクリプト構造

このトピックでは、DevWebスクリプトに使用されるmain.jsファイルのレイアウトについて説明します。また、DevWebスクリプトで使用できる重要なYAMLおよびその他のファイルについても説明します。これらのファイルは、DevWebエンジンとスクリプトの実行を制御します。

このトピックの内容:

main.jsファイル

main.jsファイルには、DevWebスクリプトのメインコードが含まれています。

main.jsには、initializeaction、およびfinalizeの3種類のセクションを含めることができます。これらは複数回表示される可能性があり、スクリプトに表示される順序で実行されます。

initialize (任意)

スクリプトの開始時に1回だけ実行されます。

action (必須)

スクリプトの期間中、繰り返し実行されます。

注: スクリプトには、少なくとも1つのactionセクションが含まれている必要があります。

finalize (任意)

スクリプトの最後で、すべてのactionセクションの実行が終了したときに1回だけ実行されます。

ヒント: 実行ロジックを実装して、テスト中にアクションが実行される順序を決定できます。詳細については、実行論理の実装を参照してください。

以下は、典型的なDevWebスクリプトのactionセクションの例です。HTTP要求はサーバーに送信され、応答からのいくつかの値を使用して、そのHTTP要求に関するトランザクションが成功したかどうかを判断します。

load.action("Main", () => { //(A)

  const productTransaction = new load.Transaction("Product"); //(B)

  productTransaction.start(); //(C)
  const myPageRequest = new load.WebRequest({ //(D)
	url: "http://myServer.com/main/product.html", //(E)
	method: "GET",
	returnBody: true,
	headers: {
	   "Accept-Language": "en-US,en;q=0.8",
	   "Accept-Encoding": "gzip, deflate, sdch",
	   "Accept": "*/*"
	},
	resources: [
	   "http://my.server.net/sources/Caching/oldnavy.css"
	]
  }); 

  const myPageResponse = myPage.sendSync(); //(F)

  /*Expected result is : 
  <html>
     <body>
	<h1>My product</h1>
	<span productId="12">Very nice product</p>
     </body>
  </html>
  */

  const productId = load.utils.getByBoundary(myPageResponse.body,'productId="','"'); //(G)
  if (productId === null){ //(H)
     productTransaction.stop(load.TransactionStatus.Failed); 
  }  else {
     productTransaction.stop(load.TransactionStatus.Passed); 
  }
});

フロー:

  1. このアクションの一部として実行されるすべてのコードを含む関数を使用して、新しいアクション (A) Mainを宣言します。

    SDKのすべての要素はload名前空間 (オブジェクト) 内にあるため、それらにアクセスするにはload.プレフィックスが必要です。

    注: アクション名は必須であり、内部でのみ使用されます。

  2. 新しいトランザクション (B) Productを宣言し、それをproductTransaction変数に格納します。この変数を使用すると、トランザクションに関する情報を取得して、トランザクションに対して操作を実行できます。
  3. トランザクションを開始します (C)。
  4. WebRequestコンストラクター (D) を使用してWeb要求を宣言します。WebRequestコンストラクターは、Web要求を構成するオブジェクトを受け取ります。

    たとえば、Web要求のURLを宣言できます (E)。ヘッダーや追加のリソースなど、要求の他のプロパティを設定することもできます。DevWeb JavaScript SDKのWebRequestを参照してください。

  5. 要求を同期的に送信します (F)。スクリプトは停止して応答の受信を待機し、応答をmyPageResponse変数に格納します。Web要求オプションでreturnBodyプロパティがtrueに設定されているため、完全なレスポンス本文にアクセスできます。
  6. getByBoundary関数 (G) を使用して、応答から製品IDを抽出します。製品ID (H) を使用して、製品トランザクションが成功するか失敗するかを決定できます。

注: Web応答を受信した後、再生中に追加された追加のWeb要求ヘッダー (WebRequestヘッダーオブジェクト上) を表示できます。

先頭に戻る

シナリオリソースファイル

scenario.ymlファイルはすべてのスクリプトフォルダーに含まれており、DevWebスクリプトを負荷モードで実行するときのシナリオ設定を定義します。

スクリプトの再生に使用する代替のscenario.ymlファイルを定義し、別の名前を付けて、スクリプトフォルダーの外部に保存することができます。各シナリオファイルには異なる設定を含めることができ、各シナリオファイルを複数のスクリプトで再利用できます。スクリプトに使用する代替ファイルの場所をコマンドラインから渡します。

詳細については、DevWebスクリプトの実行を参照してください。

注: このファイルは、OpenText Performance Engineering for Developersでのみ使用されます。OpenText Professional Performance EngineeringまたはOpenText Enterprise Performance Engineeringでテストを実行する場合、シナリオはテストツール自体で定義されます。

シナリオの実行設定には、ペーシングが含まれます。ペーシングは、仮想ユーザーがスクリプトアクションの反復間で待機するペースを設定することにより、反復のタイミングを制御します。ペーシングは次のように定義できます。

プロパティ 説明
type

ペーシングタイプ。可能な値:

  • delay: 前の反復が終了した後の遅延。

  • interval: 1つの反復の開始から次の反復までの間隔。

    注: 新しい反復は、間隔時間を超えても、前の反復が完了するまで開始されません。

mode

ペーシング期間。可能な値:

  • fixed: 定義されたペーシングタイプ (delayまたはinterval) には一定の時間が使用されます。

  • random: ペーシングタイプ (delayまたはinterval) の時間は、定義された範囲の値からランダムに選択されます。

value fixedモードで使用する時間 (秒単位)。
min/max randomモードで使用する時間範囲 (秒単位)。

scenario.ymlファイルの例:

コードのコピー
# All times are defined in seconds
vusers: 1        #The number of Vusers that will be run during the test
pacing:          #The period of time to wait between iteration of each Vuser
  type: delay    #The Pacing type, valid values: delay or interval 
  mode: random   #The Pacing mode, valid values: fixed or random
  min: 3         #The min and max are valid on mode: random.
  max: 6         #The min and max determine the range of values
rampUp: 2        #The number of seconds it will take to start all the Vusers
                 #The starting of Vusers that will be distributed equally throughout this time frame
duration: 20     #The number of seconds to run Vuser iterations after all the Vusers have started running
tearDown: 0      #Not used

先頭に戻る

実行環境設定リソースファイル

オプションのrts.ymlには、HTTP接続のタイムアウトやロガー設定など、テスト実行の標準設定の実行環境設定が含まれています。

実行環境設定は、各仮想ユーザーに固有です。これらの設定をカスタマイズする場合は、スクリプトのフォルダーに作成するローカル実行環境設定ファイルでカスタマイズできます。詳細については、実行環境設定のカスタマイズを参照してください。

先頭に戻る

パラメーターリソースファイル

オプションのparameters.ymlには、スクリプトのパラメーターの説明が含まれています。このファイルは、scriptフォルダーでユーザー定義されています。

パラメーターファイルは、スクリプトで使用できるパラメーターと、新しい値を取得する方法とタイミングのさまざまな側面を定義します。

詳細については、値のパラメーター化を参照してください。

先頭に戻る

トランザクションリソースファイル

オプションのトランザクションファイルtransactions.ymlは、OpenText Core Performance EngineeringのSLA機能のユーザーにのみ関連します。

SLA機能を有効にするには、SLAを計算するトランザクション名のリストをこのファイルに入力します。

注: スクリプトには、transactions.yml内のものと一致する名前のトランザクションが含まれている必要があります。

次の例に示すようにリストをフォーマットします。ここでは、foobarという名前の2つのトランザクションが定義されています。

- name: foo

- name: bar

先頭に戻る

ランデブーリソースファイル

メインスクリプトにランデブーポイントが含まれている場合、オプションのrendezvous.ymlファイルは、再生中にスクリプトディレクトリに自動的に作成されます。ランデブーポイントに達すると、仮想ユーザーは実行を停止し、許可が続行されるのを待ちます。

注: ランデブーポイントは、OpenText Professional Performance EngineeringまたはOpenText Core Performance Engineeringでスクリプトを実行するときにサポートされます。OpenText Performance Engineering for Developersを使用してローカルでスクリプトを実行する場合、これらはサポートされていません。

rendezvous.ymlファイルは、ランデブーポリシーを定義するためにOpenText Core Performance Engineeringが必要とするランデブー名のリストを提供します。このファイルは次の形式を使用します。

- name: foo

- name: bar

上記の例では、ファイルにはfoobarという名前の2つのランデブーポイントが含まれています。ランデブー機能を動作させるには、スクリプトに名前が一致するランデブーが含まれている必要があります。

スクリプトをOpenText Core Performance Engineeringにアップロードする前に、スクリプトを1回再生して、rendezvous.ymlファイルがスクリプトのzipファイルに含まれるようにする必要があります。

スクリプトにランデブー関数を追加する方法の詳細については、JavaScript SDKランデブーセクションを参照してください。

先頭に戻る

ユーザー引数リソースファイル

オプションのユーザー引数ファイルuser_args.jsonには、スクリプトで実行に使用される引数が含まれています。これらの引数は、VuGenスクリプトに使用されるカスタムコマンドラインオプションと同等です。

引数プロパティについては、SDKドキュメントのConfigを参照してください。

ファイルはKey-Value JSON形式 (文字列値) です。

{
    "key": "value",
    "hello": "world"
}

先頭に戻る

サンプルファイル

独自のスクリプトを作成する際に役立つように、YAMLファイルやその他のDevWebファイルの例を含むサンプルDevWebスクリプトが提供されています。たとえば、スクリプトを試してみたり、独自のスクリプトを作成する際のベースとして使用したり、コードスニペットを再利用したりすることができます。

多種多様なサンプルスクリプトが用意されており、新しいリリースでさらに追加されます。スクリプトは、<DevWebルートフォルダー>\examplesフォルダーにあります。

先頭に戻る

関連項目: