(57)【要約】[課題]テスト対象システムに掛かる負荷を正確に再現する。[解決手段]リクエストを送信してからリクエストに対する応答を受信する処理を複数回含み、受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間が含まれるテストシナリオを記憶するテスト記憶手段と、負荷を掛ける対象となるシステムに対してテストシナリオを実行して負荷を掛ける負荷発生手段を生成する生成手段と、待機時間の長さを定めるパラメタを記憶するパラメタ記憶手段と、単位時間当たり所望の数のリクエストがシステムに到達するようにパラメタを調整するパラメタ調整手段と、負荷発生手段が実行中のテストシナリオに含まれる待機時間の間はＴＣＰ接続を切断する通信制御手段と、を含む情報装置。
2013145628.tif 000002
【特許請求の範囲】
【請求項１】
リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間のいずれかであるテストシナリオを記憶するテスト記憶手段と、
負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成する生成手段と、
前記待機時間の長さを定めるパラメタを記憶するパラメタ記憶手段と、
単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整するパラメタ調整手段と、
前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断する通信制御手段と
を含む情報処理装置。
【請求項２】
前記通信制御手段は、
前記負荷発生手段が実行するテストシナリオに含まれる最後の受信と、次のテストシナリオに含まれる最初の送信との間を待機時間とする
請求項１に記載の情報処理装置。
【請求項３】
前記テスト記憶手段は、
前記複数回の処理を行う間に前記待機時間を少なくとも１回含むテストシナリオを記憶する
請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記負荷発生手段がリクエストを送信してから前記リクエストに対する応答を受信するまでの時間の代表値である、応答時間代表値を取得する応答時間取得手段を更に含み、
前記パラメタ記憶手段は、更に、前記応答時間代表値を記憶し、
前記応答時間取得手段は、前記応答時間代表値を取得すると、前記パラメタ記憶手段が記憶する前記応答時間代表値を更新し、
前記パラメタ調整手段は、前記パラメタ記憶手段が記憶する前記パラメタの値と、前記パラメタ記憶手段が記憶する前記応答時間代表値と、前記応答時間取得手段が新たに取得した応答時間代表値とに基づいて、新たなパラメタの値を算出する
請求項１から３のいずれかに１項に記載の情報処理装置。
【請求項５】
前記応答時間代表値として許容される最大の値との入力を受け付けるパラメタ入力受付手段を更に含み、
前記生成手段が生成する負荷発生手段の数が、前記応答時間代表値に許容される最大の値に基づいて決定される
ことを特徴とする、請求項１から４のいずれかに１項に記載の情報処理装置。
【請求項６】
前記パラメタ入力受付手段が受信した前記応答時間代表値として想定される最小の値、又は、前記応答時間代表値がゼロ秒であるとの仮定に基づいて、前記パラメタの初期値が決定される、
ことを特徴とする、請求項５に記載の情報処理装置。
【請求項７】
前記パラメタ記憶手段が記憶する前記応答時間代表値と、応答時間取得手段が取得した応答時間代表値との、差分を算出する応答時間比較手段と、
前記差分の許容範囲を記憶する応答時間許容誤差記憶手段と、を更に含み、
前記応答時間比較手段は、前記差分が前記差分の許容範囲内か否かを判定し、
前記パラメタ調整手段は、前記差分が前記差分の許容範囲外の場合に、パラメタの新たな値を算出する
請求項４から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記応答時間代表値に許容される最小の値と最大の値を記憶する応答時間許容範囲記憶手段と、
前記応答時間取得手段が取得した応答時間代表値が、前記最小の値から最大の値までの範囲か否かを判定する応答時間判定手段と、
前記応答時間判定部の判定の結果を通知する通知手段と
を更に含む請求項４から７のいずれか１項に記載の情報処理装置。
【請求項９】
リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間のいずれかであるテストシナリオを記憶し、
負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成して、負荷を掛ける対象となるシステムに対して負荷を掛け、
前記待機時間の長さを定めるパラメタを記憶し、
単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整し、
前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断する
テスト負荷装置の制御方法。
【請求項１０】
リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間のいずれかであるテストシナリオを記憶するテスト記憶処理と、
負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成して、負荷を掛ける対象となるシステムに負荷を掛ける生成処理と、
前記待機時間の長さを定めるパラメタを記憶するパラメタ記憶処理と、
単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整するパラメタ調整処理と、
前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断する通信制御処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷テストを実施する情報処理装置及び負荷テスト実施方法に関する。
【背景技術】
【０００２】
システムやサーバ等の高負荷時の挙動を確認する方法の１つに、対象となるシステムやサーバ等に擬似的に負荷を掛ける、負荷テストと呼ばれる方法が、知られている。多くの場合、負荷テストは、負荷テストツールと呼ばれるソフトウェアを実行する情報処理装置（負荷テスト実施装置）を用いて実施される。【０００３】
負荷テスト実施装置は、例えば、テスト対象システムに、リクエストを送信し、テスト対象システムに負荷を掛ける。【０００４】
テスト対象システムは、負荷テスト実施装置から受け取ったリクエストを処理し、負荷テスト実施装置に応答する。【０００５】
テスト対象システムとして、例えば、オンラインショッピングサイトのサーバが、挙げられる。以下、オンラインショッピングサイトの本番運用時に、サーバにどのような負荷が掛かるかについて、説明する。【０００６】
オンラインショッピングサイトの顧客は、不特定であり、多数存在する。それぞれの顧客は、顧客の端末装置を操作し、オンラインショッピングサイトにアクセスする。顧客の端末装置は、アクセスにおいて、サーバにリクエストの送信し、リクエストに対するサーバからの応答の受信を繰り返す。顧客の端末装置がサーバに送信するリクエストは、例えば、商品の閲覧、商品の選択、カートの確認、商品送付先及びクレジットカード番号の入力である。顧客の端末装置は、送信したリクエスト対するサーバの応答（例えば、商品を説明するテキスト、商品の画像、又は動画）を受け取り、表示する。端末装置の顧客は、表示された商品の画面を確認したり、商品を選択するために考えたりした後、端末装置を操作する。その操作を基に端末装置は、再び、次のリクエストをサーバに送信する。顧客の端末装置は、リクエストの送信と応答の受信とを繰り返し、顧客の目的の商品の購入を達成する。顧客は、購入を達成すると、端末装置を操作して、オンラインショッピングのサイトの閲覧を終了する。【０００７】
オンラインショッピングサイトのように、不特定多数の顧客からリクエストを受け取るシステムにおいて、リクエストの到着間隔は、指数分布に従うことが、経験的に、知られている。そして、リクエストの到着間隔が指数分布に従うとき、リクエストの到着率（単位時間当たりリクエスト到着数）は、ポアソン分布に従うことが、知られている。【０００８】
特許文献１は、負荷テスト実施装置の一例を開示している。【０００９】
特許文献１が開示する負荷テスト実施装置において、負荷テスト実施装置のオペレータが、負荷テストの性能目標として、テスト対象システムが処理する単位時間当たりのリクエストの処理件数を、負荷テスト実施装置に入力する。負荷テスト実施装置は、負荷テスト実施の際、オペレータが入力した性能目標を満たすように各種パラメタを自動的に調整し、リクエストを送信する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６―３１１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本番運用時の負荷を正確に再現していない負荷テストの結果は、信頼できない。そのため、負荷テスト実施装置は、テスト対象システムの本番運用時における負荷の正確な再現が求められる。【００１２】
ここで、負荷テスト実施装置は、テスト対象システムの本番運用時の負荷を正確に再現するために、少なくとも、以下の２つの要件を満たすリクエストの送信が必要である。【００１３】
（１）単位時間当たりに送信されるリクエストの平均数が、所望の値である。【００１４】
（２）送信されるリクエストの時間間隔が、所定の分布に従う。【００１５】
負荷テスト実施装置が送信するリクエストが（２）の要件を満たすか否かは、負荷テストの結果の信頼性にとって、重要である。【００１６】
なぜなら、その理由は、次のとおりである。【００１７】
リクエスト処理性能が変化しない（時間的に等しい）テスト対象システムを想定する。そして、負荷テスト実施装置は、テスト対象システムに、単位時間当たり平均リクエスト送信数が等しくなるように、リクエストを送信する。ただし、負荷テスト実施装置は、リクエストの送信の時間間隔が一定で送信する場合と、一定でなく送信する場合とがあるとする。すると、負荷テスト実施装置は、リクエストを送信してから応答を受信するまでに必要な時間（応答時間）が、各場合で異なる。送信されるリクエストの時間間隔の分布は、テスト対象システムの負荷に影響するからである。【００１８】
一般に、応答時間は、リクエストの送信時間間隔が一定でない場合、リクエストの送信時間間隔が一定である場合と比べ、長くなる。【００１９】
これは、次のようなためである。【００２０】
リクエストが一定でない時間間隔で送信される場合、短いリクエストの到着間隔が、連続することがある。短いリクエストの到着間隔が続くと、テスト対象システムに多数のリクエストが到着するため、テスト対象システムは、次のリクエストを受け取るまでに受取済みのリクエストを処理できない。処理できないリクエストが発生すると、待ち行列が、発生するためである。【００２１】
従って、リクエストに対する応答時間を過小評価しないために、負荷テスト実施装置は、一定の時間間隔ではなく、所定の分布に従った時間間隔で、テスト対象システムに、リクエストを送信する必要がある。【００２２】
しかし、負荷テスト実施装置は、テスト対象システムにリクエストを送付する通信経路（例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ポート）の数に制限がある。【００２３】
そのため、特許文献1に記載の負荷テスト実施装置は、テスト対象システムの本番運用時の負荷を正確に再現しようとリクエストを送信する際、利用できる通信経路（ＴＣＰポート）の制約のため、適切な負荷を掛けることができない問題があった。【００２４】
本発明の目的は、上記問題点を解決し、テスト対象システムに、適切な負荷を掛けることができる情報処理装置及び負荷テスト実施方法を提供することにある。
【課題を解決するための手段】
【００２５】
上述した課題を解決する第一の発明の情報処理装置は、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間のいずれかであるテストシナリオを記憶するテスト記憶手段と、負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成する生成手段と、前記待機時間の長さを定めるパラメタを記憶するパラメタ記憶手段と、単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整するパラメタ調整手段と、前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断する通信制御手段とを含む。【００２６】
上述した課題を解決する第二の発明の負荷テスト実施方法は、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間かのいずれかであるテストシナリオを記憶し、負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成して、負荷を掛ける対象となるシステムに対して負荷を掛け、前記他意識時間の長さを定めるパラメタを記憶し、単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整し、前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断する。【００２７】
上述した課題を解決する第三の発明のプログラムは、リクエストを送信してから前記リクエストに対する応答を受信する処理を複数回含み、前記受信と送信との間の時間が、ＴＣＰ接続が切断される時間である待機時間、又は、ＴＣＰ接続が維持される時間である思考時間のいずれかであるテストシナリオを記憶するテスト記憶処理と、負荷を掛ける対象となるシステムに対して前記テストシナリオを実行して負荷を掛ける負荷発生手段を生成して、負荷を掛けるシステムに負荷を掛ける生成処理と、前記待機時間の長さを定めるパラメタを記憶するパラメタ記憶処理と、単位時間当たり所望の数のリクエストが前記システムに到達するように前記パラメタを調整するパラメタ調整処理と、前記負荷発生手段が実行中のテストシナリオに含まれる思考時間の間はＴＣＰ接続を維持し、待機時間の間はＴＣＰ接続を切断するよう制御する通信制御処理とをコンピュータに実行させる。
【発明の効果】
【００２８】
本発明によれば、テスト対象システムの本番運用時の負荷としてリクエストを送信する際、利用できるＴＣＰポートの数の制約を受けづらく、適切な負荷を掛けることができる情報処理装置及び負荷テスト実施方法を提供できる。
【図面の簡単な説明】
【００２９】
【図１】図１は、本発明のおける第１の実施形態に係る負荷テスト実施装置を含むシステムのネットワーク構成の一例を示すブロック図である。
【図２】図２は、仮想ユーザの振る舞いを説明するための図である。
【図３】図３は、指数分布の確率密度関数の例を説明するための図である。
【図４】図４は、負荷テスト実施装置がパラメタの初期値を決定する動作の一例を示すフローチャートである。
【図５】図５は、負荷テスト実施装置が負荷テストを実施しながらパラメタを調整する動作の一例を示すフローチャートである。
【図６】図６は、第２の実施形態に係る負荷テスト実施装置を含むネットワーク構成の一例を示すブロック図である。
【図７】図７は、第２の実施形態に係る負荷テスト実施装置の負荷テストを実行しながらパラメタを調整する動作の一例を示すフローチャートである。
【図８】図８は、第３の実施形態に係る負荷テスト実施装置を含むネットワーク構成の一例を示すブロック図である。
【図９】図９は、第３の実施形態に係る負荷テスト実施装置の動作の一例を示すフローチャートである。
【図１０】図１０は、第４の実施形態に係る負荷テスト実施装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００３０】
次に、本発明の実施形態について図面を参照して説明する。
【００３１】
なお、各図面は、本発明の実施形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明は、省略する場合がある。
【００３２】
以下、本発明の情報処理装置の実施形態の一例として、負荷テスト実施装置を用いて説明する。ただし、これは、本実施形態の情報処理装置を、負荷テスト実施装置に限定するものではない。
【００３３】
また、本発明の情報処理装置が使用する通信路の一例として、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いて説明する。ただし、これは、本実施形態の情報処理装置が使用する通信路を、ＴＣＰに限定するものではない。例えば、本実施形態の情報処理装置は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）又はＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を用いても良く、ファイバーチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）を用いても良い。
【００３４】
＝第１の実施形態＝
本発明の第１の実施形態に係る負荷テスト実施装置１０について、図面を参照して詳細に説明する。
【００３５】
＜構成の説明＞
図１は、本発明のおける第１の実施形態に係る負荷テスト実施装置１０を含むシステムのネットワーク構成の一例を示すブロック図である。
【００３６】
本実施形態の負荷テスト実施装置１０は、ネットワーク２０を介して、テスト対象システム３０と通信する。そして、負荷テスト実施装置１０は、テスト対象システム３０に対して、負荷テストを実施する。
【００３７】
「負荷テスト」とは、テスト対象システム３０に、所定の期間にわたり、負荷を掛けたときの、テスト対象システム３０の性能や挙動の正しさを検証するテストである。
【００３８】
負荷テスト実施装置１０は、テスト対象システム３０との間に通信路（ＴＣＰ接続）を確立し、テスト対象システム３０に対してリクエストを送信し、所定の負荷を掛ける。負荷テスト実施装置１０については、後ほど、改めて説明する。
【００３９】
テスト対象システム３０は、負荷テスト実施装置１０の負荷テストの対象となるシステムであり、例えば、サーバ又は情報処理システムである。テスト対象システム３０は、負荷テスト実施装置１０から受け取ったリクエストを処理し、負荷テスト実施装置１０に応答を返す。
【００４０】
負荷テスト実施装置１０が送信するリクエストの送信時間間隔及び単位時間当たり平均送信数（リクエスト送信率）は、テスト対象システム３０から見ると、リクエストの到着時間間隔及び単位時間あたり平均到着数（リクエスト到着率）となる。
【００４１】
そのため、これ以降、リクエストの送信間隔と到着間隔を総称して「リクエスト間隔」と呼ぶ。また、リクエスト送信率及びリクエスト到着率を総称して「リクエスト率」と呼ぶ。なお、リクエスト率（リクエスト送信率及びリクエスト到着率）の値は、単位時間当たりのリクエスト処理数を表すスループットの値と等しくなる。
【００４２】
ネットワーク２０は、負荷テスト実施装置１０とテスト対象システム３０とを接続する通信経路である。負荷テスト実施装置１０は、テスト対象システム３０に負荷を加えるため、ネットワーク２０に通信路（ＴＣＰ）を確保する。
【００４３】
次に、本実施形態の負荷テスト実施装置１０の構成について説明する。
【００４４】
負荷テスト実施装置１０は、記憶部１００と、処理部２００と、通信部３００とを含む。負荷テスト実施装置１０は、これらの構成の機能を実現するコンピュータを用いて構成されても良い。
【００４５】
記憶部１００は、テスト記憶部１１０と、パラメタ記憶部１２０とを含む。
【００４６】
テスト記憶部１１０は、テストシナリオを記憶している。
【００４７】
ここで、「テストシナリオ」とは、負荷テスト実施装置１０がテスト対象システム３０にリクエストを送信する、つまり、負荷を与えるためのシナリオである。本実施形態のテストシナリオは、特に制限はない。例えば、テストシナリオは、リクエストを送信するスクリプトでも良い。そして、テストシナリオは、リクエストを送信してリクエストに対する応答を受信するまでの処理を、１回又は複数回含む。テストシナリオの具体的内容は、予め、テスト記憶部１１０に記憶される。例えば、テスト対象システム３０の典型的な処理内容を考慮し、負荷テスト実施装置１０のオペレータが、テストシナリオを決定し、テスト記憶部１１０に保存する。
【００４８】
パラメタ記憶部１２０は、負荷テスト実施装置１０が負荷テストを実施する際に必要なパラメタを記憶する。パラメタ記憶部１２０が記憶するパラメタは、特に限定はない。例えば、このパラメタは、「仮想ユーザ数」、「思考時間」、「待機時間」、「想定応答時間」である。以下、ここの記載したパラメタを用いて説明する。そのため、ここに記載したパラメタの定義について説明する。
【００４９】
第一のパラメタ「仮想ユーザ数」とは、負荷テスト実施装置１０が負荷テストにおいて、幾つの仮想ユーザのテストシナリオを並行して実行するかを表すパラメタである。
【００５０】
ここで、「仮想ユーザ」とは、テスト対象システム３０に対してリクエストを送信するための機能である。仮想ユーザは、後述する生成部２３０を用いて生成される。
【００５１】
本実施形態に係る負荷テスト実施装置１０は、複数の仮想ユーザに基づくテスト対象システム３０へのアクセスを模擬する装置である。つまり、仮想ユーザ数は、負荷テスト実施装置１０が模擬する仮想的なユーザの人数（より具体的には、例えば、テスト対象システム３０にアクセスする端末装置の台数）を意味する。
【００５２】
負荷テスト実施装置１０が複数の仮想ユーザの並行動作を模擬する方法は、特に限定されない。模擬の方法は、例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）レベルのスレッド又はプロセスを仮想ユーザ数生成し、各スレッド又はプロセスにおいてテストシナリオを実行させる方法がある。
【００５３】
なお、「仮想ユーザ」は、特許請求の範囲に記載した「負荷発生手段」に相当する。
【００５４】
図２は、本実施形態の負荷テスト実施装置１０の仮想ユーザの振る舞いを説明するための図である。
【００５５】
仮想ユーザは、テスト対象システム３０にリクエストを送信する前に、まず、通信路（例えば、ＴＣＰプロトコルに従い、通信路（ＴＣＰ接続）を確立する（Ｓ５１）。この確立を基に、仮想ユーザが動作する負荷テスト実施装置１０とテスト対象システム３０との間に、リクエスト及びレスポンスをやりとりするための論理的な通信路（ＴＣＰ接続）が、用意される。
【００５６】
ＴＣＰ接続の確立後、仮想ユーザは、テストシナリオに規定されたリクエストを送信する。
【００５７】
まず、仮想ユーザは、第１のリクエストを送信し（Ｓ５２）、第１のリクエストに対する応答を受信する（Ｓ５３）。
【００５８】
次に、仮想ユーザは、第２のリクエストを送信し（Ｓ５５）、第２のリクエストに対する応答を受信する（Ｓ５６）。
【００５９】
仮想ユーザは、これらの動作を繰り返す。そして、仮想ユーザは、テストシナリオに規定された既定のリクエスト数（Ｎ）に対して、第Ｎのリクエストに対する応答を受信すると（Ｓ５８）、ＴＣＰ接続を切断する（Ｓ５９）。
【００６０】
なお、仮想ユーザは、リクエストの応答を待たずに、次のリクエストを送付しても良い。その場合、仮想ユーザは、第１から第Ｎまでのすべてのリクエストに対する応答を受信後、ＴＣＰ接続を切断する。ただし、以下の説明では、説明の便宜のため、仮想ユーザは、リクエストの応答を待ってから、次のリクエストを送付するとする。
【００６１】
仮想ユーザは、ＴＣＰ接続を確立（Ｓ５１）してからＴＣＰ接続を切断する（Ｓ５９）までで、１ユーザ分の処理を完了する。
【００６２】
そして、仮想ユーザは、第Ｎのリクエストに対する受信を終えてから所定時間休止した後（Ｓ６０）、再度テストシナリオを実行する。
【００６３】
仮想ユーザは、既定の回数又は既定の時間、テストシナリオの実行を繰り返す。
【００６４】
仮想ユーザがテストシナリオの実行を繰り返すのは、仮想ユーザが、テスト対象システム３０に対して、所定期間に渡って負荷を掛け続けるためである。
【００６５】
なお、このように一定数の仮想ユーザが同じようなリクエスト処理を繰り返す仕組みは、「閉じたモデル（closed model）」と呼ばれる。
【００６６】
仮想ユーザがリクエストを送信してからリクエストに対する応答を受信するまでの時間は、「応答時間」と呼ばれる。
【００６７】
応答時間は、リクエストの処理内容や、サーバやネットワーク、ディスクといった装置の負荷に従い伸縮する。そのため、応答時間は、負荷テスト実施装置１０から制御できない時間である。
【００６８】
閉じたモデル（closed model）では、テスト対象システム３０の負荷が高まり、応答時間が伸びると、仮想ユーザが次のリクエストを送信するまでの時間が遅延するという問題がある。つまり、閉じたモデルには、テスト対象システム３０の負荷が高くなると、仮想ユーザが生成する負荷（単位時間あたり送信するリクエスト数）が低下するという問題がある。
【００６９】
第二のパラメタ「思考時間」は、仮想ユーザが、あるリクエストに対する応答を受け取ってから次のリクエストを送信するまでの時間間隔（Ｓ５４、Ｓ５７）を規定するパラメタである。思考時間の間、ＴＣＰ接続は、維持されている。
【００７０】
後述するように、負荷テスト実施装置１０は、乱数を用いて、思考時間を決定する。思考時間の平均値は、負荷テスト実施装置１０のオペレータが、パラメタとして、設定可能である。
【００７１】
第三のパラメタ「待機時間」は、仮想ユーザがテストシナリオの最後のリクエストに対する応答を受け取ってＴＣＰ接続を切断してから、再びテストシナリオを実行してＴＣＰ接続を確立し、最初のリクエストを送信するまでの時間間隔（Ｓ６０）を規定するパラメタである。あるいは、「待機時間」は、仮想ユーザがＴＣＰ接続を切断してから、再びテストシナリオを実行してＴＣＰ接続の確立を開始するまでの時間間隔を規定するパラメタである。待機時間の間、ＴＣＰ接続は、切断されている。
【００７２】
思考時間と待機時間とは、ＴＣＰ接続の有無という点で、異なる。
【００７３】
前述の特許文献１が開示する負荷テスト実施装置及び本発明に関連する負荷テストツールは、思考時間と待機時間とを区別しない。
【００７４】
一方、本実施形態に係る負荷テスト実施装置１０は、思考時間と待機時間とを用いて、ＴＣＰポートの数の制約を受けにくい負荷テストを実施する。
【００７５】
思考時間と同様、負荷テスト実施装置１０は、乱数を用いて、待機時間を決定する。待機時間の平均値は、負荷テスト実施装置１０のオペレータが、パラメタとして、設定可能である。待機時間の詳細に関しては、後述する。
【００７６】
「待機時間」の長さを定めるパラメタは、特許請求の範囲に記載した「パラメタ」に相当する。
【００７７】
第四のパラメタ「想定応答時間」は、初期値として、「想定最小応答時間（ＲＴMIN）」の値が設定される。そして、以降、「想定応答時間」は、応答時間取得部２４０が取得する「平均応答時間（ＲＴAVE）」の値に更新されるパラメタである。
【００７８】
「平均応答時間（ＲＴAVE）」の定義については、後述する。
【００７９】
図１を用いた説明に戻る。
【００８０】
処理部２００は、パラメタ入力受付部２１０と、初期パラメタ算出部２２０と、生成部２３０と、応答時間取得部２４０と、パラメタ調整部２５０と、通信制御部２６０とを含む。
【００８１】
パラメタ入力受付部２１０は、負荷テストを実施するための初期パラメタを算出するためのパラメタを受け付ける。パラメタ入力受付部２１０は、例えば、図示しない入力機器を含み、オペレータの入力操作を基にパラメタを受け付けても良い。あるいは、パラメタ入力受付部２１０は、オペレータが操作する図示しない外部装置からパラメタを受け取っても良い。以下、この動作を総称して、「パラメタ入力受付部２１０は、オペレータからパラメタを受け付ける」又は「オペレータがパラメタを入力する」とも言う。
【００８２】
初期パラメタ算出部２２０は、パラメタ入力受付部２１０が受け付けたパラメタを基に、負荷テストを実施するための初期パラメタを算出する。
【００８３】
生成部２３０は、仮想ユーザを生成し、仮想ユーザにテストシナリオを実行させる。既に説明したとおり、仮想ユーザは、テスト対象システム３０にリクエストを送信し、負荷を掛ける。
【００８４】
また、既に説明したとおり、生成部２３０が複数の仮想ユーザを並行して動作させる方法は、特に制限はない。例えば、生成部２３０が使用する方法として、ＯＳレベルのスレッド又はプロセスを仮想ユーザ数の分だけ生成し、スレッド又はプロセスでテストシナリオを実行させる方法が挙げられる。
【００８５】
応答時間取得部２４０は、所定の期間内に負荷テスト実施装置１０が送信した全てのリクエストに対する応答時間の平均値である平均応答時間（ＲＴAVE）を取得する。前述したように、応答時間は、オペレータから制御できない観測値である。従って、平均応答時間（ＲＴAVE）は、オペレータが制御できない値である。応答時間取得部２４０は、平均応答時間（ＲＴAVE）を取得すると、パラメタ記憶部１２０が記憶する「想定応答時間」の値を更新する。
【００８６】
パラメタ調整部２５０は、応答時間取得部２４０が取得した平均応答時間（ＲＴAVE）に基づき、新たな待機時間を算出する。パラメタ調整部２５０の動作の詳細は、後述する。
【００８７】
通信制御部２６０は、仮想ユーザがテストシナリオを実行している間、すなわち、応答時間及び思考時間の間、ＴＣＰ接続を維持するよう通信部３００を制御する。また、通信制御部２６０は、仮想ユーザがＴＣＰを切断してから再びＴＣＰを接続するまでの時間、すなわち、待機時間の間、ＴＣＰ接続を切断するよう通信部３００を制御する。
【００８８】
通信部３００は、通信制御部２６０の制御を基に、負荷テスト実施装置１０とテスト対象システム３０との間に、ＴＣＰ／ＩＰプロトコルにしたがってＴＣＰ接続を確立及び切断する。負荷テスト実施装置１０が利用できるＴＣＰポートの数は、ＴＣＰ／ＩＰプロトコルの制約上、最大で６５５３６個である。さらに、ＴＣＰポートの一部は、特定用途のために使用される。そのため、負荷テスト実施装置１０が使用可能なＴＣＰポートの数は、最大値より少ない。このように、負荷テスト実施装置１０が利用できるＴＣＰポート数は、制限がある。
【００８９】
＜ハードウェアの構成＞
負荷テスト実施装置１０の記憶部１００は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を用いて実現できる。
【００９０】
負荷テスト実施装置１０の処理部２００が含む各手段は、負荷テスト実施装置１０に含まれるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の所定のプログラム又はコードの実行に基づき実現できる。
【００９１】
負荷テスト実施装置１０の通信部３００は、例えば、負荷テスト実施装置１０のＣＰＵが実行するＯＳが提供する機能を用いて、ＣＰＵが実行するアプリケーションプログラムがネットワークインターフェイスカード（ＮＩＣ）を制御して実現できる。
【００９２】
＜動作の説明＞
次に、第１の実施形態に係る負荷テスト実施装置１０の動作について説明する。
【００９３】
以下、まず、思考時間と待機時間とを、それぞれ詳細に説明する。
【００９４】
次に、負荷テスト実施装置１０が実施する負荷テストの概要を説明し、各パラメタ間の関係を詳細に説明する。
【００９５】
続いて、負荷テスト実施装置１０がパラメタの初期値を決定する動作と、負荷テスト実施装置１０が負荷テストを実行しながらパラメタを調整する動作とを、それぞれ詳細に説明する。
【００９６】
まず、思考時間の詳細を説明する。
【００９７】
上述したように、思考時間は、仮想ユーザが、あるリクエストに対する応答を受け取ってから次のリクエストを送信するまでの時間間隔である。
【００９８】
思考時間は、「ユーザ（端末装置）がリクエストの選択に掛かる時間」を模擬した時間である。
【００９９】
例えば、テスト対象システム３０がオンラインショッピングサイトである場合を考える。
【０１００】
例えば、オンラインショッピングサイトの顧客は、操作する端末装置が、リクエスト対する応答（例えば、商品を説明するテキスト、商品の画像又は動画）をサーバから受け取り、表示した商品の画面を確認したり、商品を選択するために考えたり、商品送付先又はクレジットカード番号を入力したりする。顧客は、リクエストに対する応答を受け取ってからこれらの時間が経過した後、端末装置を操作して、次のリクエストをサーバに送信する。
【０１０１】
思考時間は、指数分布やパレート分布といった確率分布に従う乱数で決定される値が好ましい。これは、負荷テスト実施装置１０が、テスト対象システム３０の本番運用時にリクエストの到着間隔が指数分布に従うという現象を、模擬するためである。リクエストの到着間隔は、応答時間と思考時間との和で表される。しかし、応答時間は、負荷テスト実施装置１０のオペレータが制御できない。そのため、生成部２３０は、思考時間を、乱数を用いて決定する。なお、パラメタ記憶部１２０は、思考時間の平均値を記憶する。
【０１０２】
図３は、指数分布の確率密度関数の例を説明するための図である。
【０１０３】
図３において、横軸は、リクエストの到着間隔を表し、縦軸は、確率を表す。
【０１０４】
指数分布は、パラメタ（λ）を持つ確率分布である。リクエストの到着間隔の期待値（平均値）は、「１／λ」となる。リクエストの到着間隔が「１／λ」のとき、その逆数（λ）は、毎秒の到着リクエスト数（リクエスト到着率）を表す。例えば、平均リクエスト到着間隔が１／２０（＝０．０５）秒のとき、平均リクエスト到着率は、２０[リクエスト／秒]である。
【０１０５】
到着間隔が一定（定数）でなく、図３のような確率分布に従う場合、到着間隔が短いときと長いときとが、混在する。そして、到着間隔が短いとき、サーバに多数のリクエストが、到着する。そのため、待ち行列が発生し、平均応答時間（ＲＴAVE）が伸びる可能性が高まる。一般に、平均到着間隔が同一であっても、到着間隔が図３のように変動する場合、到着間隔が一定の場合より、平均応答時間（ＲＴAVE）は、長くなる。平均応答時間（ＲＴAVE）を過小評価しないためにも、負荷テストを実施する際に、負荷テスト実施装置１０は、リクエストの到着間隔の変動（以下、「負荷の変動」と呼ぶ）の維持が重要である。
【０１０６】
次に、待機時間の詳細を説明する。
【０１０７】
上述したように、待機時間は、仮想ユーザがテストシナリオの最後のリクエストに対する応答を受け取ってＴＣＰ接続を切断してから再びテストシナリオを実行してＴＣＰ接続を確立し、最初のリクエストを送信するまでの時間間隔である。
【０１０８】
本発明が前提とする閉じたモデル（closed model）では、便宜上、１つの仮想ユーザは、テストシナリオの実行の繰り返しを基に、複数のユーザの挙動を模擬する。
【０１０９】
待機時間は、「あるユーザのリクエストに対する処理を終えてから、次のユーザのリクエストが到着するまでの時間」を模擬した時間である。大雑把にいえば、待機時間は、リクエストの到着率ではなく、ユーザがオンラインショッピングサイトのＷｅｂサイトに訪れる割合（ユーザ到着率と呼べるようなもの）に対応する。思考時間と同様、生成部２３０は、乱数を用いて待機時間を決定する。パラメタ記憶部１２０は、待機時間の平均値を記憶する。
【０１１０】
＜各パラメタ間の関係の説明＞
次に、負荷テスト実施装置１０が負荷テストを実施する際の、各パラメタの関係を詳細に説明する。
【０１１１】
仮想ユーザ数を「Ｗ」、待機時間を「ＳＴ」、想定応答時間を「ＲＴ」、思考時間を「ＴＴ」、１つのテストシナリオに含まれるリクエスト数を「Ｎ」、ＴＣＰ接続関連その他に掛かるオーバーヘッドを「α」とする。
【０１１２】
１つの仮想ユーザが１ユーザ分の処理を完了するのに要する時間は、下記[式１]で表される（図２を参照）。
【０１１３】
[式１]  完了に要する時間＝ＳＴ＋Ｎ×ＲＴ＋（Ｎ−１）×ＴＴ＋α
［式１］において、思考時間（ＴＴ）の係数が「（Ｎ−１）」となる理由は、図２を参照すると明らかなとおり、リクエスト数（Ｎ）に対して、リクエストとリクエストの間は「（Ｎ−１）個」となるためである。
【０１１４】
１つの仮想ユーザが単位時間当たり（例えば毎秒）に実行するテストシナリオの回数は、[式１]の逆数となる。１つの仮想ユーザが単位時間当たりに送信するリクエスト数は、[式１]の逆数に、１つのテストシナリオに含まれるリクエスト数（Ｎ）を掛ければよい。
【０１１５】
ここで、このような仮想ユーザが「Ｗ人」いるとき、負荷テスト実施装置１０が、単位時間当たりにテスト対象システム３０に対して送信するリクエスト数（Ｍ）は、下記[式２]を用いて算出される。
【０１１６】
[式２]  Ｍ＝Ｗ×Ｎ／（ＳＴ＋Ｎ×ＲＴ＋（Ｎ−１）×ＴＴ＋α）
ここで、簡単のため、思考時間（ＴＴ）と待機時間（ＳＴ）との区別をなくし、「ＳＴ＝ＴＴ」する。すると、[式２]は、[式３]のように整理できる。なお、オーバーヘッドの「α」は他のパラメタと比べて十分に小さいため、無視する。
【０１１７】
[式３]  Ｍ＝Ｗ／（ＲＴ＋ＴＴ）
[式３]の右辺の各変数について整理して考える。
【０１１８】
思考時間（ＴＴ）と仮想ユーザ数（Ｗ）とは、負荷テスト実施装置１０のオペレータが制御可能なパラメタである。応答時間は、オペレータが制御不可能な観測値である。そして、あるリクエスト到着率（Ｍ）を実現する仮想ユーザ数（Ｗ）と思考時間（ＴＴ）との組合せは、無数に存在する。
【０１１９】
[式３]を参照すると明らかなように、リクエスト到着率（Ｍ）を増やすためには、仮想ユーザ数（Ｗ）を増やすか、思考時間（ＴＴ）を減らす必要がある。
【０１２０】
しかし、思考時間（ＴＴ）が小さいと、以下のような不都合が発生する。
【０１２１】
例えば、仮想ユーザ数を「１」（Ｗ＝１）で、リクエスト到着率を「１００」（Ｍ＝１００）にしたいとする。このとき、負荷テスト実施装置１０は、思考時間（ＴＴ）を０．０１に近い値にする必要がある。そのため、思考時間（ＴＴ）は、例えば、期待値０．０１の指数分布に基づく乱数で決定される。
【０１２２】
しかし、負荷テストの結果、平均応答時間（ＲＴAVE）は、１秒だったとする。
【０１２３】
すると、リクエストの送信間隔は、１．０１秒（リクエスト到着率（Ｍ）は、１以下）となる。
【０１２４】
その結果、リクエスト到着率は、所望のリクエスト到着率である「１００」から大きく低下する。そして、さらに、思考時間（ＴＴ）の乱数を使って再現した「負荷の変動」の効果が、ほとんどなくなる。
【０１２５】
このように、「負荷の変動」を再現するためには、思考時間（ＴＴ）は、想定応答時間（ＲＴ）と比較して、ある程度の大きさを有する必要がある。
【０１２６】
なお、思考時間（ＴＴ）が小さすぎる場合、「負荷の変動」を再現できないことに加え、次のような問題が、発生する。
【０１２７】
負荷テスト実施装置１０のＯＳは、複数の仮想ユーザの休止のタイミングを管理する必要がある。
【０１２８】
ＯＳのプロセス及びスレッドの状態の切替えは、一般的に、ティック（ｔｉｃｋ）と呼ばれる時間の単位で行われる。一般的なＯＳにおいて、ティックは、１０ミリ秒から１００マイクロ秒程度である。
【０１２９】
ティックが１０ミリ秒のＯＳでは、１ミリ秒休止したい場合でも、実際の休止時間は、１０ミリ秒以上となる。その結果、パラメタとして設定した思考時間（ＴＴ）と実際の思考時間とは、合致しない。想定する思考時間（ＴＴ）の分布にもよるが、思考時間（ＴＴ）の期待値は、ティックの値の少なくとも１０倍程度が望ましい。
【０１３０】
思考時間（ＴＴ）が大きい場合、あるリクエスト到着率（Ｍ）を維持するために、仮想ユーザ数（Ｗ）は、大きい値である必要がある（[式３]）。
【０１３１】
このように、負荷の変動を維持しながら、テスト対象システム３０に所望の負荷を掛け続けるため、仮想ユーザ数（Ｗ）と思考時間（ＴＴ）とは、共に、ある程度の大きい値が望ましい。仮想ユーザ数（Ｗ）と思考時間（ＴＴ）とが共に大きいと、多数のタスク又はスレッドは、ＴＣＰ接続を維持し続ける。
【０１３２】
しかし、前述したように、負荷テスト実施装置１０が利用できるＴＣＰポートの数には、ＴＣＰ／ＩＰプロトコルの制限が、ある。そのため、仮想ユーザ数（Ｗ）と思考時間（ＴＴ）とを共に大きくしようとしても、負荷テスト実施装置１０は、ＴＣＰポート数の制限を受ける。
【０１３３】
前述した特許文献１が開示する負荷テスト実施装置や本発明に関連する負荷テストツールは、思考時間と待機時間とを区別して考えない。
【０１３４】
一方、本実施形態に係る負荷テスト実施装置１０は、ＴＣＰ接続が維持されている時間である思考時間と、ＴＣＰ接続が切断されている時間である待機時間との違いに着目する。
【０１３５】
前述した負荷の変動を維持しつつ、単位時間当たり同じ単位量のリクエストを送信する場合、負荷テスト実施装置１０は、思考時間を負荷変動の効果が消滅しない程度に短くし、待機時間を長くする。すると、ＴＣＰ接続時間は、短縮される。そのため、負荷テスト実施装置１０は、接続の維持に必要なＴＣＰポートの数を節約できる。
【０１３６】
また、負荷テスト実施装置１０は、待機時間を乱数で決定する。そのため、負荷テスト実施装置１０は、仮想ユーザが到着する時間間隔の変動を再現できる。その結果、負荷テスト実施装置１０は、特許文献１に記載の負荷テスト装置より正確に、負荷の変動を再現できる。
【０１３７】
次に、本実施形態に係る負荷テスト実施装置１０がパラメタの初期値を決定する動作について、詳細に説明する。
【０１３８】
＜パラメタの初期値を決定する動作の説明＞
図４は、負荷テスト実施装置１０がパラメタの初期値を決定する動作の一例を示すフローチャート図である。
【０１３９】
パラメタ入力受付部２１０は、オペレータから、パラメタを受け付ける。ここで、パラメタは、特に制限はない。以下、一例として、受け付けるパラメタは、「想定スループット（Ｍ）」、「最小思考時間（ＴＴMIN）」、「最小待機時間（ＳＴMIN）」、「想定最大応答時間（ＲＴMAX）」、「想定最小応答時間（ＲＴMIN）」、「テストシナリオに含まれるリクエスト数（Ｎ）」とする(Ｓ１１)。
【０１４０】
次に、初期パラメタ算出部２２０は、パラメタ入力受付部２１０が受け付けたパラメタに基づき、「仮想ユーザ数（Ｗ）」と「初期待機時間（ＴＴINI）」とを算出する（Ｓ１２、Ｓ１３）。
【０１４１】
パラメタ入力受付部２１０と初期パラメタ算出部２２０は、上記パラメタを、パラメタ記憶部１２０に記憶する（Ｓ１４）。
以下、それぞれの動作を、詳細に説明する。
【０１４２】
まず、「Ｓ１１」のパラメタ入力受付部２１０がオペレータから受け付けるパラメタの詳細を説明する。
【０１４３】
「想定スループット（Ｍ）」は、負荷テスト実施装置１０のオペレータが、テスト対象システム３０に対して掛けたい所望の負荷を表すパラメタである。想定スループット（Ｍ）は、単位時間当たりのリクエスト数で表される（例えば、１００[リクエスト／秒]）。
【０１４４】
「最小思考時間（ＴＴMIN）」は、オペレータが許容する最小の思考時間を表すパラメタである。上述したように、思考時間（ＴＴ）は、負荷の変動を維持するために応答時間に対してある程度の大きさでの設定が望ましい。従って、オペレータは、想定される想定応答時間（ＲＴ）に対してある程度の大きさを持つ値を、最小思考時間（ＴＴMIN）として設定する。
【０１４５】
本実施形態に係る負荷テスト実施装置１０では、パラメタ記憶部１２０が記憶する思考時間（ＴＴ）の値は、最小思考時間（ＴＴMIN）の値に設定されたまま、変更されない。
【０１４６】
「最小待機時間（ＳＴMIN）」は、オペレータが許容する最小の待機時間（ＳＴ）である。思考時間（ＴＴ）と同様の理由から、待機時間（ＳＴ）の値も、負荷の変動を維持するために、応答時間に対して、ある程度の大きさを持つ値が望ましい。従って、オペレータは、想定される想定応答時間（ＲＴ）に対して、ある程度大きい値を、最小待機時間（ＳＴMIN）として、設定する。
【０１４７】
「想定最大応答時間（ＲＴMAX）」と「想定最小応答時間（ＲＴMIN）」は、テスト対象システム３０が発揮する応答性能に関して、オペレータが事前に見積もった平均応答時間（ＲＴAVE）の許容最大値と、観測し得る想定応答時間（ＲＴ）の最小値を表すパラメタである。
【０１４８】
例えば、１００[リクエスト／秒]の想定スループットに対して、テスト対象システム３０の平均応答時間（ＲＴAVE）を４秒以下にする場合、オペレータは、想定最大応答時間（ＲＴMAX）を、「４秒」とする。想定最小応答時間（ＲＴMIN）は、事前に想定できる値がない場合、「０秒」と設定できる。
【０１４９】
「テストシナリオに含まれるリクエスト数（Ｎ）」は、１つのテストシナリオ中に含まれるリクエストの個数である。「テストシナリオに含まれるリクエスト数（Ｎ）」は、パラメタ入力受付部２１０がオペレータから受け付けるパラメタでもよい。あるいは、「テストシナリオに含まれるリクエスト数（Ｎ）」は、テストシナリオの中に、予め、規定されてもよい。
【０１５０】
次に、Ｓ１２の、初期パラメタ算出部２２０が「仮想ユーザ数（Ｗ）」を算出する動作について、詳細に説明する。
【０１５１】
「仮想ユーザ数（Ｗ）」は、[式２]を変形した[式４]を用いて計算される。ただし、オーバーヘッドの「α」は、他のパラメタと比べて十分に小さいとして、無視した。
【０１５２】
[式４]  Ｗ＝Ｍ×｛ＳＴ＋Ｎ×ＲＴ＋（Ｎ−１）×ＴＴ｝／Ｎ
例えば、パラメタ入力受付部２１０が受け付けたパラメタが、「想定スループット（Ｍ）＝１００」、「想定最大応答時間（ＲＴMAX）＝４」、「想定最小応答時間（ＲＴMIN）＝０」、「最小思考時間（ＴＴMIN）＝５」、「最小待機時間（ＳＴMIN）＝５」、「テストシナリオに含まれるリクエスト数（Ｎ）＝５」とする。
【０１５３】
「仮想ユーザ数（Ｗ）」を算出する際に、初期パラメタ算出部２２０は、応答時間として想定最大応答時間（ＲＴMAX）を用いる。上記の例では、仮想ユーザ数（Ｗ）は、「Ｗ＝１００×｛５＋５×４＋（５−１）×５｝／５＝９００」と計算される。つまり、仮想ユーザを「９００個」用意すれば、例え、平均応答時間（ＲＴAVE）が想定する最大値の「４秒」まで伸びても、負荷テスト実施装置１０は、最低限の待機時間（ＳＴMIN）及び思考時間（ＴＴMIN）を確保しつつ、所望のリクエスト（Ｍ）を送信できる。
【０１５４】
本実施形態に係る負荷テスト実施装置１０は、パラメタ記憶部１２０が記憶する仮想ユーザ数（Ｗ）の値を、一度設定すると、以降変更しない。
【０１５５】
次に、Ｓ１３の、初期パラメタ算出部２２０が「初期待機時間（ＳＴINI）」を算出する動作について、詳細に説明する。
【０１５６】
[式２]を変形すると、以下の[式５]が得られる。ただし、オーバーヘッドの「α」は、他のパラメタと比べて十分に小さいとして、無視した。
【０１５７】
[式５]  ＳＴ＋Ｎ×ＲＴ＝Ｗ×Ｎ／Ｍ−（Ｎ−１）×ＴＴ＝定数
上述したように、「仮想ユーザ数（Ｗ）」の値は、一度算出されると、以降変更されない。また、「想定スループット（Ｍ）」の値及び「最小思考時間（ＴＴMIN）」の値も、パラメタ入力受付部２１０が決定した値から、変更されない。従って、上記[式５]の右辺は、定数となる。上述の例では、上記[式５]の右辺は、「Ｗ×Ｎ／Ｍ−（Ｎ−１）×ＴＴ＝２５」となる。
【０１５８】
負荷パラメタのうち負荷テストを実施する際に変更されるパラメタは、待機時間（ＳＴ）である。
【０１５９】
初期パラメタ算出部２２０は、「ＳＴ＋Ｎ×ＲＴ＝定数（上述の例の場合「２５」）」となるように、待機時間（ＳＴ）を調整すれば、負荷テストを実施する際に、所望の負荷（スループット（Ｍ））を得られる。上述の例では、負荷は、「Ｍ＝１００[リクエスト／秒]」となる。
【０１６０】
仮想ユーザ数（Ｗ）の値は、想定最大応答時間（ＲＴMAX）を用いて算出された。そのため、実際の平均応答時間（ＲＴAVE）が、想定最大応答時間（ＲＴMAX）よりも短いた場合、必要数以上のリクエストが、送信される。
【０１６１】
テスト対象システム３０は、想定以上の負荷を与えられると、動作が不安定となる場合がある。最悪の場合、テスト対象システム３０は、停止する。停止した場合、負荷テストを継続するためにテスト対象システム３０の再起動が必要となる。その結果、テストの実施効率が低下する問題が、発生する。
【０１６２】
この問題を避けるため、「初期待機時間（ＳＴINI）」を算出する際、初期パラメタ算出部２２０は、想定応答時間（ＲＴ）を想定最小応答時間（ＲＴMIN）と仮定し、初期待機時間（ＳＴINI）を、その分だけ長く設定する。
【０１６３】
例えば、今回の例では、想定最小応答時間（ＲＴMIN）が「０[秒]」である。そのため、[式５]を基に、初期待機時間（ＳＴINI）は、「２５[秒]」となる。
【０１６４】
次に、（Ｓ１４）について、詳細に説明する。
【０１６５】
パラメタ入力受付部２１０は、「最小思考時間（ＴＴMIN）」の値を、パラメタ記憶部１２０に、「思考時間（ＴＴ）」として、記憶する。同様に、パラメタ入力受付部２１０は、「仮想ユーザ数（Ｗ）」の値を、パラメタ記憶部１２０に記憶する。パラメタ入力受付部２１０は、「初期待機時間（ＳＴINI）」の値を、パラメタ記憶部１２０に、「待機時間（ＳＴ）」として、記憶する。
【０１６６】
また、パラメタ入力受付部２１０は、「想定最小応答時間（ＲＴMIN）」の値を、パラメタ記憶部１２０に、「想定応答時間（ＲＴ）」の初期値として、記憶する。
【０１６７】
例えば、上記の例では、パラメタ記憶部１２０が記憶する「仮想ユーザ数（Ｗ）」、「思考時間（ＴＴ）」、「待機時間（ＳＴ）」、「想定応答時間（ＲＴ）」の初期値は、それぞれ、「９００人」、「５秒」、「２５秒」、「０秒」と記憶される。
【０１６８】
＜負荷テストを実施しながらパラメタを調整する動作の説明＞
図５は、負荷テスト実施装置１０が負荷テストを実施しながらパラメタを調整する動作の一例を示すフローチャートである。
【０１６９】
なお、説明に用いるパラメタは、図４と同様とする。
【０１７０】
前述した処理を基に、パラメタ記憶部１２０に、必要なパラメタが、事前に、記憶されているとする(Ｓ２１)。
【０１７１】
まず、生成部２３０は、パラメタ記憶部１２０の保持するパラメタ「仮想ユーザ数（Ｗ）」に従い、仮想ユーザを「Ｗ人」生成し、並行して動作させる（Ｓ２２）。
【０１７２】
生成部２３０が複数の仮想ユーザを並行して動作させる方法は、既に説明したように、ＯＳレベルのスレッド又はプロセスを仮想ユーザ数の分だけ生成し、各スレッド又はプロセスでテストシナリオを実行させる方法がある。生成部２３０は、パラメタ記憶部１２０の保持するパラメタ「思考時間（ＴＴ）」と「待機時間（ＳＴ）」とに従い、生成した仮想ユーザに、並行して、テストシナリオを実行させる。
【０１７３】
次に、応答時間取得部２４０は、テストシナリオの実行に対応するテスト対象システム３０の応答を計測する。そして、応答時間取得部２４０は、計測した応答時間の平均値である、「平均応答時間（ＲＴAVE）」を取得する（Ｓ２３）。
【０１７４】
前述したように、「（平均応答時間ＲＴAVE）」は、一定期間内に負荷テスト実施装置１０が送信した全てのリクエストに対する応答時間の平均値である。
【０１７５】
パラメタ調整部２５０は、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」とパラメタ記憶部１２０の保持するパラメタとを参照して、新たな「待機時間（ＳＴ）」を算出する（Ｓ２４）。
【０１７６】
パラメタ調整部２５０は、パラメタ記憶部１２０が記憶する「待機時間（ＳＴ）」の値を、算出された「待機時間（ＳＴ）」の値で、更新する（Ｓ２５）。
【０１７７】
なお、パラメタ調整部２５０は、パラメタ記憶部１２０が記憶する「待機時間（ＳＴ）」の値を更新する代わりに、算出された「待機時間（ＳＴ）」の値を、図示しない外部の出力装置に出力してもよい。
【０１７８】
応答時間取得部２４０は、パラメタ記憶部１２０が記憶する想定応答時間ＲＴの値を、取得した「平均応答時間（ＲＴAVE）」で、更新する（Ｓ２６）。
【０１７９】
Ｓ２４の動作を、さらに、詳細に説明する。
【０１８０】
仮想ユーザが送信するリクエスト量を一定の値に維持するために、既に[式５]を用いて説明したように、負荷テスト実施装置１０は、「ＳＴ＋Ｎ×ＲＴ」の値を一定にすればよい。
【０１８１】
ここで、テストシナリオの実行前に想定していた「平均応答時間（ＲＴAVE）」を「ＲＴ０」、「ＲＴ０」に基づいて算出された「待機時間（ＳＴ）」を「ＳＴ０」とする。また、テストシナリオの実行に基づく実際に計測された「平均応答時間（ＲＴAVE）」を「ＲＴ１」とする。すると、これらの値を基にした「待機時間（ＳＴ１）」は、[式５]の左辺を変形した次の[式６]を用いて算出される。
【０１８２】
すなわち、「ＳＴ０＋Ｎ×ＲＴ０＝ＳＴ１＋Ｎ×ＲＴ１」を変形した［式６］は、次のようになる。
【０１８３】
[式６]  ＳＴ１＝ＳＴ０−Ｎ×（ＲＴ１−ＲＴ０）
テストシナリオの実行前に想定していた「平均応答時間（ＲＴAVE）」である「ＲＴ０」は、「ＲＴ０＝想定最小応答時間（ＲＴMIN）＝０秒」である。「ＲＴ０」に基づいて算出された「待機時間（ＳＴ）」を「ＳＴ０」は、「ＳＴ０＝初期待機時間（ＳＴINI）」である。
【０１８４】
ここで、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」が、「１秒」とする。すると、実際のリクエスト到着率は、[式５]から、「９００×５／（２５＋５×１＋（５−１）×５）＝９０[リクエスト／秒]」となり、所望の１００[リクエスト／秒]に達しない。そこで、パラメタ調整部２５０は、応答時間所得部２４０が取得した「平均応答時間（ＲＴAVE）」を基に、[式６]を使って「待機時間（ＳＴ１）」を、「２５−５×（１−０）＝２０秒」に更新する。つまり、負荷テスト実施装置１０は、「平均応答時間（ＲＴAVE）」が１秒のときに、所望の「１００[リクエスト／秒]」を達成するため、「待機時間（ＳＴ）」を２５秒から２０秒に短縮する必要がある。
【０１８５】
要するに、パラメタ調整部２５０は、[式６]において、パラメタ記憶部１２０に記憶されている「想定応答時間（ＲＴ）」を「ＲＴ０」と、パラメタ記憶部１２０に記憶されている「待機時間（ＳＴ）」を「ＳＴ０」と、Ｓ２４において計測された実際の「平均応答時間（ＲＴAVE）」を「ＲＴ１」とし、［式６］に代入し、新たな「待機時間（ＳＴ１）」を算出する。
【０１８６】
「待機時間（ＳＴ）」を短縮した結果、次に仮想ユーザがテストシナリオを実行したとき、テスト対象システム３０に、より高い負荷が掛かる。そのため、「平均応答時間（ＲＴAVE）」は、１秒から、さらに伸びる可能性がある。そのときは、負荷テスト実施装置１０は、「待機時間（ＳＴ）」を再設定し、テストを繰り返す。この動作を基に、負荷テスト実施装置１０は、最終的に、所望のリクエスト到着率を達成できる。
【０１８７】
「思考時間（ＴＴ）」と「待機時間（ＳＴ）」とを区別しない本発明に関連する負荷テスト実施装置は、負荷の変動を再現するため、「仮想ユーザ数（Ｗ）」と「思考時間（ＴＴ）」とを、共に、十分に大きい値に設定する必要があった。そのため、本発明に関連する負荷テスト実施装置は、多数のスレッドがＴＣＰ接続を維持し続ける必要があった。
【０１８８】
本実施形態に係る負荷テスト実施装置１０は、ＴＣＰ接続が維持される時間である「思考時間（ＴＴ）」を、負荷の変動を再現するために必要最小限の値（最小思考時間（ＴＴMIN））に保ったまま、ＴＣＰ接続が切断されている「待機時間（ＳＴ）」を調整して、所望の負荷を生成できる。この動作を基に、負荷テスト実施装置１０は、仮想ユーザがテストシナリオを実行する際のＴＣＰ接続時間を抑え、接続のために消費されるＴＣＰポート及び他のリソースを節約できる。
【０１８９】
また、本実施形態に係る負荷テスト実施装置１０は、オペレータが入力したパラメタに基づいて、パラメタ記憶部１２０にパラメタ（例えば、「仮想ユーザ数（Ｗ）」、「思考時間（ＴＴ）」、「待機時間（ＳＴ）」）を記憶する。
【０１９０】
本実施形態の負荷テスト実施装置１０のオペレータが入力するパラメタは、いずれも、直感的に理解しやすいパラメタである。そのため、負荷テスト実施装置１０を用いると、負荷テストに関して豊富な経験や専門知識を持たないオペレータでも、適切な負荷テストを、容易に実施できる。
【０１９１】
また、本実施形態に係る負荷テスト実施装置１０において、「仮想ユーザ数（Ｗ）」は、[式４]を用いて、「想定最大応答時間（ＲＴMAX）」と、「最小思考時間（ＴＴMIN）」と、「最小待機時間（ＳＴMIN）」とに基づいて算出される。従って、例え、「平均応答時間（ＲＴAVE）」が「想定最大応答時間（ＲＴMAX）」まで伸びても、負荷テスト実施装置１０は、負荷の変動を維持するための最低限の「思考時間（ＴＴMIN）」及び「待機時間（ＳＴMIN）」を確保しつつ、所望の「リクエスト（Ｍ）」を送信できる。
【０１９２】
また、本実施形態に係る負荷テスト実施装置１０において、パラメタ調整部２５０は、所望の「リクエスト（Ｍ）」を送信するために「待機時間（ＳＴ）」を調整し、「仮想ユーザ数（Ｗ）」を初期値のまま変更しない。そのため、負荷テスト実施装置１０は、「仮想ユーザ数（Ｗ）」の過剰な設定を防げる。
【０１９３】
「仮想ユーザ数（Ｗ）」、すなわち、プロセスやスレッド数が過剰に設定されると、例えば、仮想ユーザの切替えに要するオーバーヘッド「α」が大きくなる。その結果、テストシナリオの実行効率が、低下するという問題が発生する。
【０１９４】
しかし、本実施形態に係る負荷テスト実施装置１０は、このような問題を発生しない。
【０１９５】
また、本実施形態に係る負荷テスト実施装置１０において、「初期待機時間（ＳＴINI）」は、「想定最小応答時間（ＲＴMIN）」に基づいて、算出される。従って、例え、「平均応答時間（ＲＴAVE）」が想定する最小値に近づいても、「初期待機時間（ＳＴINI）」は、十分に長く設定される。そのため、負荷テスト実施装置１０は、テスト対象システム３０への想定以上の負荷を防げる。
【０１９６】
＝第１の実施形態の変形例＝
以下、上記説明した第１の実施形態に係る負荷テスト実施装置１０の、様々な変形例に関して、説明する。
【０１９７】
パラメタ調整部２５０は、[式６]を使わずに、[式２]又は[式４]を使って、「待機時間（ＳＴ）」を算出しても良い。
【０１９８】
この場合、パラメタ記憶部１２０は、「想定応答時間（ＲＴ）」に代えて、「想定スループット」を保持する。そして、パラメタ調整部２５０は、[式２]又は[式４]の「ＲＴ」として、計測した「平均応答時間（ＲＴAVE）」を用いて、新たな「待機時間（ＳＴ）」を算出すればよい。
【０１９９】
パラメタ記憶部１２０は、「思考時間（ＴＴ）」又は「待機時間（ＳＴ）」のパラメタとして、平均値以外の代表値を、記憶してもよい。
【０２００】
応答時間取得部２４０は、「平均応答時間（ＲＴAVE）」以外の代表値を取得してもよい。
【０２０１】
パラメタ記憶部１２０は、必ずしも、全てのパラメタをオペレータから受け付ける必要はない。
【０２０２】
例えば、「最小思考時間（ＴＴMIN）」又は「最小待機時間（ＳＴMIN）」は、予め、ＯＳのティックに対して十分に大きい値が定められてもよい。また、「最小思考時間（ＴＴMIN）」又は「最小待機時間（ＳＴMIN）」は、「ＯＳのティックの整数倍の値」のような形で、決定されてもよい。
【０２０３】
生成部２３０は、仮想ユーザを生成する際に、各仮想ユーザのイベント処理（例えば、リクエストの送信と受信、休止からの復帰）を、その発生予定時刻に従って、集中制御しても良い。この場合、生成部２３０は、スレッド又はプロセスを複数生成しなくても、仮想ユーザの並行動作を模擬できる。
【０２０４】
また、生成部２３０は、テストシナリオを複数種類用意し、各シナリオを所定の確率で実行してもよい。テストシナリオが複数種類用意された場合、例えば、負荷テスト実施装置１０は、各テストシナリオに含まれるリクエストの数（Ｎ）と、各シナリオが選択される確率とを基に、「テストシナリオに含まれるリクエスト数（Ｎ）」の期待値を算出できる。
【０２０５】
上記第１の実施形態の説明は、「待機時間（ＳＴ）」を、仮想ユーザがテストシナリオの最後のリクエストに対する応答を受け取ってＴＣＰ接続を切断してから、再びテストシナリオを実行してＴＣＰ接続を確立し、最初のリクエストを送信するまでの時間と定義した。しかし、本実施形態は、テストシナリオの中にＴＣＰ接続が切断さる「待機時間（ＳＴ）」が組み込まれても良い。この場合、テスト記憶部１１０は、リクエストの送信とリクエストに対する応答を繰り返す間に、「待機時間（ＳＴ）」を少なくとも１回含むテストシナリオを記憶すればよい。
【０２０６】
＝第２の実施形態＝
本発明の第２の実施形態に係る負荷テスト実施装置１１について、図面を参照して、詳細に説明する。
【０２０７】
＜構成の説明＞
図６は、第２の実施形態に係る負荷テスト実施装置１１を含むネットワーク構成の一例を示すブロック図である。
【０２０８】
第２の実施形態に係る負荷テスト実施装置１１は、記憶部１０１と、処理部２０１と通信部３００とを含む。
【０２０９】
記憶部１０１は、第１の実施形態に係る記憶部１００が含む構成に加えて、応答時間許容誤差記憶部１３０を含む。
【０２１０】
処理部２０１は、第１の実施形態に係る処理部２００が含む構成に加え、応答時間比較部２７０を含む。
【０２１１】
応答時間許容誤差記憶部１３０は、「応答時間許容誤差」を記憶する。
【０２１２】
「応答時間許容誤差」は、例えば、「５％」のようなパーセント値、又は、「０．０５秒」のような絶対値の形式で、記憶される。「応答時間許容誤差」は、パラメタ記憶部１２０が記憶する「想定応答時間（ＲＴ）」と、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」との差に関して、許容される値である。「応答時間許容誤差」は、パラメタとして、パラメタ入力受付部２１０がオペレータから受け付け、応答時間許容誤差記憶部１３０に記憶される。
【０２１３】
応答時間比較部２７０は、パラメタ記憶部１２０が記憶する「想定応答時間（ＲＴ）」と、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」との差を求める。そして、応答時間比較部２７０は、その差が、応答時間許容誤差記憶部１３０が記憶する「応答時間許容誤差」の範囲内にあるか否かを判定する。応答時間比較部２７０は、両者の差が許容誤差の範囲内にないと判定した場合、パラメタ調整部２５０に「待機時間（ＳＴ）」の再計算を指示する。
【０２１４】
＜動作の説明＞
次に、第２の実施形態に係る負荷テスト実施装置１１の動作について説明する。
【０２１５】
パラメタの初期値を決定する動作は、第１の実施形態に係る負荷テスト実施装置１０の動作と同じため、説明を省略し、負荷テストを実行しながらパラメタを調整する動作について、詳細に説明する。
【０２１６】
図７は、第２の実施形態に係る負荷テスト実施装置１１の負荷テストを実行しながらパラメタを調整する動作を示すフローチャートである。
【０２１７】
本実施形態におけるＳ３１、Ｓ３２、Ｓ３３の処理は、第１の実施形態に係る負荷テスト実施装置１０と処理（Ｓ２１〜Ｓ２３）と同様のため、説明を省略する。
【０２１８】
応答時間比較部２７０は、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」と、パラメタ記憶部１２０が記憶する「想定応答時間（ＲＴ）」との差分を算出し、その差分が「応答時間許容誤差」の範囲内か否かを判定する（Ｓ３４）。
【０２１９】
判定の結果、両者の差分が「応答時間許容誤差」の範囲内の場合（Ｓ３４のＹＥＳ）、応答時間比較部２７０は、パラメタ調整部２５０に「待機時間（ＳＴ）」に指示を出さずに、負荷テストを継続する。
【０２２０】
両者の差分が「応答時間許容誤差」の範囲外の場合（ステップＳ３４のＮＯ）、応答時間比較部２７０は、パラメタ調整部２５０に、「待機時間（ＳＴ）」の再算出を指示する（Ｓ３５）。
【０２２１】
パラメタ調整部２５０は、「待機時間（ＳＴ）」の値を再算出する（Ｓ３６）。
【０２２２】
本実施形態におけるＳ３６の処理は、第１の実施形態に係る負荷テスト実施装置１０の処理と同様である。
【０２２３】
Ｓ３４の処理について、詳細に説明する。
【０２２４】
ここで、例えば、「応答時間許容誤差」が「０．０５秒」と与えられ、パラメタ記憶部１２０が記憶する「想定応答時間（ＲＴ）」が「１秒」、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」が「１．２秒」とする。
【０２２５】
このとき、応答時間比較部２７０は、両者の差分として、「０．２秒」を算出する。
【０２２６】
次に、応答時間比較部２７０は、算出した差分の「０．２秒」と「応答時間許容誤差」の「０．０５秒」とを比較する。今の場合、応答時間比較部２７０は、差分が「応答時間許容誤差」を上回っていると判定する。その結果、応答時間比較部２７０は、パラメタ調整部２５０に、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」に基づいた「待機時間（ＳＴ）」の再算出を指示する。
【０２２７】
なお、負荷テスト実施装置１１は、「想定応答時間（ＲＴ）」と「平均応答時間（ＲＴAVE）」との差分が「応答時間許容誤差」の範囲内に所定回数以上連続して納まることを、負荷テストの終了条件としても良い。
【０２２８】
第２の実施形態の変形例として、負荷テスト実施装置１１は、パラメタ記憶部１２０が記憶する「想定応答時間（ＲＴ）」の代わりに、オペレータが入力した値を「想定応答時間（ＲＴ）」とみなしてもよい。
【０２２９】
このように、第２の実施形態に係る負荷テスト実施装置１１は、所望の値を基に、忠実な負荷を生成できる。
【０２３０】
その理由は、負荷テスト実施装置１１が、「想定応答時間（ＲＴ）」と「平均応答時間（ＲＴAVE）」との差分を基に、「待機時間（ＳＴ）」の再設定を実施するためである。
【０２３１】
また、負荷テスト実施装置１１は、テストシナリオの実行を適切に繰り返せる。
【０２３２】
その理由は、負荷テスト実施装置１１が、「想定応答時間（ＲＴ）」と「平均応答時間（ＲＴAVE）」との差分が「応答時間許容誤差」の範囲内に所定回数以上連続して納まることを、負荷テストの終了できるためである。
【０２３３】
＝第３の実施形態＝
本発明の第３の実施形態に係る負荷テスト実施装置１２について、図面を参照して、詳細に説明する。
【０２３４】
図８は、第３の実施形態に係る負荷テスト実施装置１２を含むネットワーク構成の一例を示すブロック図である。
【０２３５】
第３の実施形態に係る負荷テスト実施装置１２は、記憶部１０２と、処理部２０２と、通信部３００と、通知部４００とを含む。
【０２３６】
記憶部１０２は、第１の実施形態に係る記憶部１００が含む構成に加えて、応答時間許容範囲記憶部１４０を含む。
【０２３７】
処理部２０２は、第１の実施形態に係る処理部２００が含む構成に加え、応答時間判定部２８０を含む。
【０２３８】
応答時間許容範囲記憶部１４０は、「想定最小応答時間（ＲＴMIN）」と「想定最大応答時間（ＲＴMAX）」とを記憶する。
【０２３９】
応答時間判定部２８０は、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」が、所定の範囲内、例えば、「想定最小応答時間（ＲＴMIN）」から「想定最大応答時間（ＲＴMAX）」までの範囲内か否かを判定する。
【０２４０】
通知部４００は、応答時間判定部２８０の判定の結果、「平均応答時間（ＲＴAVE）」が「想定最小応答時間（ＲＴMIN）」から「想定最大応答時間（ＲＴMAX）」までの範囲外の場合、その旨を図示しない外部の装置（例えば、オペレータが操作する装置）に通知する。
【０２４１】
図９は、第３の実施形態に係る負荷テスト実施装置１２の動作の一例を示すフローチャートである。
【０２４２】
本実施形態におけるＳ４１、Ｓ４２、Ｓ４３の処理は、第１の実施形態に係る負荷テスト実施装置１０の動作（Ｓ２１〜Ｓ２３）と同様のため、説明を省略する。
【０２４３】
応答時間判定部２８０は、応答時間取得部２４０が取得した「平均応答時間（ＲＴAVE）」が、「想定最小応答時間（ＲＴMIN）」から想定最大応答時間（ＲＴMAX）」までの範囲内か否かを判定する（Ｓ４４）。
【０２４４】
「平均応答時間（ＲＴAVE）」が、範囲内の場合（Ｓ４４のＹＥＳ）、負荷テスト実施装置１２は、負荷テストを継続する。
【０２４５】
「平均応答時間ＲＴAVE）」が、範囲外のる場合（Ｓ４４のＮＯ）、通知部４００は、範囲外の旨を通知する（Ｓ４５）。
【０２４６】
ここで、第３の実施形態に係る負荷テスト実施装置１３が奏する効果を説明する。
【０２４７】
「平均応答時間（ＲＴAVE）」が想定最小応答時間ＲＴMINより短い場合、テスト対象システム３０に必要以上のリクエストが、送信される。テスト対象システム３０は、想定以上の負荷を与えられると動作が不安定となる場合ある。最悪の場合、テスト対象システム３０は、停止する。停止した場合、負荷テストを継続するためにテスト対象システム３０の再起動が必要となる。その結果、テストの実施効率が、低下する。
【０２４８】
一方、「平均応答時間（ＲＴAVE）」が「想定最大応答時間（ＲＴMAX）」より長い場合、想定よりも低いリクエスト到着率にも拘らず、テスト対象システム３０の応答時間が、想定を超える。そのため、テスト対象システム３０が所望の性能を発揮しないことが、直ちに判明する。
【０２４９】
このように、第３の実施形態に係る負荷テスト実施装置１２は、通知部４００の通知を基に、例えば、オペレータに、これらの好ましくない状況を通知できる。
【０２５０】
その理由は、負荷テスト実施装置１２の応答時間判別部２８０が、「平均応答時間（ＲＴAVE）」が適切な範囲内が否かを判別する。そして、範囲外の場合、通知部４００が、通知するからである。
【０２５１】
第３の実施形態の変形例として、負荷テスト実施装置１２は、通知部４００の代わりに、負荷テスト強制終了部２９０を含んでもよい。
【０２５２】
負荷テスト強制終了部２９０は、応答時間判定部２８０の判定の結果、「平均応答時間（ＲＴAVE）」が所定の範囲内でない場合、負荷テストを強制的に終了する。
【０２５３】
そのため、第３の実施形態の変形例に係る負荷テスト実施装置１２は、負荷テストが不適切であった場合、自動的に負荷テストを終了できる。
【０２５４】
＝第４の実施形態＝
本発明の第４の実施形態に係る負荷テスト実施装置１３について図面を参照して詳細に説明する。
【０２５５】
図１０は、第４の実施形態に係る負荷テスト実施装置１３の構成の一例を示すブロック図である。
【０２５６】
第４の実施形態に係る負荷テスト実施装置１３は、テスト記憶部１１０とパラメタ記憶部１２０を含む記憶部１００と、生成部２３０とパラメタ調整部２５０と通信制御部２６０とを含む処理部２０３とを含む。
【０２５７】
これらの構成は、第１の実施形態と同様である。そのため、繰り返しとなるが、各構成について説明する。
【０２５８】
テスト記憶部１１０は、テストシナリオ（以下、本実施形態の説明では「スクリプト」と記す）を記憶する。スクリプトは、リクエストを送信してからリクエストに対する応答を受信する処理を複数回含む。受信と送信との間の時間は、ＴＣＰ接続が切断される時間である「待機時間」、又は、ＴＣＰ接続が維持される時間である「思考時間」かのいずれかである。
【０２５９】
生成部２３０は、負荷を掛ける対象となるシステム（例えば、図１に示すテスト対象システム３０）に対してスクリプトを実行して負荷を掛ける負荷発生手段（仮想ユーザ）を生成する。
【０２６０】
パラメタ記憶部１２０は、「待機時間（ＳＴ）」の長さを定めるパラメタを記憶する。
【０２６１】
パラメタ調整部２５０は、単位時間当たり所望の数のリクエストがシステムに到達するように、パラメタを調整する。
【０２６２】
通信制御部２６０は、負荷発生手段が実行中のスクリプトに含まれる「思考時間（ＴＴ）」の間は通信路（ＴＣＰ接続）を維持し、「待機時間（ＳＴ）」の間は通信路（ＴＣＰ接続）を切断する。
【０２６３】
このように構成された本実施形態の負荷テスト実施装置１３は、第１の実施形態の負荷テスト実施装置１０と同様の効果を実現できる。
【０２６４】
その理由は、負荷テスト実施装置１３が、上記の通り、適切な負荷テストを実施できるように、パラメタを調整できるためである。
【０２６５】
なお、負荷テスト実施装置１３は、本発明の最小構成である。
【０２６６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２６７】
この出願は、２０１２年  ３月３０日に出願された日本出願特願２０１２−０７９４１８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０２６８】
本発明は、テスト対象システムに所定の負荷を与えたときの性能及び挙動を検証するための負荷テスト実施装置、負荷テスト実施システム又は負荷テスト実施方法に好適である。
【符号の説明】
【０２６９】
１０  負荷テスト実施装置
１１  負荷テスト実施装置
１２  負荷テスト実施装置
１３  負荷テスト実施装置
２０  ネットワーク
３０  テスト対象システム
１００  記憶部
１０１  記憶部
１０２  記憶部
１１０  テスト記憶部
１２０  パラメタ記憶部
１３０  応答時間許容誤差記憶部
１４０  応答時間許容範囲記憶部
２００  処理部
２０１  処理部
２０２  処理部
２０３  処理部
２１０  パラメタ入力受付部
２２０  初期パラメタ算出部
２３０  生成部
２４０  応答時間取得部
２５０  パラメタ調整部
２６０  通信制御部
２７０  応答時間比較部
２８０  応答時間判定部
２９０  負荷テスト強制終了部
３００  通信部
４００  通知部
【図１】
2013145628.tif 000003
【図２】
2013145628.tif 000004
【図３】
2013145628.tif 000005
【図４】
2013145628.tif 000006
【図５】
2013145628.tif 000007
【図６】
2013145628.tif 000008
【図７】
2013145628.tif 000009
【図８】
2013145628.tif 000010
【図９】
2013145628.tif 000011
【図１０】
2013145628.tif 000012
【国際調査報告】
2013145628.tif 000013
2013145628.tif 000014
2013145628.tif 000015
2013145628.tif 000016