スクリプト構造
このトピックでは、DevWebスクリプトに使用されるmain.jsファイルのレイアウトについて説明します。また、DevWebスクリプトで使用できる重要なYAMLおよびその他のファイルについても説明します。これらのファイルは、DevWebエンジンとスクリプトの実行を制御します。
このトピックの内容:
- main.jsファイル
- シナリオリソースファイル
- 実行環境設定リソースファイル
- パラメーターリソースファイル
- トランザクションリソースファイル
- ランデブーリソースファイル
- ユーザー引数リソースファイル
- サンプルファイル
main.jsファイル
main.jsファイルには、DevWebスクリプトのメインコードが含まれています。
main.jsには、initialize、action、および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); } });
フロー:
-
このアクションの一部として実行されるすべてのコードを含む関数を使用して、新しいアクション (A) Mainを宣言します。
SDKのすべての要素はload名前空間 (オブジェクト) 内にあるため、それらにアクセスするにはload.プレフィックスが必要です。
注: アクション名は必須であり、内部でのみ使用されます。
- 新しいトランザクション (B) Productを宣言し、それをproductTransaction変数に格納します。この変数を使用すると、トランザクションに関する情報を取得して、トランザクションに対して操作を実行できます。
- トランザクションを開始します (C)。
-
WebRequestコンストラクター (D) を使用してWeb要求を宣言します。WebRequestコンストラクターは、Web要求を構成するオブジェクトを受け取ります。
たとえば、Web要求のURLを宣言できます (E)。ヘッダーや追加のリソースなど、要求の他のプロパティを設定することもできます。DevWeb JavaScript SDKのWebRequestを参照してください。
- 要求を同期的に送信します (F)。スクリプトは停止して応答の受信を待機し、応答をmyPageResponse変数に格納します。Web要求オプションでreturnBodyプロパティがtrueに設定されているため、完全なレスポンス本文にアクセスできます。
- 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 |
ペーシングタイプ。可能な値:
|
mode |
ペーシング期間。可能な値:
|
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内のものと一致する名前のトランザクションが含まれている必要があります。
次の例に示すようにリストをフォーマットします。ここでは、fooとbarという名前の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
上記の例では、ファイルにはfooとbarという名前の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フォルダーにあります。
関連項目: