(57)【特許請求の範囲】
【請求項１】
オンラインシステムの実運用システムの電文情報に基づいてテストシナリオを生成するテストシナリオ生成装置であって、
前記電文情報に基づいて、前記実運用システムにおける取引の開始時刻および第１の終了時刻を前記取引に対応するセッションのセッション情報として抽出する電文情報解析部、
抽出したセッション情報を、前記オンラインシステムをテストするために設定した、前記セッションの重なりである多重度を所定時間継続し、前記第１の終了時刻が遅い順序になるように並べ替え、並べ替えた第２の終了時刻と前記第１の終了時刻との差分を時刻補正値として算出したテストシナリオ編集情報を生成する編集情報生成部、
前記セッション情報に含まれる前記電文情報の送信時刻を、前記テストシナリオ編集情報に含まれる前記時刻補正値で補正したテストシナリオを生成するテストシナリオ編集部を有することを特徴とするテストシナリオ生成装置。
【請求項２】
請求項１記載のテストシナリオ生成装置において、
前記取引に対応するセッションは、前記実運用システムにクライアント装置およびサーバ装置を含み、前記クライアント装置における前記取引に対応した、前記サーバ装置へのログオンからログオフまで、および、前記ログオンから前記取引を確定させる前記電文情報送信までのいずれか一方であることを特徴とするテストシナリオ生成装置。
【請求項３】
請求項２記載のテストシナリオ生成装置において、
予め設定した前記オンラインシステムのテストシナリオ抽出条件に基づいて、前記セッション情報からテストシナリオとして再利用するセッション情報を抽出するテスト対象抽出部を有し、前記編集情報生成部は、再利用する前記セッション情報を並べ替えることを特徴とするテストシナリオ生成装置。
【請求項４】
請求項３記載のテストシナリオ生成装置において、前記テストシナリオ抽出条件は、前記オンラインシステムのユースケースシナリオ、前記オンラインシステムのユーザ、および前記電文情報の送信時間帯の少なくとも一つを含むことを特徴とするテストシナリオ生成装置。
【請求項５】
請求項４記載のテストシナリオ生成装置において、前記ユースケースシナリオは、前記クライアント装置の表示画面の遷移で表すことを特徴とするテストシナリオ生成装置。
【請求項６】
オンラインシステムの実運用システムの電文情報に基づいてテストシナリオを生成するテストシナリオ装置におけるテストシナリオ生成方法であって、前記テストシナリオ装置は、
前記電文情報に基づいて、前記実運用システムにおける取引の開始時刻および第１の終了時刻を前記取引に対応するセッションのセッション情報として抽出し、
抽出したセッション情報を、前記オンラインシステムをテストするために設定した、前記セッションの重なりである多重度を所定時間継続し、前記第１の終了時刻が遅い順序になるように並べ替え、並べ替えた第２の終了時刻と前記第１の終了時刻との差分を時刻補正値として算出したテストシナリオ編集情報を生成し、
前記セッション情報に含まれる前記電文情報の送信時刻を、前記テストシナリオ編集情報に含まれる前記時刻補正値で補正したテストシナリオを生成することを特徴とするテストシナリオ生成方法。
【請求項７】
請求項６記載のテストシナリオ生成方法において、
前記取引に対応するセッションは、前記実運用システムにクライアント装置およびサーバ装置を含み、前記クライアント装置における前記取引に対応した、前記サーバ装置へのログオンからログオフまで、および、前記ログオンから前記取引を確定させる前記電文情報送信までのいずれか一方であることを特徴とするテストシナリオ生成方法。
【請求項８】
請求項７記載のテストシナリオ生成方法において、前記テストシナリオ装置は、
予め設定した前記オンラインシステムのテストシナリオ抽出条件に基づいて、前記セッション情報からテストシナリオとして再利用するセッション情報を抽出し、再利用する前記セッション情報を並べ替えることを特徴とするテストシナリオ生成方法。
【請求項９】
請求項８記載のテストシナリオ生成方法において、前記テストシナリオ抽出条件は、前記オンラインシステムのユースケースシナリオ、前記オンラインシステムのユーザ、および前記電文情報の送信時間帯の少なくとも一つを含むことを特徴とするテストシナリオ生成方法。
【請求項１０】
請求項９記載のテストシナリオ生成方法において、前記ユースケースシナリオは、前記クライアント装置の表示画面の遷移で表すことを特徴とするテストシナリオ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オンラインシステムの負荷テストのテストシナリオを生成するテストシナリオ生成装置および方法に関する。
【背景技術】
【０００２】
金融取引システムやチケット販売システムのようなオンラインシステムのテストでは、あらかじめ作成したテストシナリオを利用して、テスト作業の一部が自動化されている。オンラインシステムのテストシナリオは、クライアント装置からサーバ装置への要求電文とサーバ装置からクライアント装置への応答電文の対を少なくとも一つ含む処理を1単位として、これが繰り返されたものとして構成される。テストシナリオは手作業でも作成できるが、手間がかかるため、実運用システムから取得した電文の履歴情報を用いて、テストシナリオが生成される。
【０００３】
実運用システムの電文情報からテストシナリオを生成する技術が特許文献１に記載されている。特許文献１には、「第１の情報システムへの要求データの送信履歴に基づき、少なくとも２つのセッションが少なくとも一部の時間において並行して進行する送信スケジュールを決定し、送信スケジュールに従って複数種の要求データを試験対象の第２の情報システムに送信するため、第１の情報システムへの要求データに基づき、第１の情報システムにかかっていた負荷よりも高い負荷をかけた試験を第２の情報システムに対して行うことができる。」と記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９０２３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
計算機、ＯＳ、ミドルウェアの性能や機能の向上に伴って、オンラインシステムでは、計算機そのもののリプレース、ＯＳやミドルウェアのバージョンアップなどが実施される。このような場合に、オンラインシステムとしての金融取引やチケット販売の機能は変わらないので、そのためのアプリケーション（プログラム）は継続利用されることが多い。
【０００６】
このようにアプリケーションの実行環境が変わった場合のオンラインシステムの負荷テストにおいては、性能限界を確認するために、複数のクライアント装置からサーバ装置への、各取引における複数の要求電文の時間的な重なり、すなわち多重度が重要なテスト条件になる。また、オンラインシステムでは、取引順序を保つことが制約条件となる。
【０００７】
特許文献１では、「少なくとも２つのセッションが少なくとも一部の時間において並行して進行する送信スケジュールを決定する」ので、多重度は考慮されているものの、オンラインシステムを性能限界に近いところで運用するための多重度までは考慮されていない。また、特許文献１では、セッションの開始時刻順に送信スケジュールを決定している。
【課題を解決するための手段】
【０００８】
開示するテストシナリオ生成装置は、実運用システムの電文情報に基づいて、実運用システムにおける取引の開始時刻および第１の終了時刻を取引に対応するセッションのセッション情報として抽出する電文情報解析部、抽出したセッション情報を、オンラインシステムをテストするために設定した、セッションの重なりである多重度を所定時間継続し、第１の終了時刻が遅い順序になるように並べ替え、並べ替えた第２の終了時刻と第１の終了時刻との差分を時刻補正値として算出する編集情報生成部、セッション情報に含まれる電文情報の送信時刻を、時刻補正値で補正したテストシナリオを生成するテストシナリオ編集部を有する。
【発明の効果】
【０００９】
開示するテストシナリオ生成装置によれば、一連の取引の中で最後に送信される要求電文の順序が変わらないという制約下で、実運用システムの稼動実績以上の多重度を満たすテストシナリオを生成できる。
【図面の簡単な説明】
【００１０】
【図１】テストシナリオ生成装置を含むシステム構成図である。
【図２】テストシナリオ生成装置の処理概要を表すフローチャートである。
【図３】電文情報解析部の処理フローチャートである。
【図４】編集情報生成部の処理フローチャートである。
【図５】編集情報生成部１０４の処理フローチャートである。
【図６】実運用システムの電文情報の例である。
【図７Ａ】実運用システムの処理シーケンスの例である。
【図７Ｂ】テスト条件に対応した処理シーケンスの例である。
【図８】ユースケースシナリオの例である。
【図９】電文情報解析結果の例である。
【図１０】テストシナリオ生成装置のレジスタの状態遷移の例である。
【図１１】テストシナリオ編集情報の例である。
【発明を実施するための形態】
【００１１】
図１は、テストシナリオ生成装置１０１を含むシステム構成図である。テストシナリオ生成装置１０１は、実運用システムの電文情報を読込・解析する電文情報解析部１０２、テストシナリオとして再利用する部分を抽出するテスト対象抽出部１０３、抽出した解析結果からテストシナリオ編集情報を生成する編集情報生成部１０４、および、電文情報を編集してテストシナリオを生成するテストシナリオ編集部１０５を有する計算機である。
【００１２】
実運用システムは、クライアント装置１０８およびサーバ装置１１０を含む。クライアント装置１０８は、テストシナリオに従って要求電文１１１を生成・送信し、サーバ装置１１０からの応答電文１１２を受信する計算機である。サーバ装置１１０は、クライアント装置１０８からの要求電文１１１を受信し、要求電文１１１に対する応答電文１１２を送信する計算機である。
【００１３】
テストシナリオ生成装置１０１、クライアント装置１０８、および、サーバ装置１１０の各々を構成する計算機は、プログラムに従って動作する制御・演算部と、データ、ファイル、およびプログラムを記憶し、制御・演算部からアクセス可能な記憶部と、他の計算機とネットワークなどを介してデータやファイルを送受信する通信部（図示略）と、ユーザからの指示を受け付ける入力部と、さらに、制御・演算部の処理結果などを出力する出力部とを有する。プログラムに従って、制御・演算部が記憶部内のデータやファイルにアクセスして動作する。
【００１４】
テストシナリオは、テストの目的に合わせて生成される。例えば、機能テストでは、ユースケースシナリオを網羅する観点でテストシナリオを作成する。ユースケースシナリオとは、ユーザの１作業手順であり、１業務が完結する一連の画面遷移として表される。非機能テストでは、性能や信頼性を確認する観点から、ユースケースシナリオの組合せ、ユーザ数、スループットといった非機能条件を変えたテストシナリオを作成する。
【００１５】
本実施形態では、オンラインシステムの非機能テストの一つである負荷テストを対象とし、一連の取引業務の中で取引を確定させる要求電文の送信順序が変わらないという制約下で、オンラインシステムの性能限界を確認するために、少なくとも実運用システムの稼動実績以上の、要求電文の多重度のテストシナリオを生成する。一連の取引業務とは、クライアント装置１０８からサーバ装置１１０へのログインからログオフまでに処理される業務であり、取引を確定させる要求電文とは、一般にクライアント装置１０８への取引内容の確認画面の表示に対して、「確認」や「ＯＫ」などの肯定応答に応じて送信される要求電文である。送信順序が変わらないとは、複数のクライアント装置１０８からの取引を確定させる要求電文の、サーバ装置１１０における受信順序を変えないという意味である。取引は、確定時刻と共に確定した取引内容がデータベースに反映される。
【００１６】
オンラインシステムの負荷テストにおいて、実運用システムから取得した電文情報を読み込み、ユースケースシナリオ、ユーザ、取引開始時刻、取引終了時刻といった稼動履歴をセッション（後述）単位で集計し、ユースケースシナリオ、ユーザおよび取引時間帯を条件にテストシナリオとして再利用する稼動履歴の部分をセッション単位（厳密には後述）で抽出し、抽出したセッション情報を多重度が一定、かつ、取引終了時刻が遅い順序になるように並べ替え、並べ替えた取引終了時刻と実運用システムの稼動履歴に含まれる取引終了時刻との差分を時刻補正値として算出し、電文情報の送信時刻をセッション単位で編集してテストシナリオを生成する。
【００１７】
図６は、実運用システムの電文情報２０３の例である。電文情報２０３は、実運用システムのクライアント装置１０８からサーバ装置１１０に送信された要求電文１１１の履歴情報である。電文情報２０３は、時刻６０１、セッションID６０２、画面ID６０３、ユーザID６０４、および電文本体６０５を含む。電文情報２０３は、クライアント装置１０８またはサーバ装置１１０からネットワーク１０７を介して、テストシナリオ作成装置１０１の記憶部に格納される。図６に示す例は、ユーザID６０４が1001のユーザ（セッションID602が１）と1028のユーザ（セッションID602が２）の要求電文１１１の履歴情報である。ユーザID６０４が1001のユーザは、9:00:49に取引を確定させる要求電文１１１を送信し、9:00:56にログオフしている。テストシナリオとして必要な履歴情報は、厳密には、ログオンから取引を確定させる要求電文１１１の送信時刻までである。ここでは、取引を確定させる要求電文１１１の送信からログオフまでの時間が、ログオンからログオフまでの時間に比べて短いと仮定して、ログオンからログオフまでの時間をセッション時間と呼び、その間の処理の管理単位をセッションと呼ぶ。したがって、１セッションは、一つの業務（例えば、取引業務）に対応する。ログオンからログオフまでをセッションとしたのは、取引を確定させる要求電文１１１の判別を省略し、テストシナリオの生成を簡単にするためである。ログオンの時刻が取引開始時刻（以下、開始時刻）であり、ログオフの時刻が取引終了時刻（以下、終了時刻）である。
【００１８】
図７Ａ及び図７Ｂは、要求電文１１１の処理シーケンスの例であり、横軸を時刻として、要求電文１１１の送信時刻をセッション単位で表した模式図である。模式図では、長方形がセッションを表し、丸点は要求電文を表す。前述のように、各セッションの最後の要求電文１１１がログオフを表す。
【００１９】
図７Ａは、実運用システムでの処理シーケンスを表し、セッション１〜セッション６までの６つのセッションがある。各セッションにおいて複数の電文が送信され、セッションの開始時刻、終了時刻、および要求電文の送信間隔は、クライアント装置108を操作するユーザに依存するので、一様ではない。セッションが並行して進行する多重度は１〜３の範囲を変動している。これらは図６に例示した電文情報２０３を表し、さらにセッション３〜６（図６では省略）を加えたものである。
【００２０】
図７Ｂは、多重度３を所定時間（ここでは、9:01〜9:02）継続させることを負荷条件（テスト条件）として、図７Ａの実運用システムでの処理シーケンスを変換した処理シーケンスである。なお、各セッション内の要求電文１１１の送信間隔は、実運用システムの電文情報（要求電文の送信間隔）と同じである。
【００２１】
図８は、振り込みなどの金融取引を対象としたユースケースシナリオ２０２の例である。ユースケースシナリオ２０２は、ユースケースシナリオID８０１、ユースケースシナリオ名８０２、および画面ID遷移リスト８０３を含む。画面ID遷移リスト８０３は、要求電文１１１の送信時にクライアント装置１０８が表示している画面（図６の画面ID603）の遷移を表す。この例の場合のクライアント装置１０８は、たとえば、ＡＴＭ（自動現金取引装置）である。なお、オンラインシステムのテスト作業者は、ユースケースシナリオ２０２を事前に定義し、テストシナリオ生成装置１０１の記憶部に格納しておく。
【００２２】
図９は、後述する電文情報解析部１０２による電文情報解析結果２０４の例である。電文情報解析結果２０４は、各セッションに対応して、セッションID９０１、開始時刻９０２、終了時刻９０３、ユースケースシナリオID９０４、およびユーザID９０５を含む。たとえば、セッションID９０１が１のセッションは、ユーザID９０５が1001のユーザによりユースケースシナリオID９０４が001（図８に示す振込）の処理が、開始時刻９０２（2014-07-18 9:00:13）から終了時刻９０３（2014-07-18 9:00:56）までの間で実行されたことを表す。
【００２３】
図１０は、テストシナリオ生成装置１０１のレジスタ（レジスタ１〜３）の状態遷移の例である。テストシナリオ生成装置１０１は複数のレジスタを有し、各レジスタは、セッションID、開始時刻、終了時刻、時刻補正値、および排他フラグを含む。図中、時刻の単位を省略しているが、分：秒とする。また、図中、Ｓ１、Ｓ２、・・・は、各レジスタの状態を表す。時刻補正値、排他フラグ、およびレジスタの状態遷移については後述する。なお、レジスタは、テストシナリオ生成装置１０１にあるデータレジスタであってもよいし、記憶部に設けた領域でもよい。
【００２４】
図１１は、テスト情報生成部１０４が生成し、テストシナリオ編集部１０４が電文の送信時刻を編集するために用いるテストシナリオ編集情報２０６の例である。テストシナリオ編集情報２０６は、セッションID１１０１、開始時刻１１０２、終了時刻１１０３、および時刻補正値１１０４を含む。
【００２５】
図２は、テストシナリオ生成装置１０１の処理概要を表すフローチャートである。テストシナリオ生成装置１０１は、ユースケースシナリオ２０２および実運用システムの電文情報２０３を基にして、電文情報解析部１０２、テスト対象抽出部１０３、編集情報生成部１０４、および、テストシナリオ編集部１０５の順に処理を実行し、テストシナリオ２０７を出力する。
【００２６】
図３は、電文情報解析部１０２の処理フローチャートである。電文情報解析部１０２は、テストシナリオ生成装置１０１の記憶部に格納されているユースケースシナリオ２０２を読み込む（ステップ３０１）。電文情報解析部１０２は、テストシナリオ生成装置１０１の記憶部に格納されている電文情報２０３を読み込む（ステップ３０２）。
【００２７】
電文情報解析部１０２は、電文情報２０３を、セッションID６０２を第１キー、時刻６０１を第２キーに指定して、ソートする（ステップ３０３）。結果は、全体として、セッションID６０２の順にソートされ、各セッションID６０２内の要求電文１１１は時刻６０１の順にソートされる。
【００２８】
電文情報解析部１０２は、電文情報２０３の未処理（ステップ３０５〜３０７の処理が未処理）の行（レコード）のうち、先頭行を取得する（ステップ３０４）。電文情報解析部１０２は、電文情報２０３がセッションIDでソートされているので、セッションIDが変わる前まで逐次的に（時刻順に）レコードを取得し、セッションID６０２と画面ID６０３の遷移リストとを対応させた組合せデータである<セッションID, List[画面ID]>を生成する（ステップ３０５）。電文情報解析部１０２は、生成した<セッションID, List[画面ID]>のList[画面ID]がユースケースシナリオ２０２の画面ID遷移リスト８０３の内容に同じである、<セッションID６０２, ユースケースシナリオID８０１>の対応関係を生成する（ステップ３０６）。
【００２９】
電文情報解析部１０２は、生成した<セッションID６０２、ユースケースシナリオID８０１>をセッションID９０１およびユースケースシナリオID９０４とし、ステップ３０３でソートしたセッションID６０２が示すセッション先頭行の時刻６０１を開始時刻９０２、セッションID６０２が示す最終行の時刻６０１を終了時刻９０３、セッションID６０２が示すセッションを実行したユーザのユーザID６０４をユーザID９０５とした、電文情報解析結果２０４を、テストシナリオ生成装置１０１の記憶部に出力する（ステップ３０７）。電文情報解析部１０２がステップ３０４〜ステップ３０７の処理を実行することにより、１つのセッション情報が電文情報解析結果２０４として得られる。
【００３０】
電文情報解析部１０２は、ソートした電文情報２０３に未処理の行があるかどうかをチェックする（ステップ３０８）。未処理の行があれば、ステップ３０４に戻り、未処理の行が無ければ、電文情報解析部１０２は、処理を終了する（ステップ３０９）。
【００３１】
図２の説明に戻る。テスト対象抽出部１０３は、テストシナリオ装置１０１の入力部から、ユーザが設定したテストシナリオ抽出条件を入力して、電文情報解析部１０２が生成した電文情報解析結果２０４からテストシナリオ抽出条件に合致するレコードを抽出し、抽出したレコードを抽出後解析結果２０５として出力する（ステップ１０３）。なお、抽出後解析結果２０５は、電文情報解析結果２０４と同様の項目を持つ。テストシナリオ抽出条件には、電文の送信時間帯、ユースケースシナリオID、または、ユーザIDを含む。テストシナリオ抽出条件が設定されなければ、抽出後解析結果２０５は電文情報解析結果２０４と同じである。以下の処理の例示では、抽出後解析結果２０５が電文情報解析結果２０４と同じであるとして説明する。
【００３２】
図４は、編集情報生成部１０４の処理フローチャートである。編集情報生成部１０４は、テストシナリオ装置１０１の入力部から、ユーザが設定したオンラインシステムの負荷としての多重度を入力する（ステップ４０１）。編集情報生成部１０４は、抽出後解析結果２０５を読み込む（ステップ４０２）。編集情報生成部１０４は、読み込んだ抽出後解析結果２０５を、終了時刻９０３（抽出後解析結果２０５は、電文情報解析結果２０４と同様の項目を持つので、電文情報解析結果２０４の符号を用いて説明する。）をキーにして降順でソートする（ステップ４０３）。
【００３３】
編集情報生成部１０４は、入力した多重度に等しい数のレジスタをテストシナリオ装置１０１に確保する（ステップ４０４）。レジスタは、図１０を用いて説明した項目を有する。編集情報生成部１０４は、レジスタを初期化する（ステップ４０５）。編集情報生成部１０４による初期化は、ソートした抽出後解析結果２０５の先頭行に格納された終了日時をレジスタの終了日時にセットし、レジスタのその他の項目には0をセットする。排他フラグは、0のときOFF、1のときONとする。
【００３４】
編集情報生成部１０４は、抽出後解析結果２０５の未処理（ステップ４０７〜４１１又は４１４の処理が未処理）の行（レコード）のうち、先頭行を取得する（ステップ４０６）。
【００３５】
編集情報生成部１０４は、排他フラグがOFFのレジスタを検索し（ステップ４０７）、検索したレジスタの排他フラグをONに変更する（ステップ４０８）。編集情報生成部１０４は、排他フラグをONにしたレジスタの終了時刻とステップ４０６で読み込んだレコードの終了時刻との差分（Tg）を計算する（ステップ４０９）。編集情報生成部１０４は、排他フラグをONにしたレジスタの値を更新する（ステップ４１０）。セッションIDは、ステップ４０６で読み込んだレコードのセッションIDとする。開始時刻は、ステップ４０６で読み込んだレコードの開始時刻９０２に差分(Tg)を加算した値とする。時刻補正値は差分(Tg) とする。編集情報生成部１０４は、確保した全てのレジスタについて排他フラグがONかどうかをチェックし（ステップ４１１）、排他フラグがOFFのレジスタがあれば、ステップ４０６に戻る。
【００３６】
編集情報生成部１０４は、確保した全てのレジスタの開始時刻を比較し、開始時刻が最も遅いレジスタの値をテストシナリオ編集情報２０６として、テストシナリオ生成装置１０１の記憶部に出力する（ステップ４１２）。
【００３７】
編集情報生成部１０４は、ステップ４１２で選択したレジスタの、終了時刻をその開始時刻の値で更新する（ステップ４１３）。編集情報生成部１０４は、ステップ４１２で選択したレジスタの排他フラグをOFFにする（ステップ４１４）。編集情報生成部１０４は、抽出後解析結果２０５の未処理の行があるかをチェックし（ステップ４１５）、未処理の行があれば、ステップ４０６に戻る。編集情報生成部１０４は、排他フラグがONである全てのレジスタの値をテストシナリオ編集情報２０６として出力する（ステップ４１６）。レジスタの出力順序は問わない。編集情報生成部１０４は処理を終了する。
【００３８】
図１０は、すでに説明したように、テストシナリオ編集情報２０６の生成における、レジスタの状態遷移の例である。多重度およびそれに対応するレジスタ数を“３”として説明する。なお、入力情報となる抽出後解析結果２０５については、テスト対象抽出部１０３が図９に例示する電文情報解析結果２０４を全て抽出したものとして説明する。レジスタはＳ１からＳ１１まで１ステップずつ状態遷移する。
【００３９】
状態Ｓ１は、編集情報生成部１０４がステップ４０１〜ステップ４０５を実行し、各レジスタを初期化した状態である。なお、編集情報生成部１０４がステップ４０３でソート処理を実行した結果、抽出後解析結果２０５のレコードは、セッションIDが６、５、４、１、３、２という順序で並んでいる。
【００４０】
状態Ｓ２は、状態Ｓ１において、編集情報生成部１０４がステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の１行目であるセッションIDが６のレコードを処理し、レジスタ１を更新した状態である。
【００４１】
状態Ｓ３は、状態Ｓ２において、編集情報生成部１０４がステップ４１１を実行すると、排他フラグがOFFのレジスタ２があるのでステップ４０６に戻り、ステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の２行目であるセッションIDが５のレコードを処理し、レジスタ２を更新した状態である。
【００４２】
状態Ｓ４は、状態Ｓ３において、編集情報生成部１０４がステップ４１１を実行すると、排他フラグがOFFのレジスタ３があるので、ステップ４０６に戻り、ステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の３行目であるセッションIDが４のレコードを処理し、レジスタ３(１００３)を更新した状態である。
【００４３】
状態Ｓ５は、状態Ｓ４において、編集情報生成部１０４がステップ４１１を実行すると、確保した全てのレジスタの排他フラグがONなので、ステップ４１２〜ステップ４１４を実行し、開始日時が最も遅いレジスタ１(１００１)の値をテストシナリオ編集情報２０６として出力し、レジスタ１を更新した状態である。
【００４４】
状態Ｓ６は、状態Ｓ５において、編集情報生成部１０５がステップ４１５を実行すると、抽出後解析結果２０５に未処理の行があるのでステップ４０６に戻り、ステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の４行目であるセッションIDが１のレコードを処理し、レジスタ１を更新した状態である。
【００４５】
状態Ｓ７は、状態Ｓ６において、編集情報生成部１０４がステップ４１１〜ステップ４１４を実行し、開始時刻が最も遅いレジスタ３(１００３)の値をテストシナリオ編集情報２０６として出力し、レジスタ３を更新した状態である。
【００４６】
状態Ｓ８は、状態Ｓ７において、編集情報生成部１０５がステップ４１５を実行すると、抽出後解析結果２０５に未処理の行があるのでステップ４０６に戻り、ステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の５行目であるセッションIDが３のレコードを処理し、レジスタ３を更新した状態である。
【００４７】
状態Ｓ９は、状態Ｓ８において、編集情報生成部１０４がステップ４１１〜ステップ４１４を実行し、開始時刻が最も遅いレジスタ２の値をテストシナリオ編集情報２０６として出力し、レジスタ２を更新した状態である。
【００４８】
状態Ｓ１０は、状態Ｓ９において、編集情報生成部１０５がステップ４０６に戻り、ステップ４０６〜ステップ４１０を実行し、抽出後解析結果２０５の６行目であるセッションIDが２のレコードを処理し、レジスタ２を更新した状態である。
【００４９】
状態Ｓ１１は、状態Ｓ１０において、編集情報生成部１０４がステップ４１１〜ステップ４１４を実行し、開始時刻が最も遅いレジスタ３(１００３)の値をテストシナリオ編集情報２０６として出力し、レジスタ３(１００３)を更新した状態である。
【００５０】
状態Ｓ１０において、編集情報生成部１０４がステップ４１５を実行すると、抽出後解析結果２０５に未処理の行がないので、ステップ４１６〜ステップ４１７を実行し、排他フラグがONになっているレジスタ１およびレジスタ２の値をテストシナリオ編集情報２０６として出力し、編集情報生成部１０４は処理を終了する。
【００５１】
以上のように、編集情報生成部１０４は、レジスタの状態を遷移させることにより、図１１に例示するテストシナリオ編集情報２０６を生成する。
【００５２】
図５は、テストシナリオ編集部１０５の処理フローチャートである。テストシナリオ編集部１０５は、が編集情報生成部１０４の生成したテストシナリオ編集情報２０６を読み込む（ステップ５０１）。テストシナリオ編集部１０５は、テストシナリオ生成装置１０１の記憶部に格納されている電文情報２０３を読み込む（ステップ５０２）。
【００５３】
テストシナリオ編集部１０５は、テストシナリオ編集情報２０６をセッションID１１０１の昇順でソートし（ステップ５０３）、電文情報２０３をセッションID６０３の昇順でソートする（ステップ５０４）。
【００５４】
テストシナリオ編集部１０５は、ソートしたテストシナリオ編集情報２０６およびソートした電文情報２０３の各々の先頭行を取得する（ステップ５０５）。取得した各々の先頭行をXおよびYとして図示し、説明する。テストシナリオ編集部１０５は、ソートしたテストシナリオ編集情報２０６およびソートした電文情報２０３の両方が終わるまで、ステップ５０７からステップ５１２までをループする（ステップ５０６、ステップ５１３）。
【００５５】
テストシナリオ編集部１０５は、取得したテストシナリオ編集情報２０６のレコード（X）と取得した電文情報２０３のレコード（Y）のセッションIDの値を比較する（ステップ５０７）。XのセッションID＜YのセッションIDの場合、テストシナリオ編集部１０５はステップ５０８へ進む。XのセッションID＝YのセッションIDの場合、テストシナリオ編集部１０５はステップ５０９へ進む。XのセッションID＞YのセッションIDの場合、テストシナリオ編集部１０５はステップ５１２へ進む。
【００５６】
テストシナリオ編集部１０５は、テストシナリオ編集情報２０６のXの次のレコードを取得し、Xとする（ステップ５０８）。
【００５７】
テストシナリオ編集部１０５は、Yの時刻６０１にXの時刻補正値１１０４を加算することにより、Yの時刻６０１を更新する（ステップ５０９）。テストシナリオ編集部１０５は、時刻を更新したレコードYをテストシナリオ２０７として、テストシナリオ生成装置１０１の記憶部に格納する。なお、テストシナリオ２０７は電文情報２０３と同様の項目を持つ。テストシナリオ編集部１０５は、電文情報２０３のYの次のレコードを取得し、Yとする（ステップ５１１）。
【００５８】
テストシナリオ編集部１０５は、電文情報２０３のYの次のレコードを取得し、Yとする（ステップ５１２）。
【００５９】
テストシナリオ編集部１０５は、ループ条件を抜けるまで（ソートしたテストシナリオ編集情報２０６およびソートした電文情報２０３の両方が終わるまで）、ステップ５０６に戻る（ステップ５１３）。
【００６０】
テストシナリオ編集部１０５は、テストシナリオ２０７を時刻の昇順でソートし（ステップ５１４）、処理を終了する。
【００６１】
本実施形態によれば、オンラインシステムの負荷を多重度とした負荷テストにおいて、実運用システムから取得した電文情報に基づいて、ユースケースシナリオ、ユーザ、取引開始時刻、取引終了時刻といった稼動履歴をセッション単位で集計し、ユースケースシナリオ、ユーザおよび取引時間帯を条件項目にしてテストシナリオとして再利用する部分をセッション単位で抽出し、抽出したセッション情報を設定した多重度を所定時間継続し、終了時刻が遅い順序になるように並べ替え、実運用システムの稼動履歴に含まれる取引終了時刻との差分を時刻補正値として算出し、時刻補正値で補正した電文情報の送信時刻をセッション単位で編集する。これにより、オンラインシステムの負荷テストを対象とし、一連の取引の中で最後に送信される要求電文の順序が変わらないという制約下で、実運用システムの稼動実績以上の多重度を満たすテストシナリオを生成できる。
【符号の説明】
【００６２】
１０１…テストシナリオ生成装置、１０２…電文情報解析部、１０３…テスト対象抽出部、１０４…編集情報生成部、１０５…テストシナリオ編集部。
【図１】
0006295186.tif 000002
【図２】
0006295186.tif 000003
【図３】
0006295186.tif 000004
【図４】
0006295186.tif 000005
【図５】
0006295186.tif 000006
【図６】
0006295186.tif 000007
【図７Ａ】
0006295186.tif 000008
【図７Ｂ】
0006295186.tif 000009
【図８】
0006295186.tif 000010
【図９】
0006295186.tif 000011
【図１０】
0006295186.tif 000012
【図１１】
0006295186.tif 000013