(57)【要約】【課題】負荷試験作業を効率的に行える自動負荷試験装置および自動負荷試験方法を提供すること。【解決手段】負荷シナリオと負荷量を入力する条件入力手段と、計算機システムから負荷試験の結果のステータスとリソースの使用状況を受け取る結果収集手段と、条件入力手段から負荷シナリオと負荷量とを受け取り、さらに、結果収集手段により受け取られた計算機システムの負荷試験の結果のステータスとリソースの使用状況を参照することによって負荷量を調整するスケジューリング手段と、スケジューリング手段から前記負荷シナリオと負荷量とを受け取り前記計算機システムの負荷試験を行う負荷発生手段とを備える。【選択図】図１
2008234407.tif 000002
【特許請求の範囲】
【請求項１】
計算機システムの負荷試験に用いられる負荷試験装置であって、負荷シナリオと負荷量を入力する条件入力手段と、前記計算機システムから負荷試験の結果のステータスとリソースの使用状況を受け取る結果収集手段と、前記条件入力手段から前記負荷シナリオと負荷量とを受け取り、さらに、前記結果収集手段により受け取られた前記計算機システムの負荷試験の結果のステータスとリソースの使用状況を参照することによって負荷量を調整するスケジューリング手段と、前記スケジューリング手段から前記負荷シナリオと負荷量とを受け取り前記計算機システムの負荷試験を行う負荷発生手段とを備えことを特徴とする自動負荷試験装置。
【請求項２】
前記スケジューリング手段は、前記計算機システムに対してかける負荷を決定する手段として、負荷量を一定の値ずつ増加させる決定方法と、十分な負荷特性が得られていないポイントを検索し、そのポイントに相当する負荷量を計算する方法の、2通りの手段を有することを特徴とする請求項１記載の自動負荷試験装置。
【請求項３】
十分な負荷特性が得られていないポイントの検索は、負荷発生手段が保存した計測結果に基づいた負荷特性を曲線近似し、その近似曲線の形状、および、負荷試験を実施した計測ポイントから判定することを特徴とする請求項２記載の自動負荷試験装置。
【請求項４】
前記負荷試験の計測ポイントを出力し、前記計測ポイントを編集させるための計測ポイント確認・入力手段を有することを特徴とする請求項１記載の自動負荷試験装置。
【請求項５】
計算機システムの負荷試験に用いられる負荷試験方法であって、負荷シナリオと負荷量を入力する入力ステップと、前記計算機システムから負荷試験の結果のステータスとリソースの使用状況を受け取る結果収集ステップと、前記入力ステップにおいて入力された負荷シナリオと負荷量とを受け取り、さらに、前記結果収集ステップにおいて受け取られた前記計算機システムの負荷試験の結果のステータスとリソースの使用状況を参照することによって負荷量を調整するスケジューリングステップと、前記スケジューリングステップにおいて調整された前記負荷シナリオと負荷量とを受け取り前記計算機システムの負荷試験を行う負荷発生ステップとを備えことを特徴とする自動負荷試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機を組み合わせた計算機システムの性能を確認するための自動負荷試験装置および自動負荷試験方法に関する。
【背景技術】
【０００２】
複数の計算機を組み合わせた計算機システムの開発において、性能に関する要件を満足しているかどうかを確認するために、負荷試験を行う工程がある。
【０００３】
負荷試験の効率化に関して、先行技術として特許文献１「負荷制御方法および装置、ならびに負荷制御用プログラム」がある。この特許文献１は、試験対象サーバに発生した負荷情報を取得し、あらかじめ設定しておいた目標の負荷設定値との偏差を求め、それを元にサーバに送信する処理要求量を決定し、負荷をかけることにより、負荷試験の効率化を図るものである。
【０００４】
別の先行技術として、特許文献２「特定構成要素負荷試験システム」がある。この特許文献２は、計算機システムにおける検証や試験を行う際の、試験負荷を均等化する方法に関するものである。
【０００５】
この特許文献２では、仮想ユーザが対象システムにアクセスしたときの処理時間を監視して、定期的に目標とする試験負荷となっているかどうかを判断し、目標より低い負荷状態の場合は、トランザクションキューから新たなキューを取り出して、対象システムにトランザクションをかけることにより、負荷を高めるようにする。目標より高い負荷状態の場合は、一定期間トランザクションをかけることを止めることにより、負荷を下げるようにする。
【０００６】
しかし、これらの先行技術では、あらかじめ目標とする負荷量を外部から入力して、設定しておくことが前提となっており、効率的な負荷試験を実現するための負荷制御の仕組みとは言えない。なぜなら、対象システムがどれぐらいの負荷まで耐えられるのかは、実行する処理、ミドルウェア構成、ハードウェア構成等の様々な要因の組み合わせで決まるものであり、実際に負荷をかけてみないと、どの程度の負荷までかけられるか、という判断を下すのが困難だからである。試験対象に、実際に負荷をかけることで、動的に、その試験対象に対して適切な負荷量を計算しながら、負荷試験を行う仕組みが望まれる。
【０００７】
また、動的に、その試験対象に対して適切な負荷量を計算しながら、負荷試験を行う仕組みの先行技術として、特許文献３がある。この特許文献３は、試験環境における負荷量を自動調整する方法に関するものである。仮想ユーザ数を増加させて、ある負荷量の負荷をかけたときにエラーが報告された場合に、仮想ユーザ数を前回用いた数に戻し、前回用いた加減値を半分にして新たな仮想ユーザ数とし、その仮想ユーザ数で負荷をかける。加減値が0となったときの仮想ユーザ数を、評価時にかける負荷量と予測するものである。
【０００８】
しかし、この方法で得られる負荷試験結果は、主に、システムが、過負荷が原因でエラーを発生する付近（高負荷時）の状況におけるものであり、低負荷時から高負荷時に渡る負荷特性を、効率よく網羅的に得たい場合には、不向きである。すなわち、低負荷から高負荷に至る過程において、急激にシステムの負荷特性が変化する付近について、必ずしも詳細な試験結果が得られるとは限らない。
【特許文献１】特開2005-63222号公報
【特許文献２】特開2004-362490号公報
【特許文献３】特開2004-326386号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本提案は以上のような問題点を解決するためのものであり、負荷試験作業を効率化するための負荷試験方法および装置に関する。
【課題を解決するための手段】
【００１０】
本発明は、性能試験の中でも特に負荷試験を効率よく実施するためのものであり、以下のような特徴を有する。
【００１１】
(1) 対象システムの負荷特性を得るために必要な負荷量を、自動的に算出する機能
(2) 上記の負荷量に基づく負荷を、対象システムにかけるための、スケジュール機能
(3) 上記のスケジュールに従って、対象システムに負荷をかける機能
自動負荷試験装置に対して試験シナリオを与えると、自動的に計測ポイント（負荷）を調節して負荷試験を行い、単位時間当たりのトランザクション数、応答時間、資源の利用状況等の試験結果を出力する。
【００１２】
このことにより、自動負荷試験装置が、自動的に適切な負荷を判断して、対象システムにその負荷をかけることにより、今までは人間が行ってきた負荷調整作業がなくなり、負荷試験作業が効率良く行えるようになる。
【００１３】
また、自動的に追加の負荷試験を実施する仮想ユーザ数を決定していた処理を、次のような処理に置き換える。自動的に追加の負荷試験を実施する仮想ユーザ数を決定し、その結果を負荷テスターに提示する。負荷テスターは、必要に応じて、システムが提示した仮想ユーザ数を編集する。
【００１４】
このことにより、複雑な負荷特性のシステムに対して、事前に、システム側で追加試験すべき仮想ユーザ数の候補を提示してくれるので、負荷試験を効率良く行うことができる。さらに、負荷テスターが、容易に計測ポイントの編集を行うことができるため、期待通りの試験結果を得ることができる。
【発明の効果】
【００１５】
本発明によれば、複数の計算機を組み合わせた計算機システムの開発において、負荷試験作業が効率良く行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の第一の実施形態について、図面を用いて詳細に説明する。図1に第一の実施形態のシステム構成を示す。
【００１７】
条件入力手段(101)は、負荷テスターとシステムとのインタフェースを提供する。テスターは、101を介してシステムに負荷シナリオ、負荷の刻み、閾値を入力する。このとき、図2に示すような条件がスケジューリング手段(105)に渡される。
【００１８】
負荷発生手段(102)は、対象システム(104)に実際に負荷をかける機能を有する。スケジューリング手段(105)から負荷シナリオと、発生させる負荷量に相当するユーザ数を受け取り、負荷を発生することにより、負荷試験を行う。また、対象システム(104)に対して負荷を発生した（要求を出した）時刻情報等を結果収集手段(103)に送信する。
【００１９】
結果収集手段(103)は、負荷試験結果を収集する機能を有する。まず、負荷発生手段(102)から、対象システム(104)に対して要求を出した時刻情報等を受け取り、計測結果(106)に格納する。また、その要求に対する対象システム(104)からの応答結果を受け取り、結果を受け取った時刻、結果のステータス（成功、失敗）等の性能情報を計測結果(106)に格納する。さらに、対象システム(104)に対して、リソース（CPU、Disk、メモリ等）の使用状況の応答を要求し、その応答結果を計測結果(106)に格納する。
【００２０】
対象システム(104)は、負荷試験の対象となるシステムである。負荷発生手段(102)からの要求を受け取り、処理する。その応答は、結果収集手段(103)に戻される。また、結果収集手段(103)からの要求に従って、リソース（CPU、Disk、メモリ等）の使用状況を返す。
【００２１】
スケジューリング手段(105)は、負荷試験の制御を行う。条件入力手段(101)から負荷試験の要求として負荷試験の条件を受け取る。また、計測結果(106)を参照することによって、システムにかける負荷量を調節する。さらに、負荷発生手段(102)に対して、負荷発生の開始、中断、再実行、終了などの指示を出す。
【００２２】
図2に負荷テスターから入力される条件のイメージを示す。
【００２３】
201は、シナリオの情報が格納されているファイルの名前を入力するテキストフィールドを表しており、図2ではtest1である。202は、負荷の刻みを入力するテキストフィールドを表しており、図2では10である。スケジューリング手段(105)が次に発生させる負荷量に相当するユーザ数を算出する時に、この値を参照する。203は、リソース状況採取間隔を入力するテキストフィールドを表しており、図2では10secである。結果収集手段(103)は、対象システム(104)に対して、この値の間隔で、リソースの使用状況を取得する要求を出す。204は、特定の負荷量における負荷試験を実施する時間幅を入力するテキストフィールドを表しており、図2では5minである。負荷発生機能(102)は、対象システム(104)に対して、この値の時間幅の間、特定の負荷量の負荷をかけ続ける。
【００２４】
図3に、計測結果(106)のうち、負荷発生手段(102)が対象システム(104)へ要求を出した時刻等の情報、および、それに対する対象システム(104)からの応答結果のイメージを示す。301は、要求を出した時刻を格納する列を表しており、図3では10:10:01.255等である。302は、結果を受け取った時刻を格納する列を表しており、図3では10:10:02.328等である。303は、結果のステータスを格納する列を表しており、図3では成功もしくは失敗のいずれかである。ここで、格納される計測結果は、図3に示す項目に限定されるものではない。すなわち、図3に示す項目のみでも構わないし、それ以上の項目を含んでいても構わない。
【００２５】
図4に、対象システム(104)から受け取ったリソース（CPU、Disk、メモリ等）の使用状況を格納する計測結果(106)のイメージを示す。401は、リソースの使用状況を採取した時刻を格納する列を表しており、図4では10:10:01.345等である。402は、CPU使用率を採取した時刻を格納する列を表しており、図4では10.2等である。403は、Disk使用率を採取した時刻を格納する列を表しており、図4では2.2等である。404は、メモリ許容量を採取した時刻を格納する列を表しており、図4では40678等である。
【００２６】
ここで、格納される計測結果は、図4に示す項目に限定されるものではない。すなわち、図4に示す項目のみでも構わないし、それ以上の項目を含んでいても構わない。また、図4に示す項目の一部でも構わないものとする。さらに、この計測結果の取得方式は、負荷試験の実施中に結果収集手段(103)へ送信する方式のみに限定せず、対象システム(104)側で記録しておき、負荷試験終了時に、結果収集手段(103)へまとめて送る方式でも構わない。
【００２７】
図5は、第一実施例の全体の処理の流れを表す。まずステップ502で、負荷テスターから条件を受け取る。このとき、シナリオの情報が格納されているファイルの名前(201)、負荷の刻み(202)、リソース状況採取間隔(203)、試験時間(204)を入力として受け取る。次にステップ503で、段階的に負荷を増加させて、負荷試験を実施し、負荷ごとに、計測結果(106)を格納する。負荷量（仮想ユーザ数）は、あらかじめ定められている初期値（例えば1など）、および、負荷の刻み(202)によって、段階的に増加させる。最後にステップ504で、もっと詳細な特性を得る必要がある負荷領域を判定する。そして、そのときの負荷について追加の負荷試験を実施し、負荷ごとに、計測結果(106)を格納する。
【００２８】
図6に、503の処理の流れの詳細を示す。この処理では、段階的に負荷を増加させて、負荷試験を実施し、負荷ごとに、計測結果(106)を格納する。このとき、過負荷状態かどうかを調べることにより、503の処理を終了するかどうかを決定する。まず、ステップ602において、スケジューリング手段(105)が、あらかじめ定めておいた初期の仮想ユーザ数（たとえば1）で負荷試験を実施するように、負荷発生手段(102)に指示する。負荷発生手段(102)が指示を受け取ると、ステップ603において、負荷試験が実施される。そして、そのときの負荷量における、図3、および図4に示すような、計測結果が保存される。この負荷試験は、負荷テスターが指定した試験時間(204)の期間の幅で行う。ステップ604において、所定の条件を満たしたときに、負荷試験が終了すると、負荷発生手段(102)からスケジューリング手段(105)に対して、負荷試験の終了が通知される。所定の条件には、例えば、次のような項目の任意の組み合わせが考えられる。
【００２９】
・指定した時間が過ぎた。
【００３０】
・特定のリソースの使用量の変動が、特定の時間幅の間で、特定の数値以下になった。
【００３１】
・対象システム(104)から返される結果のステータス(303)が失敗である割合が、ある値以上になった。
【００３２】
ここで、負荷試験終了の条件は、特に上記の条件に限定されるものではなく、任意の条件を採用できるものとする。また、条件を判定するための基準値については、条件入力手段(101)を介して負荷テスターから入力させることでも良いし、負荷発生手段(102)内であらかじめデフォルト値を設定しておくことでも構わない。ここで言及している基準値とは、上記の条件を例に取ると、指定した時間、特定のリソース名、特定の時間幅、特定の数値、結果のステータスが失敗である割合である。
【００３３】
ステップ605では、終了した負荷試験の結果から、その負荷量のときに、対象システム(104)が過負荷状態であったかどうかの判定を行う。判定は、以下の条件の任意の組み合わせにより行う。
【００３４】
・TPSn - TPSpが特定の値以下である。
【００３５】
・RESn / RESpが特定の値以上である。
【００３６】
・特定のリソースの使用状況の平均が、特定の値以上である。
【００３７】
ただし、
TPSn：今回の負荷試験時のTPS（単位時間当たりのトランザクション数）
TPSp：前回の負荷試験時のTPS
RESn：今回の負荷試験時の応答時間
RESp：前回の負荷試験時の応答時間
ここで、過負荷状態かどうかの判定条件は、特に上記の条件に限定されるものではなく、任意の条件を採用できるものとする。また、条件を判定するための基準値については、条件入力手段(101)を介して負荷テスターから入力させることでも良いし、負荷発生手段(102)内であらかじめデフォルト値を設定、もしくは1仮想ユーザの場合の計測結果から推定するなどの、別の手段でも構わない。ここで言及している基準値とは、上記の条件を例に取ると、TPSn - TPSpの基準値、RESn / RESpの基準値、特定のリソース名、特定のリソースの使用状況の平均値の基準値である。
【００３８】
TPSは、単位時間当たりのトランザクション数(Transaction Per Sec)の意味であり、対象システムの忙しさ（過負荷の度合い）を表す指標の1つである。TPSは、計測結果(106)に格納された計測結果により、次式を用いて計算される。
【００３９】
TPS = Tr / Ts
ただし、
Tr：負荷試験時に対象システム(104)が処理した総トランザクション数
Ts：負荷試験を実施した期間
上記の式において、Trは、その負荷量の時の計測結果(106)において、結果のステータスが成功のものの数を意味する。例えば図3では、2である。また、Tsは、負荷試験を実施した期間であり、負荷テスターが条件として指定するなどの方法により、負荷発生手段(102)が把握している。例えば図2では、5minである。従って、TPSは、
TPS = 2 / (5 * 60) = 0.0067
となる。
【００４０】
過負荷状態と判定された場合は、これ以上高負荷にしても意味のある計測結果が採取できないので、処理を終了する。そうでなければステップ606に進み、次式により、次の仮想ユーザ数Unを決定する。
【００４１】
Un = Up + S
ただし、
Un：次回の負荷試験時の仮想ユーザ数
Up：今回の負荷試験時の仮想ユーザ数
S：負荷の刻み(202)
次に、ステップ607に進み、仮想ユーザ数Unで、負荷試験を実施するように、負荷発生手段(102)に対して、指示を出す。
【００４２】
図7に、504の処理の流れの詳細を示す。まず、ステップ702では、追加の負荷試験を行うべきTPS（または、仮想ユーザ数）の集合A{A1, A2, ..., An}を算出する。すなわち、対象システム(104)の負荷特性が十分得られていないと判断した場合に、TPS（または、仮想ユーザ数）を、負荷の刻み(202)の値より細かく指定して、追加の負荷試験を行う。ここで、追加の負荷試験を行うかどうかを判断する方法については、システムの特性や、負荷試験の目的などに応じて、自由に変えられるものとする。本実施例では、システム側で自動的に判断する方法の一例を後述する。また、負荷発生手段(102)は、特許文献１、特許文献２、特許文献３で挙げた特開2005-63222や特開2004-362490等にある方法を利用することにより、スケジューリング手段(105)から、所望のTPSを与えることにより、そのTPSに相当する負荷をかけることもできるし、あるいは、仮想ユーザ数を与えることにより、その仮想ユーザ数の状況での負荷をかけることもできるものとする。
【００４３】
次にステップ703では、702で決定した集合Aの要素が無くなるまで、ステップ704からステップ706までの手順を繰り返す。ステップ704では、スケジューリング手段(105)が、負荷発生手段(102)に対して、TPS（または、仮想ユーザ数）Ai(i = 1,2, ..., n)で負荷試験を実施するように指示を出す。負荷発生手段(102)が指示を受け取ると、ステップ705において、負荷試験を実施される。そして、そのときの負荷量における計測結果が保存される。
【００４４】
ステップ706において、負荷テスターから指定された試験時間(204)の経過後に、負荷試験が終了すると、負荷発生手段(102)からスケジューリング手段(105)に対して、負荷試験の終了が通知される。全てのTPS（または、仮想ユーザ数）Aiについての負荷試験が終了すれば、ステップ707において、繰り返し終了となる。
【００４５】
以降では、ステップ702において、追加の負荷試験を実施すべきTPS（または、仮想ユーザ数）の集合Aを決定する方法の一例について、説明する。TPS（または、仮想ユーザ数）の集合の要素を決めるには、(1)計測結果の正規化、(2)TPSと応答時間の関係の近似式の算出、(3)前述の近似式において、各TPSにおける曲率半径の計算、(4)曲率半径の値に応じて、追加の負荷試験が必要なTPS（または仮想ユーザ数）の有無、および、その値の決定の手順を実施する。以下、この手順による決定方法について述べる。
【００４６】
図8および図9は、図6の手続きを実施することによって得られた、ある対象システム(104)の計測結果を示す。図8において、801は、仮想ユーザ数の初期値を1、負荷の刻みを18と設定したときの仮想ユーザ数を表している。また、802は、801の仮想ユーザ数で負荷をかけたときのTPSの計測結果を表しており、803は、応答時間の計測結果を表している。さらに、804は、計測対象システムのサーバのCPU利用率を表している。また、図9は、図8におけるTPS(802)を横軸にとり、応答時間の計測結果(803)を縦軸にとった場合の、負荷特性グラフを表している。
【００４７】
ここで、集合Aの要素を決定するために、まず、(1)計測結果の正規化を行う。試験時のシステム構成や負荷をかけるトランザクションの種類によって、それぞれの試験結果はスケールが異なるものとなるが、この正規化の作業によって、それらの計測結果を、共通の尺度で扱えるようにする。すなわち、どのような計測結果でも、同じ基準で、追加試験が必要なTPS（または仮想ユーザ数）が導き出せるようにする。
【００４８】
まず、本実施例では、対象システム(104)のリソースのうち、CPUがボトルネックであり、高負荷時に、最も早く100%の利用状態になるものと仮定する。この仮定の上で、CPU利用率が100%となる状態におけるTPSを求め、その値を100に換算することにより、各仮想ユーザ数のときのTPSを正規化する。仮に、DISKなどの他のリソースがボトルネックである場合は、そのリソースについて、前記と同様の方式で正規化するものとする。
【００４９】
すなわち、各仮想ユーザ数のときの正規化されたTPSを次式で表す。
【００５０】
TPSn = TPS * 100 / TPSmax
ただし、
TPSn：正規化されたTPS
TPS：各仮想ユーザ数のときのTPSの計測結果
TPSmax：CPU利用率が100%となる状態におけるTPS
TPSmaxは、次の手順で計測結果より自動的に求める。図8におけるTPS(802)を横軸にとり、CPU利用率(804)を縦軸にとったときの関係を図10に示す。この関係を線形近似し、その近似式y = 1.1751 * xを得る。このとき、y = 100としたときのxの値 = 約85TPSをTPSmaxとする。
【００５１】
また、レスポンスタイムは、仮想ユーザ数が1の場合のレスポンスタイムを1として、各仮想ユーザ数のときのそれらを正規化するものとする。すなわち、各仮想ユーザ数のときの正規化されたレスポンスタイムを次式で表す。
【００５２】
RESn = RES / RES0
ただし、
RESn：正規化されたレスポンスタイム
RES：各仮想ユーザ数のときのレスポンスタイムの計測結果
RES0：仮想ユーザ数が1のときのレスポンスタイム
図11は、前述の手続きを実施することによって得られた、計測結果を正規化した結果を示す。図11において、1101は、図8の801に示す仮想ユーザ数を表している。また、1102は、802のTPSを正規化した結果を表しており、1103は、803の応答時間を正規化した結果を表している。1104は、804のCPU利用率と同じ値を表している（CPU利用率は最大100(%)で正規化された値とみなすことができる）。
【００５３】
次に、(2)TPSと応答時間の関係の近似式の算出を行う。本実施例では、待ち行列理論のM/M/1モデルを適用して、次式のような近似式を得る。
【００５４】
R(x) = Ro / (1 - x / TPSmax)
ただし、
x：TPS
R(x)：TPSがxのときの応答時間
Ro：無負荷時の（仮想ユーザ数が1の場合の）応答時間
TPSmax：TPSの極限値
本実施例では、前述の正規化の結果により、Roを1、TPSmaxを100とする。
【００５５】
次に、(3)前述の近似式において、各TPSにおける曲率半径の計算を行う。関数f(x)の曲率半径を求める式は、次式により与えられる。
【００５６】
p = [ 1 + { f'(x)}2 ]3/2 / | f''(x) |
ただし、
p：曲率半径
f'(x)：f(x)の1階微分関数
f''(x)：f(x)の2階微分関数
R(x)の1階微分関数、2階微分関数は、それぞれ次式で表される。
【００５７】
R'(x) = Ro / { TPSmax・(1 - x / TPSmax)2 }
R''(x) = 2・Ro / { TPSmax2・(1 - x / TPSmax)3 }
したがって、近似式R(x)のxにおける曲率半径は、次式により求められる。
【００５８】
pr(x) = [ 1 + { R'(x)}2 ]3/2 / | R''(x) |
ただし、
pr(x)：近似式R(x)のxにおける曲率半径
図12および図13は、上記(1)から(3)までの手続きを実施することによって得られた、TPSと応答時間の関係の近似式と、各TPSのときの曲率半径を示す。図12において、1201は、1101に示す仮想ユーザ数、1202は、1102に示す正規化されたTPSを表している。また、1203は、各TPSにおける近似式R(x)の値を示している。1204および1205は、それぞれ、各TPSにおける近似式R(x)の1階微分の値、2階微分の値を示している。また、1206は、各TPSにおける曲率半径pr(x)の値を表している。
【００５９】
図13は、図12におけるTPS(1202)と応答時間(1203)、および、TPSと曲率半径(1206)の関係を示したグラフである。応答時間の軌跡は、曲率半径が大きいポイント付近ほど、緩やかなカーブを描いている。
【００６０】
ここで、急なカーブを描いているポイント付近では、負荷特性が急激に変化するため、負荷の刻み(202)よりも細かく計測データを採る必要がある。そこで、(4)曲率半径の値に応じて、追加の負荷試験が必要なTPS（または、仮想ユーザ数）の有無、および、その値の決定を行う。本実施例では、図14に示すような曲率半径の区間平均値を算出し、図15から図18までに示す表を用いて決定する。
【００６１】
図14は、計測結果(104)における、隣り合う2つの仮想ユーザ数(1401)と、それに対応する正規化されたTPSの区間(1402)と、その区間での曲率半径の平均値(1403)を表したものである。例えば、TPSの区間が1〜19の場合は、図12において、TPSがそれぞれ1, 19のときの近似式の曲率半径の値4370.22および、2300.37の平均値3335.29を記載している。また、図15は、あらかじめ設定された、曲率半径の範囲(1501)と、その範囲のときの、正規化されたTPSの推奨の刻み幅(1502)との対応を表している。例えば、曲率半径が1〜100の場合は、正規化されたTPSの推奨の刻み幅は3である。図15に記載の内容は、スケジューリング手段(105)にあらかじめ用意されているものである。曲率半径を求めるためのレスポンスタイムやCPU利用率は、正規化されたものを用いているので、異なるシステム構成やトランザクション種別による負荷試験の計測結果に対して共通で用いられる。ただし、この推奨値の与え方は、条件入力手段(101)を介して、負荷テスターが設定可能にしても良いし、スケジューリング手段(102)側で、負荷試験の都度ごとに、自動的に計算する方法でも構わないものとする。
【００６２】
追加の負荷試験を行うべきTPS（または、仮想ユーザ数）は、次のようにして決定する。まず、計測結果(104)において、曲率半径の基準値(1501)の範囲内であるような、曲率半径の区間平均値(1403)を検索する。図14の例では、区間55〜73、73〜91、91〜109が検索される。
【００６３】
次に、刻み幅の推奨値(1502)を参照して、それぞれの区間で追加の負荷試験を行うべき仮想ユーザ数を計算する。具体的には、それぞれのTPSの区間(1402)の幅を、対応する刻み幅の推奨値(1502)の刻み幅で、分割した点を計算する。このとき、TPSの区間幅が、既に、刻み幅の推奨値(1502)未満の場合は、分割は行わないものとする。例えば、仮想ユーザ数が55〜73の行については、曲率半径の平均値が262.603であり、図15より、推奨の刻み幅が4と検索される。したがって、正規化されたTPSの区間(1401)の55.6〜69.8を四捨五入した後で、4刻みで分割することにより、追加試験すべき正規化されたTPSとして、60, 64, 68という結果を得る。
【００６４】
同様の計算をすることにより、図14および図15の例では、分割した結果として、図16に示すような追加試験すべき正規化されたTPSのポイントが得られる。従って、追加の試験を実施すべき正規化されたTPSの集合をAtpsとすると、
Atps = { 60, 64, 68, 73, 76, 79, 86, 90, 94 }
となる。
【００６５】
次に、正規化されたTPSを実際のTPSに変換する。変換は、正規化されたTPSを算出したときと逆の計算をすることにより、算出する。すなわち、次式を用いて算出する。
【００６６】
TPS = TPSn * TPSmax / 100
ただし、
TPS：実際に追加試験すべきTPS 
TPSn：正規化されたTPS
TPSmax：CPU利用率が100%となる状態におけるTPS
本実施例では、TPSmax = 85であるので、図17に示すように、追加試験すべき正規化されたTPSのポイント(1701)は、追加試験すべき実際のTPS(1702)に、それぞれ対応することになる。すなわち、追加試験すべき実際のTPSの集合をAとすると、
A = { 51, 54.4, 57.8, 62.05, 64.6, 67.15, 73.1, 76.5, 79.9 }
となる。
【００６７】
これらのTPSとなるポイントにおいて追加の試験を行うこととなるが、所望のTPSのポイントにおける負荷試験を行うためには、特許文献１、特許文献２、特許文献３で挙げた特開2005-63222や特開2004-362490にある方法を利用しても良いし、計測結果から追加試験すべき仮想ユーザ数を推定し、負荷発生手段(102)に与える方法でも良い。
【００６８】
後者の場合は、まず、図8に示す実際の計測結果より、仮想ユーザ数(801)とそのときのTPS(802)の関係を求めて、図18に示すような軌跡を得る。次に、この軌跡から、追加試験が必要な仮想ユーザ数を推定する。図18では、追加試験すべき実際のTPSが57.8の場合(1801)に、仮想ユーザ数としてはおおよそ72と推定される(1802)ことを示している。この方法を用いた場合は、最終的に図19の1902に示すような追加試験すべき仮想ユーザ数が得られる。
【００６９】
後者の、仮想ユーザ数を指定するケースで追加の負荷試験をした結果を図20、および、図21に示す。図20において、2001は、801で示した仮想ユーザ数に、上記で算出した追加の負荷試験を行う仮想ユーザ数を追加したものを表している（ここで、仮想ユーザ数91の場合は、既に計測を実施済みである。このようなケースは、スケジューリング手段(105)において、自動的に追加試験の対象から外すようにする）。また、2002は、2001の仮想ユーザ数で負荷をかけたときのTPSの計測結果を表しており、2003は、応答時間の計測結果、2004はCPU利用率の計測結果を表している。網掛けの部分の行が、追加の負荷試験の計測結果を表している。また、図21は、図20におけるTPS(2002)を横軸にとり、応答時間の計測結果(2003)を縦軸にとった場合の、負荷特性グラフを表している。追加の負荷試験を行うことにより、図8の計測結果では負荷特性の詳細が分かりにくかった部分(2101)について、詳細な計測結果が採れている。
【００７０】
次に、本発明の第二の実施形態について、図面を用いて詳細に説明する。図22に第二の実施形態のシステム構成を示す。図1に示すシステム構成に、新たに計測ポイント確認・入力手段(2207)を加えている。
【００７１】
第二の実施形態の作用について述べる。図5のステップ504において、スケジューリング手段(105)から、計測ポイント確認・入力機能(2207)を介して、図8、および、図9に示すような計測結果を、負荷テスターに表示するようにする。負荷テスターは、その示された計測結果を目視することにより、追加で負荷試験すべき計測ポイントを指示する。指示された計測ポイントは、計測ポイント確認・入力機能(2207)を介して、スケジューリング手段(105)に伝えられる。
【図面の簡単な説明】
【００７２】
【図１】本発明の自動負荷試験装置の全体の構成を示すシステム構成図である。
【図２】本発明の自動負荷試験装置による負荷試験の条件を示す図である。
【図３】本発明の自動負荷試験装置による負荷試験の計測結果を示す表である。
【図４】本発明の自動負荷試験装置が対象システムから受け取るリソースの使用状況を示す図である。
【図５】本発明の自動負荷試験装置の動作を示すフローチャートである。
【図６】図５のステップ５０３の処理を詳細に示すフローチャートである。
【図７】図５のステップ５０４の処理を詳細に示すフローチャートである。
【図８】図６に示す処理を実行した際の計測結果を示す表である。
【図９】図６に示す処理を実行した際の負荷特性を示すグラフである。
【図１０】図８に示したＣＰＵ利用率とＴＰＳとの関係を示すグラフである。
【図１１】図８に示した計測結果を正規化した表である。
【図１２】図１１に示したＴＰＳと応答時間の関係の近似式を得て、各ＴＰＳにおける曲率半径を求めた結果を示す表である。
【図１３】図１２のＴＰＳと応答時間、ＴＰＳと曲率半径の関係を示すグラフである。
【図１４】図１２に示した隣り合う２つの仮想ユーザ数と、それに対応する正規化されたＴＰＳの区間と、その区間での曲率半径の平均値を示す表である。
【図１５】図１に示したスケジューリング手段(105)に用意されており、予め設定された曲率半径の範囲と、その範囲のときの正規化されたＴＰＳの推奨の刻み幅との対応を示す表である。
【図１６】図１５に示す刻み幅の推奨値１５０２を参照して、それぞれの区間で追加の負荷試験を行うべき仮想ユーザ数を計算した結果を示す表である。
【図１７】図１６に示した追加試験すべき正規化されたＴＰＳのポイントに対応する、追加試験すべき実際のＴＰＳを示す表である。
【図１８】図８に示した計測結果のデータに基づき、仮想ユーザ数とＴＰＳとの関係を示したグラフである。
【図１９】図１８に基づき推定された追加試験すべき仮想ユーザ数を示す表である。
【図２０】図１９に示した仮想ユーザ数を指定して追加の負荷試験をした結果を示す表である。
【図２１】図２０に示したＴＰＳと応答時間の関係を示すグラフである。
【図２２】本発明の第二の実施例である自動負荷試験装置の全体の構成を示すシステム構成図である。
【符号の説明】
【００７３】
１０１      条件入力手段
１０２      負荷発生手段
１０３      結果収集手段
１０５      スケジューリング手段
２２０７    計測ポイント確認・入力手段
【図１】
2008234407.tif 000003
【図２】
2008234407.tif 000004
【図３】
2008234407.tif 000005
【図４】
2008234407.tif 000006
【図５】
2008234407.tif 000007
【図６】
2008234407.tif 000008
【図７】
2008234407.tif 000009
【図８】
2008234407.tif 000010
【図９】
2008234407.tif 000011
【図１０】
2008234407.tif 000012
【図１１】
2008234407.tif 000013
【図１２】
2008234407.tif 000014
【図１３】
2008234407.tif 000015
【図１４】
2008234407.tif 000016
【図１５】
2008234407.tif 000017
【図１６】
2008234407.tif 000018
【図１７】
2008234407.tif 000019
【図１８】
2008234407.tif 000020
【図１９】
2008234407.tif 000021
【図２０】
2008234407.tif 000022
【図２１】
2008234407.tif 000023
【図２２】
2008234407.tif 000024