(57)【要約】      （修正有）【課題】試験対象のウェブサーバ装置にアクセス負荷を掛ける場合において、仮想ウェブクライアントがリクエストメッセージの送信とレスポンスメッセージの受信とを適切に行えるシナリオを作成できるようにするシナリオ作成プログラムを、提供する。【解決手段】シナリオ作成モジュールは、第１及び第２の仮シナリオにおける同じ順番のリクエストメッセージの同じリクエストパラメータを比較し、第１及び第２の仮シナリオで異なる場合（ステップＳ１１１；ＹＥＳ）、そのリクエストパラメータがそのリクエストメッセージを送信するよりも前に取得されたレスポンスメッセージの中にあれば（ステップＳ１１３；ＹＥＳ）、そのリクエストパラメータは、仮想ウェブクライアントがシナリオを実行するたびに適正に変化させるべきパラメータであるとして、そのリクエストパラメータに対応する要書換項目情報を生成し、シナリオに組み込む（ステップＳ１１４）。【選択図】図２
2007264967.tif 000002
【特許請求の範囲】
【請求項１】
試験対象のウェブサーバ装置にアクセス負荷を掛ける複数の仮想ウェブクライアントに対して与えられるシナリオを作成するためのシナリオ作成プログラムであって、
コンピュータを、
所定の操作に基づいてウェブサーバ装置に順次送信された幾つかの第１のリクエストメッセージと順次受信した幾つかのレスポンスメッセージとを記憶装置に記憶する第１の記憶手段，
前記所定の操作と同じ操作に基づいてウェブサーバ装置に順次送信された幾つかの第２のリクエストメッセージを前記記憶装置に記憶する第２の記憶手段，
前記第１及び第２の記憶手段が記憶装置に記憶した第１及び第２のリクエストメッセージのリクエストパラメータについて、前記所定の操作における同じ順番のリクエストメッセージ同士で相違するリクエストパラメータを、抽出する抽出手段，
前記記憶装置の中から、前記抽出手段が相違部分として抽出したリクエストパラメータをページデータ内に含んでいるレスポンスメッセージを、検索する検索手段，
前記検索手段がレスポンスメッセージを検出すると、前記抽出手段が相違部分として抽出したリクエストパラメータについて前記アクセス負荷の実行時に書き換えが必要であることを示す書換項目情報を、生成する情報生成手段，及び、
前記記憶装置内の全ての第１のリクエストメッセージと、前記情報生成手段が生成した書換項目情報とを、シナリオとして出力する出力手段
として機能させる
ことを特徴とするシナリオ作成プログラム。
【請求項２】
前記情報生成手段は、前記検索手段が検出したレスポンスメッセージを受信するために前記ウェブサーバ装置に送信された第１のリクエストメッセージを特定する発生源情報をも、生成し、
前記出力手段は、全ての第１のリクエストメッセージと、前記書換項目情報と、前記発生源情報とを、シナリオとして出力する
ことを特徴とする請求項１記載のシナリオ作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷シミュレータが使用するシナリオを作成するためのシナリオ作成プログラムに、関する。
【背景技術】
【０００２】
周知のように、ウェブ負荷試験装置は、試験対象となるウェブサーバ装置にアクセス負荷を掛けてそのウェブサーバ装置の状態を観察するため、負荷シミュレータ，及び、ビューワを、含んでいる。このうち、負荷シミュレータは、仮想的にウェブクライアントとして機能するスレッドを複数生成し、それら複数の仮想ウェブクライアントに対し、試験対象となるウェブサーバ装置内のページデータをリクエストする順番を定義したシナリオを与えて、そのシナリオ通りにリクエストメッセージの送信とレスポンスメッセージの受信とを行わせることにより、各仮想ウェブクライアントがそのウェブサーバ装置から受けたレスポンスメッセージそのものを保存したりレスポンスのログを録ったりするための機能である。また、ビューワは、レスポンスメッセージ内のページデータに基づいてウェブページを表示したり、レスポンスのログ情報を一覧表示したりするための機能である。
【０００３】
【特許文献１】特表２００３−５３０６２５号
【特許文献２】特開２００５−２５０９４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述したシナリオは、ウェブ負荷試験を行う前に試験対象のウェブサーバ装置に実際にアクセスして幾つかのウェブページを順に表示させたときのリクエスト履歴に基づいて作成されるものであり、具体的には、幾つかのリクエストメッセージからなるとともに、それらの送信順を定義したデータである。そして、このシナリオを構成する各リクエストメッセージの中には、ゲットメソッド又はポストメソッドによりウェブサーバ装置に引き渡すべき引数を含むものもある。
【０００５】
しかしながら、それら引数は、シナリオを作成する際に適正なものであって、ウェブサーバ装置にアクセス負荷を掛ける際に適正なものとならない場合がある。例えば、引数が時刻情報である場合、ウェブサーバ装置にアクセス負荷を掛けた際にその時刻情報を引き渡したとしても、そのウェブサーバ装置がタイムアウトとなったと判断して、仮想ウェブクライアントが適正なレスポンスメッセージを得られないことがある。
【０００６】
本発明は、前述したような従来の事情に鑑みてなされたものであり、その課題は、試験対象のウェブサーバ装置にアクセス負荷を掛ける場合において、仮想ウェブクライアントがリクエストメッセージの送信とレスポンスメッセージの受信とを適切に行えるシナリオが、作成できるようにすることにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するための案出されたシナリオ作成プログラムは、試験対象のウェブサーバ装置にアクセス負荷を掛ける複数の仮想ウェブクライアントに対して与えられるシナリオを作成するためのシナリオ作成プログラムであって、コンピュータを、所定の操作に基づいてウェブサーバ装置に順次送信された幾つかの第１のリクエストメッセージと順次受信した幾つかのレスポンスメッセージとを記憶装置に記憶する第１の記憶手段，前記所定の操作と同じ操作に基づいてウェブサーバ装置に順次送信された幾つかの第２のリクエストメッセージを前記記憶装置に記憶する第２の記憶手段，前記第１及び第２の記憶手段が記憶装置に記憶した第１及び第２のリクエストメッセージのリクエストパラメータについて、前記所定の操作における同じ順番のリクエストメッセージ同士で相違するリクエストパラメータを、抽出する抽出手段，前記記憶装置の中から、前記抽出手段が相違部分として抽出したリクエストパラメータをページデータ内に含んでいるレスポンスメッセージを、検索する検索手段，前記検索手段がレスポンスメッセージを検出すると、前記抽出手段が相違部分として抽出したリクエストパラメータについて前記アクセス負荷の実行時に書き換えが必要であることを示す書換項目情報を、生成する情報生成手段，及び、前記記憶装置内の全ての第１のリクエストメッセージと、前記情報生成手段が生成した書換項目情報とを、シナリオとして出力する出力手段として機能させることを、特徴としている。
【０００８】
このように構成されると、所定の操作に基づいてウェブサーバ装置に送信された第１のリクエストメッセージが保存され、同じ操作に基づいてウェブサーバ装置に送信された第２のリクエストメッセージが保存され、その操作における同じ順番の第１及び第２のリクエストメッセージについて、リクエストパラメータが異なるリクエストメッセージがあって、然も、そのリクエストパラメータがそのリクエストメッセージを送信するよりも前に取得されたレスポンスメッセージの中にあれば、そのリクエストメッセージのリクエストパラメータが、アクセス負荷試験において仮想ウェブクライアントがシナリオを実行するたびに適正に変化させるべきパラメータであるとして、その旨の書換項目情報がシナリオに組み込まれる。このため、仮想ウェブクライアントは、アクセス負荷試験を行う際、シナリオに組み込まれた書換項目情報を利用して、適正に変化させるべきリクエストパラメータを、適正に変化させることができる。
【発明の効果】
【０００９】
従って、本発明によれば、試験対象のウェブサーバ装置にアクセス負荷を掛ける場合において、仮想ウェブクライアントがリクエストメッセージの送信とレスポンスメッセージの受信とを適切に行えるシナリオが、作成できるようになる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面を参照しながら、本発明を実施するための一つの形態について、説明する。
【００１１】
図１は、本実施形態のウェブ負荷試験の対象となるウェブサーバ装置１０とその試験を実行するウェブ負荷試験装置２０の構成図である。
【００１２】
ウェブサーバ装置１０は、周知のように、ウェブサーバ機能が実現された装置であり、より具体的には、ウェブサーバ機能を実現するためのプログラムを汎用のコンピュータに導入してなる装置である。このウェブサーバ装置１０を構成するコンピュータは、ＣＰＵ［Central Processing Unit］１０ａ，ＤＲＡＭ［Dynamic Random Access Memory］１０ｂ，通信アダプタ１０ｃ，ストレージ１０ｄ等のハードウエアを内蔵しており、ストレージ１０ｄは、通信アダプタ１０ｃにおけるデータの入出力の管理や、ＤＲＡＭ１０ｄやストレージ１０ｄの記憶領域の管理といった基本的な機能を多くのアプリケーションソフトウエアに提供するための基本ソフトウエア１１を、記憶している。
【００１３】
そして、ウェブサーバ装置１０のストレージ１０ｄは、汎用のコンピュータをウェブサーバ装置として機能させるためのプログラム及びデータとして、ウェブサーバプログラム１２及びページデータ１３を、記憶している。ウェブサーバプログラム１２は、図示せぬウェブクライアント装置からの要求を受けると、要求されたページデータを内部の記憶装置から読み出し、或いは、生成して、通信アダプタ１０ｃを通じて要求元のウェブクライアント装置へ送信するためのプログラムである。ページデータ１３は、ウェブページを表示するためのＨＴＭＬ［HyperText Markup Language］ソースデータである。このページデータ１３は、その内部に、別のウェブページへ飛ぶためのリンクを表示する情報を含んでいても良い。
【００１４】
ウェブ負荷試験装置２０は、試験対象のウェブサーバ装置１０についてウェブ負荷試験を行うための装置である。このウェブ負荷試験装置２０は、ウェブ負荷試験ツール機能を実現するためのプログラムを一般的なパーソナルコンピュータに導入してなる装置である。従って、このウェブ負荷試験装置２０を構成するパーソナルコンピュータは、周知のように、液晶ディスプレイ等の表示装置２０ａと、キーボードやマウス等の入力装置２０ｂと、これら装置２０ａ，２０ｂに接続される本体とからなる。また、その本体は、通信アダプタ２０ｃ，ＣＰＵ２０ｄ，ＤＲＡＭ２０ｅ，ストレージ２０ｆ等のハードウエアを内蔵しており、ストレージ２０ｆは、基本ソフトウエア２１を記憶している。
【００１５】
そして、ウェブ負荷試験装置２０は、パーソナルコンピュータをウェブ負荷試験装置として機能させるためのプログラム及びデータとして、ウェブ負荷試験ツール（プログラム）２２を、記憶している。ウェブ負荷試験ツール２２は、基本的に、負荷シミュレータ２２ａ，ビューワ２２ｂ，シナリオ作成モジュール２２ｃのモジュールプログラム（コンポーネント）を、含んでいる。
【００１６】
負荷シミュレータ２２ａは、試験対象となるウェブサーバ装置にアクセス負荷を掛けるモジュールである。より具体的には、負荷シミュレータ２２ａは、内部に、仮想的にウェブクライアントとして機能するスレッドを複数生成し、それら複数の仮想ウェブクライアントに対し、試験対象となるウェブサーバ装置内のページデータをリクエストする順番を定義したシナリオを与えて、そのシナリオ通りにリクエストを行わせることにより、各仮想ウェブクライアントがそのウェブサーバ装置から受けたレスポンスメッセージそのものを保存したりレスポンスのログを録ったりするための機能である。
【００１７】
ビューワは、レスポンスメッセージ内のページデータに基づいてウェブページを表示したり、レスポンスのログ情報を一覧表示したりするための機能である。
【００１８】
シナリオ作成モジュール２２ｃは、負荷シミュレータ２２ａが仮想ウェブクライアントに与えるシナリオを作成するためのモジュールである。
【００１９】
次に、本実施形態においてシナリオ作成モジュール２２ｃに従ってＣＰＵ２０ｄが行う処理について、説明する。
【００２０】
図２は、シナリオ作成モジュール２２ｃに従ってＣＰＵ２０ｄが実行する処理の流れを示す図である。
【００２１】
処理の開始後、最初のステップＳ１０１において、ＣＰＵ２０ｄは、第１の仮シナリオを登録する処理を行う。ここで、仮シナリオは、ウェブ負荷試験を行う前に試験対象のウェブサーバ装置１０に実際にアクセスして幾つかのウェブページを順に表示させたときのリクエスト履歴に基づいて作成されるものであり、具体的には、幾つかのリクエストメッセージからなるとともに、それらの送信順を定義したデータである。なお、この仮シナリオを構成する各リクエストメッセージの中には、ゲットメソッド又はポストメソッドによりウェブサーバ装置１０に引き渡すべきリクエストパラメータを含むものもある。また、このステップＳ１０１において、ＣＰＵ２０ｄは、リクエストメッセージの応答としてウェブサーバ装置１０から受信したレスポンスメッセージも保存するようになっている。
【００２２】
なお、このステップＳ１０１を実行するＣＰＵ２０ｄは、前述した第１の記憶手段に相当している。
【００２３】
次のステップＳ１０２では、ＣＰＵ２０ｄは、第２の仮シナリオを登録する処理を行う。このステップで登録される第２の仮シナリオは、第１の仮シナリオと同じリクエスト先に同じ順番でアクセスした履歴に基づいている。従って、第２の仮シナリオを構成する各リクエストメッセージのリクエスト先は、第１の仮シナリオのそれと同じになっている。
【００２４】
なお、このステップＳ１０２を実行するＣＰＵ２０ｄは、前述した第２の記憶手段に相当している。
【００２５】
次のステップＳ１０３では、ＣＰＵ２０ｄは、第１及び第２の仮シナリオを構成するリクエストメッセージに含まれるリクエストパラメータを、比較テーブルに書き出す処理を行う。なお、リクエストパラメータは、ゲットメソッドに従ったリクエストメッセージの場合には、そのリクエストメッセージ内のＵＲＬに付加されており、ポストメソッドに従ったリクエストメッセージの場合には、そのリクエストメッセージのデータ部に含まれている。
【００２６】
図３は、その比較テーブル３１のデータ構造の一例を示す図である。
【００２７】
図３に示されるように、比較テーブル３１は、シナリオ内のリクエストパラメータと同数のレコードを、有している。各レコードは、「順番」，「変数名」，「値１」，「値２」及び「ソース」のフィールドを、有している。「順番」フィールドは、そのリクエストパラメータを含むリクエストメッセージのシナリオ内での順番を示す番号が記録されるフィールドである。「変数名」フィールドは、そのリクエストパラメータのネーム属性値が記録されるフィールドである。「値１」フィールドは、第１の仮シナリオのリクエストパラメータのバリュー属性値が記録されるフィールドである。「値２」フィールドは、第２の仮シナリオのリクエストパラメータのバリュー属性値が記録されるフィールドである。「ソース」フィールドは、そのリクエストパラメータのネーム属性値及びバリュー属性値が元々埋め込まれていたページデータを含むレスポンスメッセージを受信する切っ掛けとなったリクエストメッセージ（以下、発生源リクエストメッセージと表記する）の第１の仮シナリオ内での順番を示す番号が記録されるフィールドである。
【００２８】
なお、ステップＳ１０３において、比較テーブル３１が生成された時点では、「ソース」フィールドは、空欄となっている。
【００２９】
ＣＰＵ２０ｄは、図３に示されるような比較テーブル３１を生成した後、第１の処理ループＬ１を実行する。
【００３０】
第１の処理ループＬ１では、ＣＰＵ２０ｄは、比較テーブル３１内のレコードの一つ一つについて、ステップＳ１１１乃至Ｓ１１４を順に実行する。
【００３１】
ステップＳ１１１では、ＣＰＵ２０ｄは、処理対象レコードの「値１」及び「値２」フィールドの値同士が同じであるか否かを、判別する。
【００３２】
なお、このステップＳ１１１を実行するＣＰＵ２０ｄは、前述した抽出手段に相当している。
【００３３】
そして、処理対象レコードの「値１」及び「値２」フィールドの値同士が同じなかった場合、ＣＰＵ２０ｄは、ステップＳ１１２へ処理を分岐させる。
【００３４】
ステップＳ１１２では、ＣＰＵ２０ｄは、ステップＳ１０１で記録したレスポンスメッセージのうち、処理対象レコードの「順番」フィールドの値よりも前の順番のリクエストメッセージの送信により得られたレスポンスメッセージの中から、「値１」フィールドの値（バリュー属性値）を持つものを検索する処理を行う。
【００３５】
なお、このステップＳ１１２を実行するＣＰＵ２０ｄは、前述した検索手段に相当している。
【００３６】
次のステップＳ１１３では、ＣＰＵ２０ｄは、処理対象レコードの「値１」フィールドの値（バリュー属性値）を持つレスポンスメッセージが検出されたか否かを、判別する。
【００３７】
そして、処理対象レコードの「値１」フィールドの値（バリュー属性値）を持つレスポンスメッセージが検出されていた場合、ＣＰＵ２０ｄは、ステップＳ１１３からステップＳ１１４へ処理を分岐させる。
【００３８】
ステップＳ１１４では、ＣＰＵ２０ｄは、検出されたレスポンスメッセージを受信する切っ掛けとなったリクエストメッセージの第１の仮シナリオ内での順番を示す番号を、処理対象レコードの「ソース」フィールドに格納する処理を行う。続いて、ＣＰＵ２０ｄは、処理対象レコードの「順番」フィールドの値（順番の番号）と「変数名」フィールドの値（ネーム属性値）と「ソース」フィールドの値（順番の番号）とを対応付けた情報を、要書換項目情報として、生成する処理を行う。
【００３９】
なお、このステップＳ１１４を実行するＣＰＵ２０ｄは、前述した情報生成手段に相当している。
【００４０】
一方、ステップＳ１１１において、処理対象レコードの「値１」及び「値２」フィールドの値同士が同じであった場合、又は、ステップＳ１１３において、処理対象レコードの「値１」フィールドの値（バリュー属性値）を持つレスポンスメッセージが検出されていなかった場合、ＣＰＵ２０ｃは、処理対象レコードについて、要書換項目情報を生成することなく処理を終える。
【００４１】
ＣＰＵ２０ｄは、比較テーブル３１内のレコードの全てについて、ステップＳ１１１乃至Ｓ１１４を実行し終えると、第１の処理ループＬ１を離脱して、ステップＳ１２１へ処理を進める。
【００４２】
ステップＳ１２１では、ＣＰＵ２０ｄは、ステップＳ１０１で登録されたい第１の仮シナリオと、ステップ１１４で生成された要書換項目情報とを組み合わせて、正式なシナリオとして、登録する処理を行う。そして、登録を行った後、ＣＰＵ２０ｄは、図２に係る処理を終了する。
【００４３】
なお、このステップＳ１２１を実行するＣＰＵ２０ｄは、前述した出力手段に相当している。
【００４４】
次に、本実施形態のシナリオ作成モジュール２２ｃの作用及び効果について説明する。
【００４５】
利用者が、シナリオ作成モジュール２２ｃを起動すると、シナリオ作成モジュール２２ｃから仮シナリオ作成を要求される（ステップＳ１０１）。利用者は、事前に決めておいた操作手順に従って、ウェブサーバ装置１０によるウェブページにアクセスし、それらウェブページのリンクを辿ったり所定の情報を入力したりしながら、繰り返しページ遷移作業を行う。その後、利用者が、所定の登録決定指示を入力すると、その間に行ったアクセスのリクエストメッセージが第１の仮シナリオとして保存されるとともに、レスポンスメッセージが保存される（ステップＳ１０１）。
【００４６】
続いて、利用者は、再度、仮シナリオ作成が要求されるので、同じページ遷移作業について、もう一度行う。すると、その間に行ったアクセスのリクエストメッセージが第２の仮シナリオとして保存される（ステップＳ１０２）。
【００４７】
そして、二つの仮シナリオを作成すると、シナリオ作成モジュール２２ｃが、それらに基づいて、正式なシナリオを作成する（ステップＳ１１１〜Ｓ１１４，Ｓ１２１）。
【００４８】
その正式なシナリオを作成する際、まず、第１の仮シナリオと第２の仮シナリオとにおける同じ順番のリクエストメッセージの同じリクエストパラメータが比較される。ここで、例えば、図４に示されるように、ＵＲＬに付加されているリクエストパラメータのバリュー属性値（pageId＝5432，1867）が、第１及び第２の仮シナリオで異なる場合（ステップＳ１１１；ＹＥＳ）、そのリクエストパラメータは、アクセス負荷試験において仮想ウェブクライアントがシナリオを実行するたびに適正に変化させるべきパラメータである。そのため、そのリクエストメッセージを送信するよりも前に取得されたレスポンスメッセージの中から、第１の仮シナリオのリクエストパラメータ（pageId＝5432）を持つレスポンスメッセージを探し（ステップＳ１１２）、図５に示されるように、レスポンスメッセージ内のページデータの中に、当該リクエストパラメータ（pageId＝5432）が見つかったときには（ステップＳ１１３；ＹＥＳ）、そのリクエストパラメータがシナリオを行うたびにバリュー属性値を書き換える必要がある項目であるとして、そのリクエストパラメータに対応する要書換項目情報が、生成され、シナリオに組み込まれることとなる（ステップＳ１１４）。
【００４９】
このようにして作成されたシナリオを使って、仮想ウェブクライアントがウェブサーバ装置１０にアクセス負荷を掛けるときには、その仮想ウェブクライアントは、リクエストメッセージの送信とレスポンスメッセージの受信とを繰り返している最中に、要書換項目情報内の番号にて示される発生源リクエストメッセージを送信することとなったときには、それのレスポンスメッセージ内のページデータの中から、要書換項目情報内のネーム属性値を探しだし、そのネーム属性値に対応するバリュー属性値を読み出す。そして、仮想ウェブクライアントは、要書換項目情報内の番号にて示されるリクエストメッセージを送信するときには、そのリクエストメッセージ内の当該ネーム属性値に対応するバリュー属性値を、事前に読み出したバリュー属性値に置換してから、そのリクエストメッセージを送信する。
【００５０】
このように、シナリオ内に要書換項目情報を組み込んでおくことにより、仮想ウェブクライアントがシナリオを実行するたびに適正に変化させるべきリクエストパラメータが、シナリオを構成するリクエストメッセージに含まれていても、正常に、アクセス負荷が掛けられることとなる。
【図面の簡単な説明】
【００５１】
【図１】本実施形態のウェブ負荷試験の対象となるウェブサーバ装置とその試験を実行するウェブ負荷試験装置の構成図
【図２】シナリオ作成モジュールに従ってＣＰＵが実行する処理の流れを示す図
【図３】比較テーブルのデータ構造の一例を示す図
【図４】第１及び第２の仮シナリオのリクエストパラメータの一例を示す図
【図５】図４のリクエストパラメータを含むページデータの一例を示す図
【符号の説明】
【００５２】
１０    ウェブサーバ装置
１０ａ  ＣＰＵ
１０ｃ  通信アダプタ
１０ｄ  ストレージ
１２    ウェブサーバプログラム
１３    ページデータ
２０    ウェブ負荷試験装置
２０ａ  表示装置
２０ｂ  入力装置
２０ｃ  通信アダプタ
２０ｄ  ＣＰＵ
２０ｆ  ストレージ
２２    ウェブ負荷試験ツール
２２ａ  負荷シミュレータ
２２ｂ  ビューワ
２２ｃ  シナリオ作成モジュール
【図１】
2007264967.tif 000003
【図２】
2007264967.tif 000004
【図３】
2007264967.tif 000005
【図４】
2007264967.tif 000006
【図５】
2007264967.tif 000007