(57)【要約】  本発明は、テスト対象のシステムに対して所望の負荷を生成できているかを評価できる情報処理装置を提供する。その情報処理装置は、負荷生成装置から送信されたリクエストの時系列データに基づいて、単位時間あたりのリクエスト率を算出し、所定の階級データに基づいて前記リクエスト率を集計して度数分布データを作成する手段と、そのリクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する手段と、作成した観測度数分布データと取得した期待度数分布データを用いて、その観測度数分布データについてその確率分布との適合度検定を行う手段とを備える。
2013145629.tif 000002
【特許請求の範囲】
【請求項１】
負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段と、
前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する観測度数分布作成手段と、
前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得手段と、
前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定手段と、
を備える情報処理装置。
【請求項２】
前記時系列データ記憶手段が記憶する時系列データは、前記負荷生成装置が、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含むスクリプトを繰り返し実行することにより、前記テスト対象システムに対して送信したリクエストの送信時刻の時系列データであって、
前記時系列データ記憶手段から、前記スクリプトにおける最初のリクエストの送信時刻のデータを抽出し、前記抽出したデータを前記観測度数分布作成手段に出力するフィルタリング手段を更に備え、
前記観測度数分布作成手段は、前記フィルタリング手段が抽出したデータに基づいて、単位時間当たりに送信された前記最初のリクエストの数であるリクエスト率を算出し、前記リクエスト率を集計し、観測度数分布データを作成し、
期待度数分布取得手段は、前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する
請求項１に記載の情報処理装置。
【請求項３】
前記時系列データ記憶手段は、前記負荷生成装置が、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含むスクリプトを繰り返し実行することにより、前記テスト対象システムに対して送信したリクエストの送信時刻の時系列データと、前記負荷生成装置が前記スクリプトの実行を開始する際に、前記テスト対象システムに対して要求したＴＣＰ接続要求の送信時刻の時系列データと、を含み、
前記時系列データ記憶手段から、前記負荷生成装置から前記負荷生成装置へのＴＣＰ接続要求の送信時刻のデータを抽出し、前記抽出したデータを前記観測度数分布作成手段に出力するフィルタリング手段を更に備え、
前記観測度数分布作成手段は、前記フィルタリング手段が抽出したデータに基づいて、単位時間当たりに送信されたＴＣＰ接続要求の回数であるＴＣＰ接続要求率を算出し、前記ＴＣＰ接続要求率を集計し、観測度数分布データを作成し、
期待度数分布取得手段は、前記ＴＣＰ接続要求率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する
請求項１に記載の情報処理装置。
【請求項４】
負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段と、
前記時系列データに基づいて、リクエストの送信時間間隔を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて集計し、リクエストの送信時間間隔の度数分布データを作成する観測度数分布作成手段と、
前記リクエストの送信時間間隔の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得手段と
前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定手段と、
を備える情報処理装置。
【請求項５】
前記時系列データ記憶手段が記憶する時系列データは、前記負荷生成装置が、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含むスクリプトを繰り返し実行することにより前記テスト対象システムに対して送信したリクエストの送信時刻の時系列データであって、
前記時系列データ記憶手段から、前記スクリプトにおける最初のリクエストの送信時刻のデータを抽出し、前記抽出したデータを前記観測度数分布作成手段に出力するフィルタリング手段を更に備え、
前記観測度数分布作成手段は、前記フィルタリング手段が抽出したデータに基づいて、前記最初のリクエストの送信時間間隔を算出し、前記最初のリクエストの送信時間間隔を集計し、観測度数分布データを作成し、
期待度数分布取得手段は、前記最初のリクエストの送信時間間隔の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する請求項４に記載の情報処理装置。
【請求項６】
前記時系列データ記憶手段は、前記負荷生成装置が、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含むスクリプトを繰り返し実行することにより前記テスト対象システムに対して送信したリクエストの送信時刻の時系列データと、前記負荷生成装置が前記スクリプトの実行を開始する際に、前記テスト対象システムに対して要求したＴＣＰ接続要求の送信時刻の時系列データと、を含み、
前記時系列データ記憶手段から、前記負荷生成装置から前記負荷生成装置へのＴＣＰ接続要求の送信時刻のデータを抽出し、前記抽出したデータを前記観測度数分布作成手段に出力するフィルタリング手段を更に備え、
前記観測度数分布作成手段は、前記フィルタリング手段が抽出したデータに基づいて、ＴＣＰ接続要求の時間間隔を算出し、前記ＴＣＰ接続要求の時間間隔を集計し、観測度数分布データを作成し、
期待度数分布取得手段は、前記ＴＣＰ接続要求の時間間隔の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する
請求項４に記載の情報処理装置。
【請求項７】
前記階級データを取得する階級取得手段を含む
請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
請求項１乃至７のいずれか１項に記載の情報処理装置と、
前記負荷生成装置と、を含む
情報処理システム。
【請求項９】
負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段を備える装置の制御方法であって、
前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成するステップと、
前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得するステップと、
前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行うステップと、
を実行するよう制御する前記装置の制御方法。
【請求項１０】
負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段を備えるコンピュータに、
前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する観測度数分布作成処理、
前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得処理、
前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定処理、
を実行させるプログラムを記録した不揮発性記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムやサーバ等のための負荷テストに関し、テスト対象に対して所望の負荷を生成できているかを評価する技術に関する。
【背景技術】
【０００２】
システムやサーバ等の高負荷時の挙動を確認する方法の１つに、負荷テストとよばれる方法が知られている。その負荷テストは、対象となるシステムやサーバ等に擬似的に負荷をかける。【０００３】
多くの場合、負荷テストは、負荷テストツールとよばれるソフトウェアを用いて、負荷テスト実施装置により実施される。負荷テスト実施装置は、テスト対象システムに対してリクエストを送信することにより、テスト対象システムに負荷をかける。テスト対象システムは、負荷テスト実施装置から受け取ったリクエストを処理して、負荷テスト実施装置に応答する。【０００４】
テスト対象システムとしては、例えばオンラインショッピングサイトのサーバが挙げられる。以下、オンラインショッピングサイトの本番運用時に、サーバにどのような負荷が掛かるかを説明する。【０００５】
オンラインショッピングサイトの顧客は不特定多数存在している。それぞれの顧客は、オンラインショッピングサイトに到着すると、リクエストの送信及びリクエストに対する応答の受信を繰り返す。顧客がサーバに送信するリクエストは、例えば、商品の閲覧や選択、カートの確認、商品送付先やクレジットカード番号の入力等である。顧客は、自身が送信したリクエストに対する応答（例えば、商品を説明するテキスト、商品の画像、商品の動画等）を受け取る。その後、その顧客は、表示された商品の画面を確認したり、商品を選択するために考えたりして、再び次のリクエストを送信する。【０００６】
顧客は、リクエストの送信と応答の受信とを一通り繰り返して、目的の商品を購入するなどの目的を達成すると、オンラインショッピングのサイトの閲覧を終了する。【０００７】
オンラインショッピングサイトのように、不特定多数の顧客からリクエストを受け取るシステムにおいては、リクエストの到着間隔は指数分布に従うことが知られている。ここで、到着間隔は、あるリクエストが到着してから次のリクエストが到着するまでの時間間隔である。そしてリクエストの到着間隔が指数分布に従うとき、リクエストの到着率（単位時間当たりリクエスト到着数）はポアソン分布に従うことが知られている。【０００８】
特許文献１は、負荷テスト実施装置の一例を開示する。特許文献１が開示する負荷テスト実施装置では、負荷テスト実施装置のオペレータが、負荷テストを行う際の性能目標として、テスト対象システムが処理すべき単位時間当たりのリクエストの処理件数を入力する。その負荷テスト実施装置は、オペレータにより入力された性能目標を満たすように、負荷テスト実施の際の各種パラメタを自動的に調整してリクエストを送信する。【０００９】
特許文献２は、サーバの負荷容量を決定する方法を開示する。特許文献２が開示する方法は、以下のステップを含む。第１のステップでは、その方法は、仮想ユーザの動作をシミュレートし、クライアントからのリクエストをサーバに送信する。第２のステップでは、その方法は、サーバの性能指標であるメトリックを測定する。第３のステップでは、その方法は、測定したメトリックを所定値と比較し、メトリックが所定値の所定範囲内になるまで、メトリックと所定値との差に基づいて仮想ユーザ数を変更する。【００１０】
特許文献３は、分布適合度検定装置を開示する。特許文献３が開示する分布適合度検定装置は、集計区間決定手段、集計手段及び適合度検定手段を含む。集計区間決定手段は、測定したデータを集計する集計区間の幅を期待度数が等確率になるように決定する。集計手段は、決定した各集計区間のデータ数を集計する。適合度検定手段は、集計データと確率分布との適合度検定を行う。【００１１】
特許文献４は、カイ二乗判定を用いて、稼働状況の異常を検出する技術を開示する。【００１２】
特許文献５は、度数分布を生成する技術を開示する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６―３１１７８号公報
【特許文献２】特開２０１０―２４４５２８号公報
【特許文献３】特許４３４９２１６号公報
【特許文献４】特開２０１１−０３４２０８号公報
【特許文献５】特開２０１０−２５７２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
本番運用時に掛かる負荷を正確に再現していない負荷テストの結果を、信頼することはできない。そのため負荷テスト実施装置には、テスト対象システムの本番運用時に掛かる負荷を、正確に再現することが求められる。【００１５】
ここで、負荷テスト実施装置がテスト対象システムの本番運用時に掛かる負荷を正確に再現するためには、少なくとも以下の２つの要件を満たしてリクエストを送信することが必要である。その第１の要件は、単位時間当たりに送信する平均リクエスト数が所望の値を満たしていることである。その第２の要件は、所定の分布に従った時間間隔でリクエストを送信すること（単位時間当たりに送信するリクエスト数が、所定の分布に従っているとも言える）である。【００１６】
特許文献１の負荷テスト実施装置は、負荷テスト実施装置が送信するリクエストが第１の要件を満たしているか否かについての評価を行っていた。しかし、その負荷テスト実施装置は、第２の要件を満たしているかどうかを評価していなかった。【００１７】
負荷テスト実施装置が送信するリクエストが、第２の要件を満たしているか否かは、負荷テストの結果の信頼性にとって重要である。なぜならば、リクエストの到着の時間間隔が一定である場合と、一定でない場合とでは、たとえテスト対象システムのリクエスト処理性能及び単位時間当たり平均リクエスト到着数が等しくても、応答時間が異なるからである。ここで、応答時間は、テスト対象システムにリクエストが到着してから、負荷テスト実施装置が応答を受信するまでに必要な時間である。【００１８】
一般に、リクエストの到着時間間隔が一定でない場合は、リクエストの到着時間間隔が一定である場合よりも、応答時間は長くなる傾向にある。これは、リクエストが一定でない時間間隔で送信される場合に、リクエストの到着間隔が短い場合が続くと、テスト対象システムに多数のリクエストが到着することによって待ち行列が発生するためである。【００１９】
リクエストに対する応答時間を過小評価しないためにも、負荷テスト実施装置は一定の時間間隔ではなく、所定の分布に従った時間間隔でリクエストを送信する必要がある。しかし、これまで、負荷テスト実施装置が送信するリクエストが所定の分布を満たしているか否かを評価する装置は知られていなかった。【００２０】
本願発明では、負荷テスト実施装置が、テスト対象のシステムに対して所望の負荷を生成できているか、を評価することができる負荷評価を実行する情報処理装置、負荷評価方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決する第１の発明は、負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段と、前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する観測度数分布作成手段と、前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得手段と、前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定手段と、を備える情報処理装置である。【００２２】
上述した課題を解決する第２の発明は、負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段と、前記時系列データに基づいて、リクエストの送信時間間隔を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて集計し、リクエストの送信時間間隔の度数分布データを作成する観測度数分布作成手段と、前記リクエストの送信時間間隔の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得手段と、前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定手段と、を備える情報処理装置である。【００２３】
上述した課題を解決する第３の発明は、負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段を備える装置の制御方法であって、前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成するステップと、前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得するステップと、前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行うステップと、を実行するよう制御する前記装置の制御方法である。【００２４】
上述した課題を解決する第４の発明は、負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段を備えるコンピュータに、前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する観測度数分布作成処理、前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得処理、前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定処理、を実行させるプログラムを記録した不揮発性記録媒体である。
【発明の効果】
【００２５】
負荷テスト実施装置が、テスト対象のシステムに対して所望の負荷を生成できているかを評価することができる負荷評価を実行する情報処理装置、負荷評価方法及びプログラムを提供することができる。ここで、「負荷テスト実施装置が、テスト対象のシステムに対して所望の負荷を生成できているか」は、「負荷テスト実施装置が送信するリクエストが所定の分布を満たしているか」を含む。
【図面の簡単な説明】
【００２６】
【図１】図１は、第１の実施形態に係る負荷評価装置１を含むネットワーク構成図である。
【図２】図２は、第１の実施形態に係る負荷評価装置１の構成を示すブロック図である。
【図３】図３は、時系列データ記憶部１１１が記憶する時系列データの一例である。
【図４】図４は、カイ二乗分布データ記憶部１１２が記憶するデータの一例である。
【図５】図５は、階級取得部１２２が取得する階級データの一例である。
【図６】図６は、リクエスト率に関する観測度数分布データの一例である。
【図７】図７は、期待度数分布データの一例である。
【図８】図８は、第１の実施形態に係る負荷評価装置１の動作を説明するフローチャートである。
【図９】図９は、観測度数と期待度数を整理した例である。
【図１０】図１０は、リクエスト率に関する観測度数分布データの一例である。
【図１１】図１１は、第２の実施形態に係る負荷テスト実施装置２の構成を示すブロック図である。
【図１２】図１２は、閉じたモデルにおける仮想ユーザの典型的振る舞いを説明する図である。
【図１３】図１３は、開いたモデルにおける仮想ユーザの典型的振る舞いを説明する図である。
【図１４】図１４は、第２の実施形態に係る負荷評価装置１の構成を示すブロック図である。
【図１５】図１５は、第２の実施形態に係る負荷評価装置１の動作を説明するフローチャートである。
【図１６】図１６は、第３の実施形態に係る負荷評価装置１の構成を示すブロック図である。
【図１７】図１７は、指数分布の確率密度関数の一例である。
【図１８】図１８は、ポアソン分布の確率質量関数の一例である。
【図１９】図１９は、第４の実施形態に係る負荷評価装置１の構成を示すブロック図である。
【図２０】図２０は、第１の実施形態に係る負荷評価装置１を実現するコンピュータ７００のハードウェア構成を示す図である。
【発明を実施するための形態】
【００２７】
＜＜第１の実施形態＞＞
＜構成の説明＞
図１は、第１の実施形態に係る負荷評価装置（情報処理装置とも呼ばれる）１を含むネットワーク構成図である。
【００２８】
負荷評価装置１は、ネットワーク４を介して負荷テスト実施装置２及びテスト対象システム３と互いに通信可能に接続されている。
【００２９】
負荷テスト実施装置２（負荷生成装置とも呼ばれる）は、テスト対象システム３に対して負荷テストを実施する装置である。負荷テスト実施装置２は、テスト対象システム３との間にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）接続を確立し、テスト対象システム３に対してリクエストを送信し続けることにより負荷をかける。
【００３０】
テスト対象システム３は負荷テストの対象となるサーバやシステム等である。テスト対象システム３は、負荷テスト実施装置２から受け取ったリクエストを処理して負荷テスト実施装置２に応答する。
【００３１】
テスト対象システム３が、到着したリクエストを問題なく全て処理できている場合、負荷テスト実施装置２が送信するリクエストの送信時間間隔は、テスト対象システム３から見るとリクエストの到着時間間隔と等しくなる。また、テスト対象システム３が、到着したリクエストを問題なく全て処理できている場合、負荷テスト実施装置２が送信するリクエストの単位時間あたり平均送信数（リクエスト送信率）は、テスト対象システム３から見るとリクエストの単位時間あたり平均到着数（リクエスト到着率）と等しくなる。
【００３２】
これ以降、リクエストの送信間隔と到着間隔とを区別せずにリクエスト間隔とよぶ。また、リクエスト送信率やリクエスト到着率をリクエスト率とよぶことにする。リクエスト送信率やリクエスト到着率の値は、単位時間あたりのリクエスト処理数を表すスループットの値と等しくなる。
【００３３】
負荷評価装置１は、負荷テスト実施装置２とテスト対象システム３との間の通信データのログを取得する。そして、負荷評価装置１は、その取得したログを利用して、リクエスト間隔またはリクエスト率を算出する。負荷評価装置１は、その算出したリクエスト間隔またはリクエスト率の分布が、負荷テスト実施装置２のオペレータが希望する確率分布に適合しているか否かを評価する。
【００３４】
本実施形態においては、テスト対象システム３として、例えばオンラインショッピングサイトのように、不特定多数の顧客からリクエストを受け取るシステムを想定している。このようなシステムの本番運用時には、リクエスト間隔は指数分布やパレート分布といった確率分布に従う乱数となることが知られている。
【００３５】
指数分布の確率密度関数の例を図１７に示す。図１７において、横軸はリクエスト間隔、縦軸は確率を表す。指数分布は、パラメタλをもつ確率分布であり、期待値（平均値）は１／λとなる。リクエスト間隔が１／λのとき、その逆数λは、毎秒のリクエスト数（リクエスト率）を表す。
【００３６】
例えば、平均リクエスト間隔が１／２０（＝０．０５）秒のとき、平均リクエスト率は２０［リクエスト／秒］である。リクエスト間隔が指数分布に従うとき、リクエスト率はポアソン分布に従うことが知られている。
【００３７】
ポアソン分布の確率質量関数の例を図１８に示す。図の横軸はリクエスト率、縦軸は確率を表す。確率質量関数とは、離散的な確率分布に対する確率密度関数である。リクエスト率は整数しかとらないため、その確率分布は確率質量関数として表現される。
【００３８】
リクエスト間隔やリクエスト率が一定（定数）でなく、図１７や図１８のような確率分布に従う場合、リクエスト到着間隔が短いときと長いときとが、あるいは単位時間あたり到着リクエスト数が多いときと少ないときとが混在することになる。そして、テスト対象システムに多数のリクエストが到着するときは、待ち行列が発生し、応答時間が伸びる可能性が高まる。
【００３９】
一般に、平均リクエスト間隔が同一であっても、リクエスト間隔に図１７や図１８のような変動がある場合の方が、リクエスト間隔が一定の場合よりも、応答時間が長くなる。
【００４０】
上述したように、テスト対象システム３の本番運用時には、リクエスト間隔やリクエスト率には変動があることが経験的に知られている。そのため、テスト対象システム３の本番運用時に掛かる負荷を正確に再現するためには、負荷テスト実施装置２が送信するリクエスト間隔も、確率分布等を用いて負荷の変動を表現するのが合理的である。
【００４１】
逆に、負荷テスト実施装置２が送信するリクエスト間隔がオペレータの意図どおりのものでなければ、負荷テストの結果得られるスループットの値や応答時間の値は信頼できない。負荷テストの結果の信頼性を担保するには、リクエスト間隔が負荷テスト実施装置２のオペレータの意図する分布にしたがっていることを評価する必要がある。
【００４２】
図２は、本発明の第１の実施形態に係る負荷評価装置１の構成を示すブロック図である。負荷評価装置１は、記憶部１１０と処理部１２０と通信部１３０と入力部１４０と出力部１５０とを備えて構成されるコンピュータである。
【００４３】
記憶部１１０は、時系列データ記憶部１１１とカイ二乗分布データ記憶部１１２とを含んで構成される。
【００４４】
時系列データ記憶部１１１は、負荷テスト実施装置２とテスト対象システム３との通信に関する時系列データを記憶している。時系列データは、少なくとも、負荷テスト実施装置２からテスト対象システム３に対して送信されたリクエストの送信時刻のデータを含む。また、時系列データは、負荷テスト実施装置２からテスト対象システム３に対するＴＣＰ接続要求やＴＣＰ切断要求等を含んでいてもよい。
【００４５】
図３は、時系列データ記憶部１１１が記憶するデータの一例を示す図である。図３に示されるデータは、負荷テスト実施装置２とテスト対象システム３との通信に関するログ情報を表す。
【００４６】
図３中の最左列は行番号を表す。左から２番目の列はログの採取を開始してからの経過時刻（秒）を表す。左から３〜５番目の列の「Ｓ -> Ｄ」におけるＳ及びＤは、ホストのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスを表している。そして、その「Ｓ -> Ｄ」は、ＳからＤに対してデータが送信されたことを意味する。６番目の列は通信プロトコルを表す。この例の「ＴＣＰ」は、ＴＣＰプロトコルが用いられていることを示している。１０番目の列は、ＴＣＰパケットの種類を表し、１１番目以降の列は、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）プロトコルによって送信された内容を表している。
【００４７】
図３に示す時系列データ記憶部１１１の例では、例えば行番号10050は、ＩＰアドレス192.168.0.1で識別されるマシンから、ＩＰアドレス192.168.0.2で識別されるマシン上の／ｓｏｍｅ．ｐｈｐというコンテンツに対して、ログの採取を開始してから21.256673秒後の時刻にＧＥＴリクエストが送信されていることを表す。このように時系列データ記憶部１１１は、リクエストの送信時刻の時系列データを記憶している。
【００４８】
カイ二乗分布データ記憶部１１２は、カイ二乗分布の値を示すカイ二乗分布表またはカイ二乗分布の値を算出するための算出式を記憶する。そのカイ二乗分布の値は、後述するカイ二乗検定を行なう際に用いられる。図４は、カイ二乗分布データ記憶部１１２が記憶するカイ二乗分布表の一例を示す。カイ二乗分布表の詳細は後述する。
【００４９】
処理部１２０は、通信データ取得部１２１と、階級取得部１２２と、観測度数分布作成部１２３と、期待度数分布取得部１２４と、優位水準取得部１２５と、適合度検定部１２６とを含んで構成される。
【００５０】
通信データ取得部１２１は、負荷テスト実施装置２とテスト対象サーバ３との通信に関するデータを取得する。次に、通信データ取得部１２１は、取得した通信に関するデータを時系列データ記憶部１１１に記憶する。ここで、通信に関するデータとは、具体的には、リクエストの送信や、ＴＣＰ接続要求、ＴＣＰ切断要求を指す。
【００５１】
階級取得部１２２は、「度数分布」の作成に必要な「階級データ」を、負荷評価装置１のオペレータから受け付ける。
【００５２】
度数分布とは、ある性質や変量に対するサンプルデータ数の分布を表す。度数分布は頻度分布ともよばれる。このとき、サンプルデータを分類するためのある性質のクラスや変量の範囲（集計区間幅）を階級とよぶ。
【００５３】
階級データは、階級を定義するデータである。本実施形態に係る負荷評価装置１においては、負荷テスト実施装置２が送信したリクエスト間隔またはリクエスト率に関する区間の範囲を階級とする。
【００５４】
図５は、階級取得部１２２が取得する階級データの一例を示す図である。図５に示した階級データは、リクエスト率に関する階級データの一例であり、その内容は次のようなものである。本例では、７つの階級が設定される。尚、リクエスト率の「６〜」は、「６以上」を表す。
【００５５】
階級１：  ０(リクエスト／秒)以上１(リクエスト／秒)未満
階級２：  １(リクエスト／秒)以上２(リクエスト／秒)未満
階級３：  ２(リクエスト／秒)以上３(リクエスト／秒)未満
階級４：  ３(リクエスト／秒)以上４(リクエスト／秒)未満
階級５：  ４(リクエスト／秒)以上５(リクエスト／秒)未満
階級６：  ５(リクエスト／秒)以上６(リクエスト／秒)未満
階級７：  ６(リクエスト／秒)以上
観測度数分布作成部１２３は、時系列データ記憶部１１１が記憶する時系列データからリクエスト率またはリクエスト間隔を算出する。次に、観測度数分布作成部１２３は、算出したリクエスト率またはリクエスト間隔を、階級取得部１２２が受け付けた階級データに基づいて集計し、「観測度数分布データ」を作成する。
【００５６】
観測度数分布データとは、階級データの階級毎に、該階級の区分に該当する度数をカウントして、階級と度数とを対応付けたデータである。
【００５７】
図６は、観測度数分布作成部１２３が作成したリクエスト率に関する観測度数分布データの一例を示す図である。図６に示す観測度数分布データは、観測度数（サンプルデータ数）の合計が１００である。そして、その観測度数分布データは、階級取得部１２２が取得した階級データに従って集計されている。
【００５８】
期待度数分布取得部１２４は、オペレータが意図する分布に観測度数分布が沿っているか否かを検定するための「期待度数分布データ」を取得、若しくは算出する。
【００５９】
図７は、期待度数分布取得部１２４が取得する期待度数分布データの一例を示す図である。期待度数分布とは、観測値の分布が、オペレータが所望する確率分布に従うと仮定した場合に期待される度数分布である。ここで、観測値は、時系列データ取得部１１１が記憶する時系列データから分析される値である。
【００６０】
観測度数分布がリクエスト率に関する度数分布である場合、期待度数分布はポアソン分布に従う分布とする。図７に示す期待度数分布は、λ（期待値）が２のポアソン分布に基づき、期待度数分布の度数の合計が、観測度数分布の度数の合計と同じ値になるようにして算出された分布である。
【００６１】
優位水準取得部１２５は、カイ二乗検定における有意水準の値をオペレータから取得する。有意水準の値は、例えば５％や１％といった確率値である。取得した有意水準の値は、後述するカイ二乗検定の際に用いられる。
【００６２】
適合度検定部１２６は、観測度数分布作成部１２３が作成した観測度数分布データと、期待度数分布取得部１２４が取得した期待度数分布データとの適合度検定（カイ二乗検定）を行う。こうすることで、適合度検定部１２６は、負荷テスト実施装置２が送信するリクエストのリクエスト率またはリクエスト送信間隔が、負荷テスト実施装置２のオペレータの所望の分布に従っているか否かを評価する。
【００６３】
通信部３００は、負荷テスト実施装置２及びテスト対象システム３と通信を行う。
【００６４】
入力部４００は、負荷評価装置１のオペレータからの入力を受け付ける。
【００６５】
出力部５００は、負荷評価装置１のオペレータに対して情報を出力する。
＜ハードウェアの構成＞
負荷評価装置１の記憶部１１０は、ＲＡＭ（Random Access Memory）やＨＤＤ（Hard Disk Drive）などを用いて実現することができる。処理部１２０が備える各手段は、負荷評価装置１が備えるＣＰＵ（Central Processing Unit）が、所定のプログラムやコードを実行することによって実現することができる。通信部１３０は、例えばＯＳ(Operating System)が提供する機能を使ってアプリケーションプログラムがネットワークインターフェイスカード（ＮＩＣ:Network Interface Card）を制御することによって実現することができる。入力部１４０は、例えばキーボードやマウスを用いて実現することができる。出力部１５０は、例えばディスプレイを用いて実現することができる。
【００６６】
図２０は、本実施形態における負荷評価装置１を実現するコンピュータ７００のハードウェア構成を示す図である。
【００６７】
図２０に示すように、コンピュータ７００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７０１、記憶部７０２、記憶装置７０３、入力部７０４、出力部７０５及び通信部７０６を含む。更に、コンピュータ７００は、外部から供給される記録媒体（または記憶媒体）７０７を含む。記録媒体７０７は、情報を非一時的に記憶する不揮発性記録媒体であってもよい。
【００６８】
ＣＰＵ７０１は、オペレーティングシステム（不図示）を動作させて、コンピュータ７００の、全体の動作を制御する。また、ＣＰＵ７０１は、例えば記憶装置７０３に装着された記録媒体７０７から、プログラムやデータを読み込み、読み込んだプログラムやデータを記憶部７０２に書き込む。ここで、そのプログラムは、例えば、後述の図８、図１５に示すフローチャートの動作をコンピュータ７００に実行させるプログラムである。
【００６９】
そして、ＣＰＵ７０１は、読み込んだプログラムに従って、また読み込んだデータに基づいて、図２に示す処理部１２０として各種の処理を実行する。
【００７０】
尚、ＣＰＵ７０１は、通信網（不図示）に接続されている外部コンピュータ（不図示）から、記憶部７０２にプログラムやデータをダウンロードするようにしてもよい。
【００７１】
記憶部７０２は、図２の記憶部１２０に対応してよい。
【００７２】
記憶装置７０３は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、記録媒体７０７を含む。記憶装置７０３（記録媒体７０７）は、プログラムをコンピュータ読み取り可能に記憶する。また、記憶装置７０３は、データを記憶してもよい。記憶装置７０３は、図２の記憶部１２０に対応してよい。
【００７３】
入力部７０４は、図２の入力部１４０に対応してよい。
【００７４】
出力部７０５は、図２の出力部１５０対応してよい。
【００７５】
通信部７０６は、図２の通信部１３０に対応してよい。
【００７６】
以上説明したように、図２に示す負荷評価装置１の機能単位のブロックは、図２０に示すハードウェア構成のコンピュータ７００によって実現してよい。但し、コンピュータ７００が備える各部の実現手段は、上記に限定されない。すなわち、コンピュータ７００は、物理的に結合した１つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
【００７７】
尚、上述のプログラムのコードを記録した記録媒体７０７が、コンピュータ７００に供給され、ＣＰＵ７０１は、記録媒体７０７に格納されたプログラムのコードを読み出して実行するようにしてもよい。あるいは、ＣＰＵ７０１は、記録媒体７０７に格納されたプログラムのコードを、記憶部７０２、記憶装置７０３またはその両方に格納するようにしてもよい。すなわち、本実施形態は、コンピュータ７００（ＣＰＵ７０１）が実行するプログラム（ソフトウェア）を、一時的にまたは非一時的に、記憶する記録媒体７０７の実施形態を含む。
＜動作の説明＞
次に、第１の実施形態に係る負荷評価装置１の動作について説明する。図８は、負荷評価装置１の動作を説明するフローチャートである。
【００７８】
まず階級取得部１２２が、度数分布の作成に必要な階級のデータを取得する（Ｓ１１）。階級取得部１２２は、例えば、図５に例示したようなリクエスト率またはリクエスト間隔に関する階級データを取得する。以下、階級取得部１２２がリクエスト率に関する階級データを受け付けたとして説明する。
【００７９】
次に、観測度数分布作成部１２３は、階級取得部１２２からリクエスト率に関する階級データを取得する。続けて、観測度数分布作成部１２３は、時系列データ記憶部１１１に記憶されている時系列データに基づいて、リクエスト率を算出する。続けて、観測度数分布作成部１２３は、前記算出したリクエスト率を、階級取得部１２２から取得した階級データに基づいて集計し、リクエスト率に関する観測度数分布データを作成する（Ｓ１２）。観測度数分布作成部１２３は、例えば、図６に示すようなリクエスト率の観測度数分布データを作成する。
【００８０】
一方、期待度数分布取得部１２４は、観測値の分布がオペレータが所望する分布に従うと仮定した場合に期待される度数分布である、期待度数分布データを取得または作成する。例えば図７に示すような期待度数分布データを取得または作成する（Ｓ１３）。
【００８１】
ここで、わかりやすさのため、観測度数分布と期待度数分布を改めて整理して示すと、図９のようになる。
【００８２】
次に、優位水準取得部１２５は、有意水準の値をオペレータから取得する。優位水準取得部１２５は、例えば「５％」という有意水準の値を取得する（Ｓ１４）。
【００８３】
適合度検定部１２６は、観測度数分布作成部１２３が作成した観測度数分布データと、期待度数分布取得部１２４が取得した期待度数分布データとの適合度検定を行う（Ｓ１５）。
【００８４】
適合度検定部１２６は、適合度検定に、統計学の分野でよく知られているカイ二乗検定を用いる。カイ二乗検定による適合度検定は、「観測された事象の頻度分布が、期待される頻度分布に適合している」という仮説を検定する手法である。例えば、有意水準５％の場合、観測事象と期待事象の差を基に算出されるカイ二乗値が５％未満の危険域に含まれていると、仮定は棄却され、適合していない可能性が高いとみなされる。逆に、カイ二乗値が５％未満の危険域に含まれていないときは、適合しているという仮定は採択され、適合している可能性が高いとみなされる。
【００８５】
以下、具体的にカイ二乗検定を説明する。カイ二乗（χ２）検定では、まず観測度数と期待度数の分布からカイ二乗値が算出される。階級ｉの観測度数をＯｉ、期待度数をＥｉとしたとき、カイ二乗値は以下の式で算出される。
【００８６】
χ２＝Σｉ（（Ｏｉ−Ｅｉ）２／Ｅｉ）
本例では、カイ二乗値＝｛（１５−１３．５）２／１３．５｝＋｛（２７−２７．１）２／２７．１｝＋｛（２９−２７．１）２／２７．１｝＋｛（１３−１８．０）２／１８．０｝＋｛（６−９．０２）２／９．０２｝＋｛（５−３．６１）２／３．６１｝＋｛（５−１．６６）２／１．６６｝≒９．９６、と算出される。次に、カイ二乗値が９．９６となる確率がどれくらいかをカイ二乗分布表を基に算定する。図４は、カイ二乗分布表の一部を示している。カイ二乗分布表における自由度は、階級の数から１を減じた数字に対応する。つまり、本例の自由度は７−１＝６である。これは、サンプルデータ数が１００と決まっているため、６個の階級に対する度数が決まれば、残り１つの期待度数が決まってしまうということを意味している。図４のカイ二乗分布表は、自由度６のカイ二乗値に関して、次のことを示している。  
【００８７】
・カイ二乗値が０．８７２以下または１６．８１２以上になる確率は１％以下
・カイ二乗値が１．２３７以下または１４．４４９以上になる確率は２．５％以下
・カイ二乗値が１．６３５以下または１２．５９２以上になる確率は５％以下
本例では、算出されたカイ二乗値９．９６が得られる確率は５％未満の危険域にはないと判定される。すなわち、上述の「観測された事象の頻度分布が、期待される頻度分布に適合している」という仮説は、有意水準５％で採択される。すなわち、観測されたデータは、ユーザの意図する分布に適合するとみなしてよい。
【００８８】
尚、期待度数が１０や５を下回る階級があると、算出されるカイ二乗値の誤差が大きくなることが知られている。本例の場合、カイ二乗値の算出にあたり、リクエスト率「５」と「６〜」の階級を、図１０に示すように「５〜」にまとめてもよい。
【００８９】
最後に出力部１５０は、適合しているという判定結果をディスプレイ等の外部の出力装置やログファイル等に出力する（Ｓ１６）。以上に説明した例の場合、判定結果は、負荷生成器の生成した負荷におけるリクエスト率が、ユーザの意図する分布に適合していることを意味する。
＜＜第１の実施形態の変形例＞＞
上記の例では、負荷テスト実施装置２が送信するリクエスト率に対する分布を評価したが、負荷テスト実施装置２が送信するリクエスト間隔に対する評価を行うこともできる。リクエスト間隔に対する評価を行う際には、階級取得部１２２が取得する階級データをリクエスト間隔に関する階級データとし、期待度数分布取得部１２４が取得または算出する期待度分布を、指数分布に従うものとすればよい。
【００９０】
リクエスト間隔に関する階級データの一例を挙げると、例えば次のようなものである。
【００９１】
階級１：  ０．０（秒）以上０．１（秒）未満
階級２：  ０．１（秒）以上０．２（秒）未満
階級３：  ０．２（秒）以上０．３（秒）未満
階級４：  ０．３（秒）以上０．４（秒）未満
階級５：  ０．４（秒）以上０．５（秒）未満
階級６：  ０．５（秒）以上０．６（秒）未満
階級７：  ０．６（秒）以上
観測度数分布作成部１２３は、階級取得部１２２が受け付けた階級データがリクエスト間隔に関するデータである場合、リクエスト間隔に関する観測度数分布データを作成すればよい。また、観測度数分布作成部１２３は、階級取得部１２２が受け付けた階級データがリクエスト率に関するデータである場合、リクエスト率に関する観測度数分布データを作成すればよい。
【００９２】
負荷評価装置１と負荷テスト実施装置２とは一体の装置であっても構わない。階級取得部１２２は、階級データをオペレータから取得することに代えて、別途図示しない記憶部等から取得してもよい。期待度数分布取得部１２４は、期待度数分布データをオペレータから取得するのではなく、別途図示しない記憶部等から取得するとしてもよい。有意水準取得部１２５は、期待度数分布データをオペレータから取得するのではなく、別途図示しない記憶部等から取得するとしてもよい。
【００９３】
以上に説明したように、本実施形態に係る負荷評価装置１によれば、負荷テスト実施装置２が送信するリクエストの送信時間間隔またはリクエスト送信率が、所定の分布に従っているか否かを検定することができる。係る情報を参照することにより、負荷テストが正確に行われたか否かを確認することができ、負荷テストの結果が信頼に値するか否かを判断することができる。
【００９４】
その理由は、以下の構成を含むようにしたからである。第１に、時系列データ記憶部が、負荷テスト実施装置２からテスト対象システム３へと送信された、リクエストの送信時刻の時系列データを記憶する。第２に、観測度数分布作成部１２３が、その時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて、リクエスト率を集計し、リクエスト率の観測度数分布データを作成する。第３に、期待度数分布取得１２４が、そのリクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する。第４に、適合度検定１２６が、その観測度数分布データとその期待度数分布データとを用いて、その観測度数分布データについてその所望の確率分布との適合度検定を行う。
＜＜第２の実施形態＞＞
第２の実施形態に係る負荷評価装置１は、テストシナリオにより実行されるタイプの負荷テストを評価対象とする。
【００９５】
まず、負荷テストにおける「テストシナリオ」の概念について説明する。「テストシナリオ」とは、テスト対象システム３にリクエストを送信し負荷を与えるためのスクリプトである。テストシナリオは、「仮想ユーザ」により実行される。「仮想ユーザ」とは、テスト対象システム３に対してリクエストを送信するための機能であり、負荷テスト実施装置２により生成される。ここで、第２の実施形態に係る負荷評価装置１の評価対象となる、負荷テスト実施装置２の構成を説明する。
＜負荷テスト実施装置２の構成＞
図１１は、第２の実施形態に係る負荷テスト実施装置２の構成を示すブロック図である。負荷テスト実施装置２は、テスト記憶部２１０と、生成部２２０とを備えて構成される。
【００９６】
テスト記憶部２１０は、テストシナリオを記憶する。
【００９７】
テストシナリオは、テスト対象システム３にリクエストを送信し負荷を与えるためのスクリプトである。テストシナリオは、リクエストを送信してからそのリクエストに対する応答を受信するまでの処理を、複数回含むものとする。テストシナリオの具体的内容は、テスト対象システム３の典型的な処理内容を考慮して、負荷テスト実施装置２のオペレータにより決定される。
【００９８】
例えばテスト対象システム３がＷｅｂサーバの場合、リクエストのデータはＷｅｂサーバのＵＲＬ（Uniform Resource Locator）である。例えばテスト対象システム３がオンラインショッピングサイトの場合、テストシナリオ中の一連のリクエストは、オンラインショッピングサイトの顧客による、商品の閲覧や選択、カートの確認、商品送付先やクレジットカード番号の入力等の一連の操作に対応している。
【００９９】
生成部２２０は、「仮想ユーザ」を生成し、仮想ユーザにテストシナリオを実行させる。
【０１００】
仮想ユーザとは、例えば、ユーザによるテスト対象システム３へのアクセスを模擬するために、テスト対象システム３に対してリクエストを送信するための機能である。各仮想ユーザは、テスト対象システム３に対してリクエストを送信することにより負荷をかける。
【０１０１】
生成部２２０は、負荷テスト実施装置２が複数の仮想ユーザを並行して動作させるためにＯＳレベルのスレッドやプロセスを仮想ユーザ数の分だけ生成し、各スレッドやプロセスでテストシナリオを実行させる。＜仮想ユーザの典型的振る舞い＞
次に、仮想ユーザの典型的振る舞いを説明する。仮想ユーザの典型的な振る舞いには、「閉じたモデル」と「開いたモデル」とが有る。仮想ユーザの振る舞いとして、「閉じたモデル」と「開いたモデル」とのどちらを選択するかは、負荷テスト実施装置２のオペレータが、実施したい負荷テストの性質に合わせて決定する事項である。
＜閉じたモデルの説明＞
図１２は、閉じたモデルにおける仮想ユーザの典型的振る舞いを説明する図である。
【０１０２】
仮想ユーザは、まず、テスト対象システム３にリクエストを送信する前に、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ）プロトコルに従ってＴＣＰ接続を確立する。これにより、仮想ユーザが動作する負荷テスト実施装置１とテスト対象システム３との間に、リクエストやレスポンスをやりとりするための論理的な通信路が用意される。
【０１０３】
ＴＣＰ接続の確立後、仮想ユーザはテストシナリオに規定されたリクエストを送信する。まず、仮想ユーザは第１のリクエストを送信し第１のリクエストに対する応答を受信する。仮想ユーザは、あるリクエストに対する応答を受け取ってから次のリクエストを送信するまで、一定時間（思考時間）休止する。仮想ユーザは、第１のリクエストに対する応答を受信してから思考時間が経過すると、第２のリクエストを送信し第２のリクエストに対する応答を受信する。
【０１０４】
仮想ユーザはこれらの動作を繰り返し、テストシナリオに規定された既定のリクエスト数（Ｎ）に対して、第Ｎのリクエストに対する受信を終えると、ＴＣＰ接続を切断する。ＴＣＰ接続を確立してからＴＣＰ接続を切断するまでで、仮想ユーザは、１ユーザ分の処理を完了する。そして仮想ユーザは、第Ｎのリクエストに対する受信を終えてから一定時間（思考時間）休止した後、再度テストシナリオを実行する。
【０１０５】
仮想ユーザは、既定の回数あるいは既定の時間だけテストシナリオの実行を繰り返す。これは、各仮想ユーザが、１回のテストシナリオの実行で処理を終了してしまうと、テスト対象システム３に対して負荷を一定期間にわたってかけ続けることができないためである。
【０１０６】
このように一定数の仮想ユーザが同じようなリクエスト処理を繰り返す仕組みは、閉じたモデル（closed model）とよばれる。
【０１０７】
思考時間は、「ユーザがリクエストの選択に掛かる時間」を模擬した時間である。例えばテスト対象システム３がオンラインショッピングサイトである場合を考える。オンラインショッピングサイトの顧客は、リクエストに対する応答（例えば、商品を説明するテキスト、商品の画像、商品の動画等）を受け取る。その後、その顧客は、表示された商品の画面を確認したり、商品を選択するために考えたり、商品送付先やクレジットカード番号を入力したり等をする。顧客はリクエストに対する応答を受け取ってからこれらの時間が経過した後、次のリクエストを送信する。このように、ユーザがあるリクエストに対する応答を受け取ってから次のリクエストを送信するまでの時間間隔を、思考時間を用いて模擬しているのである。
【０１０８】
思考時間の長さは、負荷テスト実施装置２のオペレータが設定することができるパラメタである。多くの場合、負荷テスト実施装置２のオペレータは思考時間の平均値をパラメタとして設定する。そして、負荷テスト実施装置２は、そのパラメタに基づいて、指数分布に従う乱数を用いて、リクエストを送信するまでの思考時間の長さを決定する。負荷テスト実施装置２はこのようにして送信するリクエストの時間間隔を調整し、リクエストの送信間隔の変動を再現する。
【０１０９】
ここで、仮想ユーザがリクエストを送信してから前記リクエストに対する応答を受信するまでの時間（応答時間）をＲＴとし、思考時間をＴＴとすると、テストシナリオ中のリクエスト送信時間間隔は、応答時間ＲＴと思考時間ＴＴとの和によって決定される。ここで、応答時間ＲＴはテスト対象システムの負荷の状態に影響を受ける観測値であり、負荷テスト実施装置１のオペレータからは直接制御することができない値である。
【０１１０】
テスト対象システム３の負荷が高まり、応答時間ＲＴが伸びて、思考時間ＴＴに比べて応答時間ＲＴが大きくなると、リクエスト送信時間間隔の決定においては応答時間ＲＴがより支配的となる。このような場合、せっかく思考時間ＴＴを乱数としてリクエストの送信間隔の変動を再現しようとしたにも関わらず、その効果が薄れてしまうことになる。その結果、リクエストの送信時間間隔はオペレータの意図する送信時間間隔からずれてしまうことになる。
【０１１１】
また、閉じたモデルでは、テスト対象システムの負荷が高まり、応答時間が伸びると、テストシナリオの完了までの時間も伸びるため、次のテストシナリオの繰返し（仮想ユーザの到着）の時間が遅延するという問題がある。つまり、閉じたモデルには、テスト対象システムの負荷が高くなることによって、負荷生成器の生成する負荷が低下するという欠点がある。
＜開いたモデルの説明＞
閉じたモデルと開いたモデルとの違いは、閉じたモデルでは仮想ユーザがテストシナリオの実行を繰り返すのに対し、開いたモデルでは仮想ユーザが動的に生成され、テストシナリオの実行後に消滅する点にある。
【０１１２】
図１３は、開いたモデルにおける仮想ユーザの典型的振る舞いを説明する図である。
【０１１３】
仮想ユーザは、まず、テスト対象システム３にリクエストを送信する前に、ＴＣＰ／ＩＰプロトコルに従ってＴＣＰ接続を確立する。これにより、仮想ユーザが動作する負荷テスト実施装置１とテスト対象システム３との間に、リクエストやレスポンスをやりとりするための論理的な通信路が用意される。
【０１１４】
ＴＣＰ接続の確立後、仮想ユーザはテストシナリオに規定されたリクエストを送信する。まず、仮想ユーザは第１のリクエストを送信し第１のリクエストに対する応答を受信する。
【０１１５】
次に、仮想ユーザは第２のリクエストを送信し第２のリクエストに対する応答を受信する。仮想ユーザはこれらの動作を繰り返し、テストシナリオに規定された既定のリクエスト数（Ｎ）に対して、第Ｎのリクエストに対する受信を終えると、ＴＣＰ接続を切断する。ＴＣＰ接続を確立してからＴＣＰ接続を切断するまでで、仮想ユーザは、１ユーザ分の処理を完了する。
【０１１６】
開いたモデルでは、テスト対象システムの負荷に関係なく、ユーザの意図した頻度で仮想ユーザが到着するため、閉じたモデルと比較するとより正確な負荷を生成することができる。
【０１１７】
以上、テストシナリオの実施による負荷テストの概要を説明すると共に、テストシナリオという概念を説明した。
＜構成の説明＞
図１４は、本発明の第２の実施形態に係る負荷評価装置１の構成を示すブロック図である。第１の実施の形態における構成要素と同様の構成要素は同一の符号を付し、その説明を省略する。第２の実施形態に係る負荷評価装置１は、図２に示す第１の実施形態における負荷評価装置１の構成に加えて、フィルタリング部１２７を備える。
【０１１８】
フィルタリング部１２７は、時系列データ記憶部１１１に記憶された時系列データから、テストシナリオにおける最初のリクエストに関するデータを抽出する。
【０１１９】
時系列データ記憶部１１１には、仮想ユーザが、スクリプトを繰り返し実行することにより、テスト対象システム３に送信したリクエストの送信時刻の時系列データが記憶されている。時系列データ記憶部１１１には、更に、仮想ユーザがスクリプトの実行を開始する際に、テスト対象システム３に対して要求したＴＣＰ接続要求の送信時刻の時系列データが記憶されている。
【０１２０】
フィルタリング部１２７は、負荷テスト実施装置２からテスト対象システム３に対してＴＣＰ接続要求があった後、始めに送信されたリクエストの送信時刻のデータを、時系列データ記憶部１１１から抽出する。上述した、閉じたモデルと開いたモデルの説明の中で述べた通り、ＴＣＰ接続要求があった後、始めに送信するリクエストがテストシナリオにおける最初のリクエストだからである。
【０１２１】
図３に示す時系列データ記憶部１１１が記憶するデータの具体例を用いて、フィルタリング部１２７の動作を説明する。図３は、負荷テスト実施装置２とテスト対象システム３との通信に関するログ情報である。
【０１２２】
図３の行10047〜10049は、負荷テスト実施装置２が生成した仮想ユーザ（アドレス192.168.0.1の1855番ポート）からテスト対象システム３（アドレス192.168.0.2の80番ポート）に対してコネクション接続要求があり、コネクションが無事確立されたことを表している。OS上のアプリケーションは、ＴＣＰポートを通じて通信を行なう。OS上のアプリケーションは、そのための準備として [SYN], [SYN,ACK], [ACK] パケットをやりとりして、お互いのコネクションを確立する。
【０１２３】
図３の行10050は、仮想ユーザからテスト対象システム３に対して、HTTPプロトコルによってサーバ上の /some.ｐｈｐ というコンテンツに対してGETリクエストが送信されたことを表している。行10050に記載されたリクエストは、行10047〜10049に記載されたＴＣＰ接続要求の後、始めに送信されたリクエストであるので、フィルタリング部１２７は、行10050に記載されたリクエストの送信時刻のデータを抽出する。
【０１２４】
フィルタリング部１２７は、このように時系列データ記憶部１１１が記憶するデータを解析し、テストシナリオにおける最初のリクエストに関するデータを抽出する。
＜動作の説明＞
次に、第２の実施形態に係る負荷評価装置１の動作について説明する。図１５は、負荷評価装置１の動作を説明するフローチャートである。
【０１２５】
まず、フィルタリング部１２７は、時系列データ記憶部１１１に記憶された時系列データから、テストシナリオにおける最初のリクエストに関するデータを抽出する。続けて、フィルタリング部１２７は、抽出したデータを観測度数分布作成部１２３に出力する（Ｓ２１）。
【０１２６】
次に、階級取得部１２２が、度数分布の作成に必要な階級データを取得する（Ｓ２２）。
【０１２７】
次に、観測度数分布作成部１２３は、フィルタリング部１２７が出力したデータに基づき、テストシナリオにおける最初のリクエストに関する、リクエスト率を分析する。観測度数分布作成部１２３は更に、階級取得部１２２から取得した階級データに基づいて、上記リクエスト率に関する観測度数分布データを作成する（Ｓ１２）。
【０１２８】
以降の動作は第１の実施形態に係る負荷評価システムの動作と同様であるので、説明を省略する。
【０１２９】
第２の実施形態に係る負荷評価装置１は、テストシナリオの最初のリクエストのみに関してリクエスト間隔またはリクエスト率を評価する。ここで、リクエスト間隔が指数分布に従っている場合、またはリクエスト率がポアソン分布に従っている場合、テストシナリオの最初のリクエストのみに関する評価を行うことによって、負荷テスト実施装置２が送信するリクエスト全体に関する評価を近似的に行うことができる。これは、指数分布またはポアソン分布が「無記憶性」とよばれる性質を有することによるものである。
【０１３０】
以上に説明したように、第２の実施形態に係る負荷評価装置１では、フィルタリング部１２７が時系列データ記憶部１１１に記憶された時系列データから一部分のみを抽出する。そして、観測度数分布作成部１２３は、フィルタリング部１２７が抽出したデータのみを集計する。こうして、第２の実施形態に係る負荷評価装置１においては、観測度数分布作成部１２３の集計対象となるデータが少なくなるため、観測度数分布作成部１２３の一連の処理を低コスト化することが可能となる。
【０１３１】
また、第２の実施形態に係る負荷評価装置１は、フィルタリング部１２７が抽出したテストシナリオの最初のリクエストのみに関してリクエスト間隔またはリクエスト率を評価する。こうすることにより、負荷評価装置１は、仮想ユーザの到着間隔や到着率を評価する。上述したように開いたモデルにおいては、仮想ユーザの到着間隔や到着率は負荷対象システム３の負荷によらず、負荷テスト実施装置２側でコントロールしている。従って、第２の実施形態に係る負荷評価装置１は、仮想ユーザの到着間隔や到着率を評価することによりテスト対象システム３の負荷に左右されず、負荷テスト実施装置２が生成した仮想ユーザが送信するリクエストの品質（リクエスト間隔、リクエスト率）を正確に評価することが可能である。
＜＜第２の実施形態の変形例＞＞
ところで、フィルタリング部１２７が時系列データ記憶部１１１から抽出するのは、必ずしもテストシナリオの最初のリクエストに関するデータのみでなくても良い。例えば、フィルタリング部１２７は、負荷テスト実施装置２からテスト対象システム３へのＴＣＰ接続要求を抽出してもよい。
【０１３２】
Ｗｅｂサーバへのリクエストは、通常ＨＴＴＰやＨＴＴＰＳ(Hypertext Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ over Secure Socket Layer)といったプロトコルに従って送信される。ＨＴＴＰやＨＴＴＰＳは、ＴＣＰプロトコルの上で動作するプロトコルであり、ＴＣＰの通信パケットを解析するのはＨＴＴＰやＨＴＴＰＳのパケットを解析するのに比べて手間が掛からない。
【０１３３】
従って、ＴＣＰ接続要求に関する適合度検定は、テストシナリオにおける最初のリクエストに関する適合度検定よりも、更に少ないコストで実施することが可能である。
【０１３４】
フィルタリング部１２７は、時系列データ記憶部１１１からＴＣＰ接続要求の送信時刻のデータを抽出し、観測度数分布作成部１２３に出力する。
【０１３５】
観測度数分布作成部１２３は、フィルタリング部１２７が抽出したデータに基づき、単位時間当たりのＴＣＰ接続要求回数（ＴＣＰ接続要求率）を算出する。次に、観測度数分布作成部１２３は、階級取得部１２２から所得した階級データに基づき、その算出したＴＣＰ接続要求率を集計し、ＴＣＰ接続要求率の観測度数分布データを作成する。
【０１３６】
以降の動作は第１の実施形態に係る負荷評価システムの動作と同様であるので、説明を省略する。
＜＜第３の実施形態＞＞
図１６は、本発明の第３の実施形態に係る負荷評価装置１の構成を示すブロック図である。第１の実施の形態における構成要素と同様の構成要素は同一の符号を付し、その説明を省略する。
【０１３７】
第３の実施形態に係る負荷評価装置１は、図１４に示す第２の実施形態における負荷評価装置１の構成と比較してフィルタリング部１２７の代わりにフィルタリング部１２７Ａを備える。また、時系列データ記憶部１１１の代わりに時系列データ記憶部１１１Ａを備える。
【０１３８】
第３の実施形態に係る負荷評価装置１は、第１の実施形態に係る負荷評価装置１と比較して、時系列データ記憶部１１１Ａの記憶容量を節約することができる。
【０１３９】
すなわち、第３の実施形態に係る負荷評価装置１によると、フィルタリング部１２７Ａは、通信データ取得部１２１が取得した通信に関するデータのうち、一部分のみを抽出して時系列データ記憶部１１１Ａに記憶する。具体的には、フィルタリング部１２７Ａは、通信データ取得部１２１が取得した通信に関するデータから、テストシナリオの最初のリクエストの送信時刻のデータまたはＴＣＰ接続要求の送信時刻のデータを抽出し、時系列データ記憶部１１１に記憶する。
【０１４０】
フィルタリング部１２７Ａが、テストシナリオの最初のリクエストに関するデータまたはＴＣＰ接続要求を抽出する動作は、第２の実施形態と同様であるので説明を省略する。また、第３の実施形態に係る負荷評価装置１がリクエスト間隔またはリクエスト率の分布の適合度検定を行う動作は、第１の実施形態と同様であるので説明を省略する。
【０１４１】
以上に説明したように、第３の実施形態に係る負荷評価装置１では、時系列データ記憶部１１１は、フィルタリング部１２７が抽出した一部のデータのみを記憶する。これにより、第３の実施形態に係る負荷評価装置１においては、時系列データ記憶部１１１の記憶容量を節約することができる。
＜＜第４の実施形態＞＞
本発明の第４の実施形態に係る負荷評価装置１について図面を参照して詳細に説明する。
【０１４２】
図１９は、第４の実施形態に係る負荷評価装置１の構成図である。
【０１４３】
第４の実施形態に係る負荷評価装置１は、時系列データ記憶部１１１と、観測度数分布作成部１２３と、期待度数分布取得部１２４と、適合度検定部１２６と、を備えて構成される。
【０１４４】
時系列データ記憶部１１１は、負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する。
【０１４５】
観測度数分布作成部１２３は、その時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する。
【０１４６】
期待度数分布取得部１２４は、そのリクエスト率の分布が所望の確率分布に基づくと仮定した場合に期待される度数分布データである期待度数分布データを取得する。
【０１４７】
適合度検定部１２６は、その観測度数分布データとその期待度数分布データとを用いて、その観測度数分布データについてその所望の確率分布との適合度検定を行う。
【０１４８】
以上の構成を含むことにより、本実施形態の負荷評価装置１は、負荷テスト実施装置２が、テスト対象のシステムに対して所望の負荷を生成できているかを評価することができる。ここで、「負荷テスト実施装置が、テスト対象のシステムに対して所望の負荷を生成できているか」は、「負荷テスト実施装置が送信するリクエストが所定の分布を満たしているか」を含む。
【０１４９】
本願発明においては、負荷テスト実施装置２は、請求の範囲に記載した「負荷生成装置」の一例である。あるいは、負荷テスト実施装置２が生成した各仮想ユーザを、請求の範囲に記載した「負荷生成装置」とみなすこともできる。尚、負荷テスト実施装置２は、リクエスト送受信機能のみを実装したエージェントを、負荷テスト実施装置２とは別に別途設けるとしても良い。この場合には、テスト対象システム３とリクエストの送受信を行うエージェントが、請求の範囲に記載した「負荷生成装置」に相当する。
【０１５０】
以上、本願発明を実施するための形態について説明したが、上記実施の形態は本願発明の理解を容易にするためのものであり、本願発明を限定して解釈するためのものではない。本願発明はその趣旨を逸脱することなく変更、改良され得ると共に、本願発明にはその等価物も含まれる。
【０１５１】
この出願は、２０１２年３月３０日に出願された日本出願特願２０１２−０７９４１９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１５２】
本発明は、サーバに所定の負荷を与えたときの性能や挙動を検証するための負荷テスト装置に対する評価装置またはシステムとして好適である。
【符号の説明】
【０１５３】
１    負荷評価装置
２    負荷テスト実施装置
３    テスト対象システム
４    ネットワーク
１１０    記憶部
１１１    時系列データ記憶部
１１２    カイ二乗データ記憶部
１２０    処理部
１２１    通信データ取得部
１２２    階級取得部
１２３    観測度数分布作成部
１２４    期待度数分布取得部
１２５    優位水準取得部
１２６    適合度検定部
１２７    フィルタリング部
１３０    通信部
１４０    入力部
１５０    出力部
１６０    テスト記憶部
２２０    生成部
【図１】
2013145629.tif 000003
【図２】
2013145629.tif 000004
【図３】
2013145629.tif 000005
【図４】
2013145629.tif 000006
【図５】
2013145629.tif 000007
【図６】
2013145629.tif 000008
【図７】
2013145629.tif 000009
【図８】
2013145629.tif 000010
【図９】
2013145629.tif 000011
【図１０】
2013145629.tif 000012
【図１１】
2013145629.tif 000013
【図１２】
2013145629.tif 000014
【図１３】
2013145629.tif 000015
【図１４】
2013145629.tif 000016
【図１５】
2013145629.tif 000017
【図１６】
2013145629.tif 000018
【図１７】
2013145629.tif 000019
【図１８】
2013145629.tif 000020
【図１９】
2013145629.tif 000021
【図２０】
2013145629.tif 000022
【手続補正書】
【提出日】平成26年9月18日(2014.9.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
負荷生成装置からテスト対象システムへと送信された、リクエストの送信時刻の時系列データを記憶する時系列データ記憶手段を備えるコンピュータに、
前記時系列データに基づいて、単位時間あたりに送信されたリクエスト数であるリクエスト率を算出し、度数分布データを作成するための集計区間幅である階級データに基づいて前記リクエスト率を集計し、リクエスト率の度数分布データを作成する観測度数分布作成処理、
前記リクエスト率の分布が所望の確率分布に従うと仮定した場合に期待される度数分布データである期待度数分布データを取得する期待度数分布取得処理、
前記観測度数分布データと前記期待度数分布データとを用いて、前記観測度数分布データについて前記所望の確率分布との適合度検定を行う適合度検定処理、を実行させる
プログラム。
【国際調査報告】
2013145629.tif 000023
2013145629.tif 000024
2013145629.tif 000025
2013145629.tif 000026