(57)【特許請求の範囲】
【請求項１】
クライアント端末からの要求として受信した入力電文を用いてアプリケーションの処理を実行することによって前記入力電文に対応する出力電文を生成し、生成した前記出力電文を前記クライアント端末に送信するとともに、前記入力電文と前記出力電文とを出力する処理手段と、
前記処理手段から取得した前記入力電文を蓄積するとともに、前記処理手段から取得した前記出力電文を対応する前記入力電文と紐付けて蓄積するデータ格納手段と、
前記データ格納手段から前記入力電文を取得し、取得した前記入力電文を用いてテスト入力電文を自律的に生成し、生成した前記テスト入力電文を前記処理手段に出力する自律学習型テスト手段とを備え、
前記処理手段は、
前記自律学習型テスト手段から取得した前記テスト入力電文を用いてアプリケーションの処理を実行することによって前記テスト入力電文に対応するテスト出力電文を生成し、生成した前記テスト出力電文と前記テスト入力電文とを前記データ格納手段に出力し、
前記データ格納手段は、
前記処理手段から取得した前記テスト出力電文と、前記テスト出力電文に対応する前記入力電文とを紐付けて蓄積するデータ処理システム。
【請求項２】
同一の電文に対応する前記出力電文および前記テスト出力電文を前記データ格納手段から取得し、取得した前記出力電文と前記テスト出力電文とを比較するテスト結果比較手段を備え、
前記テスト結果比較手段は、
アプリケーションのテストにおいて、
比較した前記出力電文と前記テスト出力電文とが一致した場合、前記テストが正常終了したものと判定し、
比較した前記出力電文と前記テスト出力電文とが一致しなかった場合、前記テストにエラーがあったものと判定する請求項１に記載のデータ処理システム。
【請求項３】
前記自律学習型テスト手段は、
前記データ格納手段から前記入力電文を抽出する期間を指定するとともに、指定した期間に蓄積された前記入力電文を抽出する抽出期間指定手段と、
前記抽出期間指定手段によって抽出された前記入力電文から前記テスト入力電文を生成する第１テスト電文生成手段と、
前記データ格納手段に格納された全ての前記入力電文、または前記抽出期間指定手段によって抽出された前記入力電文を基に異なる前記入力電文同士の類似性を調べるとともに、前記入力電文のうち類似性を見出したものに対しては同じアプリケーションの処理が実行されたものと判断して同じテストパターンとみなし、同じとみなした前記テストパターンの受信回数を記録し、前記受信回数の多い順に前記テストパターンを並べる順位付け手段と、
受信回数で順位づけされた前記入力電文のうち、上位何位までの入力電文に対して前記テストを実行するのかを設定する上位ランキングテスト抽出手段と、
前記上位ランキングテスト抽出手段によって抽出された前記入力電文から前記テスト入力電文を生成する第２テスト電文生成手段と、
前記第１テスト電文生成手段および前記第２テスト電文生成手段によって生成された前記テスト入力電文を前記処理手段に対して送信する送信手段とを有する請求項２に記載のデータ処理システム。
【請求項４】
前記入力電文の処理を要求として前記処理手段に送信するクライアント端末を備える請求項１乃至３のいずれか一項に記載のデータ処理システム。
【請求項５】
前記データ格納手段は、
前記入力電文を格納する入力電文蓄積手段と、
前記出力電文を対応する前記入力電文と紐付けて格納する出力電文蓄積手段と、
前記テスト出力電文を対応する前記テスト入力電文と紐付けて記録するテスト出力結果記録手段とを有し、
前記テスト結果比較手段は、
前記出力電文蓄積手段および前記テスト出力結果記録手段を参照し、同じとみなされる前記入力電文に対応する前記出力電文および前記テスト出力電文を比較する請求項２または３に記載のデータ処理システム。
【請求項６】
前記処理手段は、
前記入力電文、前記出力電文、前記テスト入力電文および前記テスト出力電文を含む電文を送受信する通信制御手段と、
前記電文を用いてアプリケーションの処理を実行するアプリケーション実行手段とを備え、
前記通信制御手段は、
前記クライアント端末から前記入力電文を受信し、受信した前記入力電文を前記アプリケーション実行手段に送信するリクエスト送信手段と、
前記アプリケーション実行手段から受信した前記入力電文に対応する前記出力電文を受信し、前記クライアント端末に前記出力電文を送信する応答送信手段と、
前記クライアント端末から受信した前記入力電文を前記データ格納手段に送信する入力電文送信手段と、
前記アプリケーション実行手段から受信した前記出力電文を前記データ格納手段に送信する出力電文送信手段と、
前記自律学習型テスト手段によって生成された前記テスト入力電文を受信するテスト電文受信手段と、
受信した前記テスト入力電文を前記アプリケーション実行手段に送信するテスト電文送信手段と、
前記アプリケーション実行手段から受信した前記テスト出力電文を前記データ格納手段に出力するテスト結果出力手段とを備える請求項４に記載のデータ処理システム。
【請求項７】
クライアント端末からの要求として入力電文を受信し、
受信した前記入力電文を用いてアプリケーションの処理を実行することによって前記入力電文に対応する出力電文を生成し、
生成した前記出力電文を前記クライアント端末に送信し、
前記入力電文とともに、前記出力電文を対応する前記入力電文と紐付けて蓄積し、
前記入力電文を用いてテスト入力電文を自律的に生成し、
前記テスト入力電文を用いてアプリケーションの処理を実行することによって前記テスト入力電文に対応するテスト出力電文を生成し、
生成した前記テスト出力電文と、前記テスト出力電文に対応する前記入力電文とを紐付けて蓄積するデータ処理方法。
【請求項８】
同一の電文に対応する前記出力電文と前記テスト出力電文とを比較し、
アプリケーションのテストにおいて、
比較した前記出力電文と前記テスト出力電文とが一致した場合、前記テストが正常終了したものと判定し、
比較した前記出力電文と前記テスト出力電文とが一致しなかった場合、前記テストにエラーがあったものと判定する請求項７に記載のデータ処理方法。
【請求項９】
クライアント端末からの要求として入力電文を受信する処理と、
受信した前記入力電文を用いてアプリケーションの処理を実行することによって前記入力電文に対応する出力電文を生成する処理と、
生成した前記出力電文を前記クライアント端末に送信する処理と、
前記入力電文とともに、前記出力電文を対応する前記入力電文と紐付けて蓄積する処理と、
前記入力電文を用いてテスト入力電文を自律的に生成する処理と、
前記テスト入力電文を用いてアプリケーションの処理を実行することによって前記テスト入力電文に対応するテスト出力電文を生成する処理と、
生成された前記テスト出力電文と、前記テスト出力電文に対応する前記入力電文とを紐付けて蓄積する処理とをコンピュータに実行させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのテストデータを生成するデータ処理システム、データ処理方法およびデータ処理プログラムに関する。特に、リグレッションテストの自動化を実現するデータ処理システム、データ処理方法およびデータ処理プログラムに関する。
【背景技術】
【０００２】
近年、ソフトウェア開発において、開発と運用との連携・協力を深め、より高品質なソフトウェアを確実かつ迅速に構築することを重視するＤｅｖＯｐｓが着目されている（ＤｅｖＯｐｓ：ＤｅｖｅｌｏｍｅｎｔとＯｐｅｒａｔｉｏｎｓとを基に作成された造語）。ＤｅｖＯｐｓを実現するためには、テスト工程におけるテスト中であっても、リグレッションテストの自動化が重要である。
【０００３】
これまでは、基盤となるアプリケーションサーバやアプリケーション、ＯＳのモジュールを置換する際などに、ユーザアプリケーションの動作が変わらないことを手動のリグレッションテストで証明していた（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）。しかしながら、ビックデータのように莫大な量のデータを取り扱うアプリケーションにおいては、手動のレグレションテストを適用し続けるのには限界がある。自動化されたリグレッションテストを提供している製品もあるが、テストパターンは限られており、最適化・効率化されたテストを自動で実施することができないのが現状である。
【０００４】
特許文献１には、テスト入力データと出力データとを記録し、記録したテスト入力データを基に何度でも同じテストを自動で実行することができるソフトウェアのテスト方法について開示されている。特許文献１のテスト方法においては、当初のソフトウェアに対して行ったテスト内容を電子ファイルとして格納しておく。そして、ソフトウェアがバージョンアップされた際に、格納したテスト内容を使って、バージョンアップされたソフトウェアに対して同様のテストを自動的に行う。しかしながら、特許文献１では、一度行ったテストを自動化することについては開示されているが、テスト入力データを増やす仕組みについては開示されていない。
【０００５】
特許文献２には、手動で入力された入力データを基にテストケース（既存テストケース）を生成し、既存テストケースのテスト入力データから生成させた新たなテスト入力データを用いて新たなるテストケースを生成するテストデータ生成装置が開示されている。特許文献２によれば、テストを自動化するだけではなく、テストケース自体を自動的に増やす仕組みが提供される。すなわち、特許文献２は、特許文献１では開示されていなかったテストケース自体を自動的に増やす仕組みについて開示されている。
【０００６】
特許文献３には、アクセスの都度受け付けるパラメータの名前が変化するＷｅｂアプリケーションに対するテストを自動化するテスト基盤装置が開示されている。特許文献３のテスト基盤装置は、アプリケーションからのレスポンスに含まれるパラメータの名前と値を抽出すると、置換対象と判断されたパラメータの名前を任意の名前と値に置換して保持するとともに、置換されたパラメータをテストツールに送信する。次に、テスト基盤装置は、テストツールからのリクエストに含まれるパラメータのうち置換対象と判断されたものに対し、保持されたパラメータの置換前後の名前と値に基づいて、パラメータの名前および値もしくは名前を復元する。そして、テスト基盤装置は、復元されたパラメータの名前と値をアプリケーションに送信する。
【０００７】
特許文献４には、ウェブ・アプリケーションのソフトウェアテストにおけるテストケースを自動的に生成する情報処理装置について開示されている。特許文献４の情報処理装置は、ウェブ・アプリケーションのサーバ・コードを解析し、サーバ・コードから抽出されたリソース識別子パターンに適合するイベント・シーケンスの発見を試みる。そして、情報処理装置は、イベント・シーケンスが見つかると、クライアント・コードから構築されるクライアント状態を取り込み、全てのクライアント状態上でイベント・シーケンスを実行し、リソース識別子を含むテストケースを生成する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０８−２１２１０８号公報
【特許文献２】特開２００９−１６３６０９号公報
【特許文献３】特開２０１０−１１３３８０号公報
【特許文献４】特開２０１１−２３３０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献２のテストデータ生成装置では、実使用環境で起こりうるエラーを想定したテストを実行しているのではないため、テストを効率化することはできないという問題点がある。なぜならば、特許文献２のテストデータ生成装置は、実データに基づくテストケースを生成するのではなく、テスト入力データから生成可能な範囲においてテストケースを増やし、テストのバリエーションを増やしているだけだからである。
【００１０】
引用文献３および引用文献４によれば、実データに基づいてテストケースを自動的に生成することが可能となる。しかしながら、引用文献３および引用文献４の手法では、データの蓄積に応じて変化するアプリケーションの使用環境に対応するように、テスト装置自体が成長していくシステムを構築することはできない。
【００１１】
本発明の目的は、実データに基づいたテストパターンを自律学習により増加させ、運用を続けるほどテスト網羅度を向上させることができるデータ処理システムを提供することである。
【課題を解決するための手段】
【００１２】
本発明のデータ処理システムは、入力電文を用いてアプリケーションの処理を実行することによって入力電文に対応する出力電文を生成し、入力電文と出力電文とを出力する処理手段と、処理手段から取得した入力電文を蓄積するとともに、処理手段から取得した出力電文を対応する入力電文と紐付けて蓄積するデータ格納手段と、データ格納手段から入力電文を取得し、取得した入力電文を用いてテスト入力電文を自律的に生成し、生成したテスト入力電文を処理手段に出力する自律学習型テスト手段とを備え、処理手段は、自律学習型テスト手段から取得したテスト入力電文を用いてアプリケーションの処理を実行することによってテスト入力電文に対応するテスト出力電文を生成し、生成したテスト出力電文とテスト入力電文とをデータ格納手段に出力し、データ格納手段は、処理手段から取得したテスト出力電文と、テスト出力電文に対応する入力電文とを紐付けて蓄積する。
【００１３】
本発明のデータ処理方法においては、入力電文を用いてアプリケーションの処理を実行することによって入力電文に対応する出力電文を生成し、入力電文とともに、出力電文を対応する入力電文と紐付けて蓄積し、入力電文を用いてテスト入力電文を自律的に生成し、テスト入力電文を用いてアプリケーションの処理を実行することによってテスト入力電文に対応するテスト出力電文を生成し、生成したテスト出力電文と、テスト出力電文に対応する入力電文とを紐付けて蓄積する。
【００１４】
本発明のデータ処理プログラムは、入力電文を用いてアプリケーションの処理を実行することによって入力電文に対応する出力電文を生成する処理と、入力電文とともに、出力電文を対応する入力電文と紐付けて蓄積する処理と、入力電文を用いてテスト入力電文を自律的に生成する処理と、テスト入力電文を用いてアプリケーションの処理を実行することによってテスト入力電文に対応するテスト出力電文を生成する処理と、生成されたテスト出力電文と、テスト出力電文に対応する入力電文とを紐付けて蓄積する処理とをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、実データに基づいたテストパターンを自律学習により増加させ、運用を続けるほどテスト網羅度を向上させるデータ処理システムを提供することが可能になる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るテスト環境の概要を示す概念図である。
【図２】本発明の実施形態に係るデータ処理システムの機能構成を示すブロック図である。
【図３】本発明の実施形態に係るデータ処理システムの機能構成を示すブロック図である。
【図４】本発明の実施形態に係るデータ処理システムの通信制御手段の機能構成を示すブロック図である。
【図５】本発明の実施形態に係るデータ処理システムのクライアント端末の機能構成を示すブロック図である。
【図６】本発明の実施形態に係るデータ処理システムの入力電文蓄積手段の機能構成を示すブロック図である。
【図７】本発明の実施形態に係るデータ処理システムの出力電文蓄積手段の機能構成を示すブロック図である。
【図８】本発明の実施形態に係るデータ処理システムのテスト出力結果記録手段の機能構成を示すブロック図である。
【図９】本発明の実施形態に係るデータ処理システムのテスト結果比較手段の機能構成を示すブロック図である。
【図１０】本発明の実施形態に係るデータ処理システムにおける入力電文および出力電文の蓄積に関する動作を説明するためのフローチャートである。
【図１１】本発明の実施形態に係るデータ処理システムにおける入力電文の蓄積に関する動作を説明するためのフローチャートである。
【図１２】本発明の実施形態に係るデータ処理システムの自律学習型テスト手段の動作を説明するためのフローチャートである。
【図１３】本発明の実施形態に係るデータ処理システムのテスト結果比較手段の動作を説明するためのフローチャートである。
【図１４】本発明の実施例１において、テスト優先度テーブルを作成するプロセスを説明するための概念図である。
【図１５】本発明の実施例１において、判定結果テーブルを作成するプロセスを説明するための概念図である。
【発明を実施するための形態】
【００１７】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００１８】
（実施形態）
まず、図１を参照しながら、本発明の実施形態に係るデータ処理システムのテスト環境について説明する。なお、本実施形態においては、任意のアプリケーションを対象として、リグレッションテストを実施することを想定する。
【００１９】
図１は、本発明の実施形態に係るデータ処理システムを含むように構成されるテスト環境１の概略図である。図１を参照すると、テスト環境１は、クライアント側のコンピュータ２やアプリケーション側のサーバ３、ストレージ７などの構成がネットワーク９を介して接続されて構成される。本実施形態に係るデータ処理システムの構成は、テスト環境１の構成のいずれかに搭載される。なお、図１のテスト環境１は、本実施形態に係るデータ処理システムによるリグレッションテストを実行する環境の一例である。そのため、テスト環境１の構成の全てが揃ってない状況であっても、本実施形態に係るデータ処理システムを実現できることができる。
【００２０】
コンピュータ２は、クライアントとなるユーザの操作を受け付ける端末として構築する。コンピュータ２は、パーソナルコンピュータやワークステーションなどのコンピュータ装置として実現される。コンピュータ２は、例えば、中央演算処理装置や主記憶装置、キャッシュ・メモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ネットワークインターフェース、補助記憶装置などのハードウェアを有する。また、コンピュータ２には、ユーザの操作を受け付けるキーボードやタッチパネル、マウスなどの入力機器、操作画面を表示するためのディスプレイなどの表示機器といった周辺機器が接続される。コンピュータ２は、適切なオペレーティングシステムの制御によって動作する。
【００２１】
サーバ３は、テスト対象のアプリケーションを含むアプリケーションサーバとして構築される。サーバ３は、データセンターなどに配置されたパーソナルコンピュータやワークステーション、ラックマウント型やブレード型サーバなどのコンピュータ装置として実現される。サーバ３は、例えば、中央演算処理装置や主記憶装置、キャッシュ・メモリ、ＲＯＭ、ＲＡＭ、ネットワークインターフェース、補助記憶装置などのハードウェアを有する。サーバ３は、適切なオペレーティングシステムの制御によって動作する。
【００２２】
ストレージ７は、アプリケーションやテストの処理結果を格納するデータベースとして構築される。ストレージ７は、例えば、サーバ３やコンピュータ２の内部の補助記憶装置、サーバ３やコンピュータ２の外部のネットワークストレージ機器などとして実現される。なお、サーバ３やコンピュータ２の内部の補助記憶装置としてストレージ７を実現する場合、サーバ３もしくはコンピュータ２とストレージ７とは、ネットワーク９を介さずに、内部バスや接続コードなどによって直接接続される。
【００２３】
ネットワーク９は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどを含むように構成される。実際には、ＬＡＮやＶＰＮ、ＷＡＮといった内部ネットワークが各構成要素と接続される。そして、各構成要素は、内部ネットワークからインターネット経由させて互いに接続される。なお、テスト環境１を構成する各構成要素は、インターネットを介さずに、内部ネットワークを介して接続されるように構成されてもよい。また、各構成要素が直接に接続されるように構成してもよい。また、サーバ３やコンピュータ２の補助記憶装置としてストレージ７を構成する場合は、内部バスや接続コードをネットワーク９の一形態とみなす。
【００２４】
本実施形態において、テスト対象のアプリケーションは、通常、サーバ３上に配置される。なお、テスト対象のアプリケーションがコンピュータ２上に配置されていてもよい。
【００２５】
テスト対象のアプリケ−ションは、適切なサーバ・プログラムを実装し、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いて、コンピュータ２からのＨＴＴＰリクエストを処理するように構成される。テスト対象のアプリケーションは、コンピュータ２からのＨＴＴＰリクエストに応答し、ソース・コードに従って、クライアント・コードを生成し、ＨＴＴＰレスポンスを返す。なお、クライアント・コードには、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）データやＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）データなどが含まれる。また、クライアント・コードは、サーバ・プログラムと、テスト対象のアプリケーションに接続されるストレージ７やインターネット上の他のアプリケーションなどとが連携することによって提供される情報から生成されてもよい。
【００２６】
（構成）
次に、図２〜図９を参照しながら、本発明の実施形態に係るデータ処理システム１０の構成について説明する。
【００２７】
図２を参照すると、本実施形態に係るデータ処理システム１０は、処理手段３０、自律学習型テスト手段５０、データ格納手段７０およびテスト結果比較手段８０を備える。なお、データ処理システム１０を構成する各構成要素は、図示しないネットワーク等を介して互いに接続される。また、テストデータを蓄積していく段階においては、テスト結果比較手段８０の機能は必須ではない。
【００２８】
処理手段３０は、クライアントからの要求（入力電文）を受信してアプリケーションの処理を実行し、クライアントに応答（出力電文）としてアプリケーションの処理結果を送信する。すなわち、処理手段３０は、入力電文を用いてアプリケーションの処理を実行することによって入力電文に対応する出力電文を生成し、生成した入力電文と出力電文とを出力する。また、処理手段３０は、自律学習型テスト手段５０から取得したテスト入力電文を用いてアプリケーションの処理を実行してテスト入力電文に対応するテスト出力電文を生成し、生成したテスト出力電文とテスト入力電文とをデータ格納手段７０に出力する。
【００２９】
自律学習型テスト手段５０は、データ格納手段７０から入力電文を取得し、取得した入力電文を用いてテスト入力電文を自律的に生成し、生成したテスト入力電文を処理手段３０に出力する。
【００３０】
データ格納手段７０は、処理手段３０から取得した入力電文を蓄積するとともに、処理手段３０から取得した出力電文を対応する入力電文と紐付けて蓄積する。また、データ格納手段７０は、処理手段３０から取得したテスト出力電文と、テスト出力電文に対応する入力電文とを紐付けて蓄積する。
【００３１】
テスト結果比較手段８０は、同一の電文に対応する出力電文およびテスト出力電文をデータ格納手段７０から取得し、取得した出力電文とテスト出力電文とを比較する。テスト結果比較手段８０は、アプリケーションのテストにおいて、比較した出力電文とテスト出力電文とが一致した場合、テストが正常終了したものと判定する。一方、テスト結果比較手段８０は、アプリケーションのテストにおいて、比較した出力電文とテスト出力電文とが一致しなかった場合、テストにエラーがあったものと判定する。
【００３２】
さらに、図３のように、本実施形態に係るデータ処理システム１０は、クライアントとして機能するクライアント端末２０を備える構成とすることもできる。クライアント端末２０は、アプリケーションで処理するための電文（入力電文）を要求として処理手段３０に送信し、入力電文を用いて実行されたアプリケーションの処理結果（出力電文）を応答として受信する。
【００３３】
また、図３のように、本実施形態に係るデータ処理システム１０のデータ格納手段７０は、入力電文蓄積手段７１、出力電文蓄積手段７３およびテスト出力結果記録手段７５に機能分割してもよい。入力電文蓄積手段７１、出力電文蓄積手段７３およびテスト出力結果記録手段７５は、データ格納手段７０に含まれる構成である。入力電文蓄積手段７１、出力電文蓄積手段７３およびテスト出力結果記録手段７５は、それぞれ別々のハードウェアに実装してもよいし、同一のハードウェアに実装してもよい。
【００３４】
＜自律学習型テスト手段＞
図３を参照すると、自律学習型テスト手段５０は、抽出期間指定手段５１、第１テスト電文生成手段５２、順位付け手段５３、上位ランキングテスト抽出手段５４、第２テスト電文生成手段５５、送信手段５６を有する。
【００３５】
抽出期間指定手段５１は、入力電文蓄積手段７１に蓄積された入力電文を抽出する期間を指定するとともに、指定した期間に蓄積された入力電文を抽出する機能をもつ。抽出期間指定手段５１によって指定される期間は、例えば、実際にシステムが運用された期間のうちから選択すればよい。
【００３６】
第１テスト電文生成手段５２は、指定された期間において抽出された入力電文からテスト電文（以下、テスト入力電文）を生成する機能をもつ。
【００３７】
順位付け手段５３は、入力電文蓄積手段７１に蓄積された全ての入力電文または抽出期間指定手段５１が抽出した一部データを基に、入力電文の類似性を調べる機能をもつ。さらに、順位付け手段５３は、類似している電文に対しては同じアプリケーションが実行されたものと判断して同じテストパターンとみなし、同じとみなしたテストパターンの受信回数を記録して回数の多い順にテストパターンを並び替える機能をもつ。
【００３８】
上位ランキングテスト抽出手段５４は、受信回数で順位づけされた入力電文のうち、何位までの入力電文に対してテストを実行するのかを設定する機能をもつ。
【００３９】
第２テスト電文生成手段５５は、上位ランキングテスト抽出手段５４が抽出した入力電文からテスト入力電文を生成する機能をもつ。
【００４０】
送信手段５６は、第１テスト電文生成手段５２および第２テスト電文生成手段５５が生成したテスト入力電文を通信制御手段３１に対して送信する機能をもつ。
【００４１】
自律学習型テスト手段５０は、例えば、図１のサーバ３に搭載することができる。その場合、自律学習型テスト手段５０は、処理手段３０と同じサーバ３に搭載すればよい。
【００４２】
また、サーバ３とは異なるサーバに自律学習型テスト手段５０を搭載してもよい。その場合、サーバ３とネットワーク９との間や、ネットワーク９を介してサーバ３と接続されるように自律学習型テスト手段５０を配置すればよい。また、自律学習型テスト手段５０は、コンピュータ２に搭載させてもよい。さらに、自律学習型テスト手段５０の各構成要素は、互いに異なるサーバやコンピュータに分散させるように配置してもよい。
【００４３】
＜処理手段＞
図３の通り、処理手段３０は、通信制御手段３１と、アプリケーション実行手段３２とを有するアプリケーションサーバである。
【００４４】
図４には、通信制御手段３１の機能ブロックを図示した。なお、図４には、通信制御手段３１がアプリケーション実行手段３２を取り囲むように描いているが、実際には、通信制御手段３１がアプリケーション実行手段３２を取り囲むように配置されるわけではない。
【００４５】
図４を参照すると、通信制御手段３１は、リクエスト送信手段３１１、応答送信手段３１２、入力電文送信手段３１３、出力電文送信手段３１４、テスト電文受信手段３１５、テスト電文送信手段３１６、テスト結果出力手段３１７を有する。
【００４６】
リクエスト送信手段３１１は、クライアント端末２０からリクエストを受けて、アプリケーション実行手段３２に対してリクエストを送信する機能をもつ。
【００４７】
応答送信手段３１２は、アプリケーション実行手段３２から応答電文を受けて、クライアント端末２０に対して応答を送信する機能をもつ。
【００４８】
入力電文送信手段３１３は、クライアント端末２０から受信した入力電文を入力電文蓄積手段７１に対して送信する機能をもつ。
【００４９】
出力電文送信手段３１４は、アプリケーション実行手段３２から受信した出力電文を出力電文蓄積手段７３に対して送信する機能をもつ。
【００５０】
テスト電文受信手段３１５は、自律学習型テスト手段５０が生成したテスト入力電文を受信する機能をもつ。
【００５１】
テスト電文送信手段３１６は、受信したテスト入力電文をアプリケーション実行手段３２へ送信する機能をもつ。
【００５２】
テスト結果出力手段３１７は、アプリケーション実行手段３２に送信したテスト入力電文に対する応答電文（テスト出力電文）をテスト出力結果記録手段７５に対して出力する機能をもつ。
【００５３】
アプリケーション実行手段３２は、テスト対象のアプリケーションの処理を実行する機能をもつ。
【００５４】
＜クライアント端末＞
図５には、クライアント端末２０の機能ブロックを図示した。なお、図５においては、各機能ブロックの接続関係は省略している。
【００５５】
クライアント端末２０は、電文（入力電文）を処理手段３０に送信するとともに、送信した電文（入力電文）に対応する電文（出力電文）を処理手段３０から受信する。なお、クライアント端末２０が送受信する電文は、状況に応じてパケットや要求（リクエスト）、応答（レスポンス）などのデータとなる。また、クライアント端末２０は、入力電文蓄積手段７１や出力電文蓄積手段７３、テスト出力結果記録手段７５に格納されているデータをディスプレイ等に表示する機能をもつことが好ましい。
【００５６】
クライアント端末２０は、電文送信手段２１と電文受信手段２２とを有する。
【００５７】
電文送信手段２１は、処理手段３０の通信制御手段３１へ電文（入力電文）を送信する機能をもつ。
【００５８】
電文受信手段２２は、処理手段３０の通信制御手段３１が送信した電文（出力電文）を受信する機能をもつ。
【００５９】
＜入力電文蓄積手段＞
図６には、入力電文蓄積手段７１の機能ブロックを図示した。なお、図６においては、各機能ブロックの接続関係は省略している。
【００６０】
図６を参照すると、入力電文蓄積手段７１は、タイマー設定手段７１１、入力電文格納手段７１２、判別手段７１３、電文受信回数記録・表示手段７１４、電文ソート手段７１５を有する。
【００６１】
タイマー設定手段７１１は、データ整理の時間間隔を決めるためにタイマーを設定する機能をもつ。ユーザは、タイマー設定手段７１１を介して、データ整理を実施する時間間隔を任意に設定できる。
【００６２】
入力電文格納手段７１２は、通信制御手段３１から受信した入力電文を時系列で蓄積する機能をもつ。
【００６３】
判別手段７１３は、指定した期間に受信した入力電文に同じ電文が含まれるか否かを判別する機能をもつ。
【００６４】
電文受信回数記録・表示手段７１４は、指定した期間に同じ入力電文が存在する場合、同一とみなされた入力電文の受信回数を記録して表示する機能をもつ。
【００６５】
電文ソート手段７１５は、受信回数順に電文をソートする機能をもつ。
【００６６】
例えば、入力電文蓄積手段７１は、ストレージ７（図１）上に構築することができる。また、入力電文蓄積手段７１は、サーバ３（図１）に含まれる記憶装置上に構築してもよい。例えば、タイマー設定手段７１１、判別手段７１３、電文受信回数記録・表示手段７１４、電文ソート手段７１５についてはサーバ３側に搭載し、入力電文格納手段７１２のみをストレージ７に搭載することができる。さらには、入力電文蓄積手段７１の構成要素のうちいずれかをコンピュータ２に搭載するように構成してもよい。
【００６７】
＜出力電文蓄積手段＞
図７には、出力電文蓄積手段７３の機能ブロックを図示した。なお、図７においては、各機能ブロックの接続関係は省略している。
【００６８】
図７を参照すると、出力電文蓄積手段７３は、出力電文格納手段７３１と、電文紐付け手段７３２とを有する。
【００６９】
出力電文格納手段７３１は、通信制御手段３１から受信した出力電文を蓄積する機能をもつ。出力電文格納手段７３１は、入力電文と、対応する出力電文とを紐付けて蓄積する。
【００７０】
電文紐付け手段７３２は、入力電文蓄積手段７１に記録された入力電文と出力電文とを紐付けする機能をもつ。
【００７１】
例えば、出力電文蓄積手段７３は、ストレージ７（図１）上に構築することができる。また、出力電文蓄積手段７３は、サーバ３（図１）に含まれる記憶装置上に構築してもよい。例えば、電文紐付け手段７３２をサーバ３側に搭載し、出力電文格納手段７３１をストレージ７に搭載することができる。さらには、出力電文蓄積手段７３の構成要素のうちいずれかをコンピュータ２に搭載するように構成してもよい。
【００７２】
＜テスト出力結果記録手段＞
図８には、テスト出力結果記録手段７５の機能ブロックを図示した。なお、図８においては、各機能ブロックの接続関係は省略している。
【００７３】
テスト出力結果記録手段７５は、テスト結果記録手段７５１と、テスト電文紐付け手段７５２とを有する。
【００７４】
テスト結果記録手段７５１は、通信制御手段３１から受信したテスト出力電文を記録する機能をもつ。
【００７５】
テスト電文紐付け手段７５２は、自律学習型テスト手段５０が生成したテスト出力電文を、対応する電文（入力電文）に紐付けする機能をもつ。
【００７６】
例えば、テスト出力結果記録手段７５は、ストレージ７（図１）上に構築することができる。また、テスト出力結果記録手段７５は、サーバ３（図１）に含まれるように構築してもよい。例えば、テスト電文紐付け手段７５２をサーバ３側に搭載し、テスト結果記録手段７５１をストレージ７に搭載することができる。さらには、テスト出力結果記録手段７５の構成要素のうちいずれかをコンピュータ２に搭載するように構成してもよい。
【００７７】
なお、図３、図４、図６〜図８には、入力電文蓄積手段７１と、出力電文蓄積手段７３と、テスト出力結果記録手段７５とを異なるものとして図示しているが、同一のストレージ７（図１）上に構成してもよい。
【００７８】
＜テスト結果比較手段＞
図９には、テスト結果比較手段８０内部の機能ブロックを図示した。なお、図９においては、各機能ブロック間の接続関係は省略している。
【００７９】
テスト結果比較手段８０は、電文比較手段８１と、比較結果出力手段８２とを有する。
【００８０】
電文比較手段８１は、共通の電文（入力電文）に対応する、出力電文蓄積手段７３に記録された出力電文と、テスト出力結果記録手段７５に記録されたテスト出力電文とを比較する機能をもつ。
【００８１】
比較結果出力手段８２は、共通の入力電文に対応する出力電文とテスト出力電文との比較結果を出力する機能をもつ。
【００８２】
テスト結果比較手段８０は、例えば、図１のコンピュータ２に搭載することができる。その場合、比較結果出力手段８２は、比較結果をユーザに知らせる画面をコンピュータ２のディスプレイに表示させればよい。なお、比較結果出力手段８２による出力結果は、ディスプレイ上の表示のみならず、警告音などの音、点滅光などの光、振動などの触覚等を利用して通知するように構成してもよい。
【００８３】
また、テスト結果比較手段８０の電文比較手段８１をサーバ３側に搭載させ、比較結果出力手段８２をコンピュータ２に搭載させてもよい。その場合、処理手段３０とは異なるサーバ環境を構築し、構築されたサーバ環境に電文比較手段８１を搭載させてもよい。なお、電文比較手段８１に加えて比較結果出力手段８２もサーバ３側に搭載させ、比較結果出力手段８２の出力結果のみをコンピュータ２のディスプレイに表示させるように構成してもよい。
【００８４】
以上が、本実施形態に係るデータ処理システムの構成に関する説明である。なお、本実施形態に係るデータ処理システムの構成に別の機能を追加した構成も、本発明の範囲に含まれるものである。また、本実施形態に係るデータ処理システムの構成の一部を削除し、替わりに別の機能を追加することによって同様の機能を発現する構成も、本発明の範囲に含まれるものである。
【００８５】
（動作）
次に、図１０〜図１３のフローチャートを用いて、本実施形態に係るデータ処理システム１０の動作について説明する。なお、以下の説明においては、アプリケーション実行手段３２が通常の業務を実行しながらテスト出力電文の蓄積や、テスト出力電文と出力電文との比較検証を行うことを想定する。
【００８６】
＜電文蓄積処理＞
まず、図１０のフローチャートを参照して、入力電文および出力電文を蓄積する電文蓄積処理のフローを詳細に説明する。
【００８７】
まず、クライアント端末２０は、アプリケーション実行手段３２に対して、アプリケーションの処理の実行をリクエストする（ステップＳ１１）。
【００８８】
処理手段３０の通信制御手段３１がリクエストを受け取ると、通信制御手段３１はアプリケーション実行手段３２にリクエストを送信する。同時に、通信制御手段３１は、入力電文蓄積手段７１に入力電文を送信する（ステップＳ１２）。
【００８９】
アプリケーション実行手段３２は、受信したリクエストに相当するアプリケーションの処理（業務）を実行し、応答としてアプリケーションの処理結果（出力電文）を通信制御手段３１に返却する（ステップＳ１３）。
【００９０】
通信制御手段３１は、アプリケーション実行手段３２から受信した応答電文（出力電文）をクライアント端末２０へ返却する。同時に、通信制御手段３１は、出力電文蓄積手段７３に出力電文を送信する（ステップＳ１４）。
【００９１】
以上が、電文蓄積処理のフローに関する説明である。
【００９２】
以上の電文蓄積処理によれば、業務の本番運用環境において、処理手段３０上で動作するアプリケーション実行手段３２へリクエストが送信されればされるほど、図１０のステップＳ１１〜ステップＳ１４の操作が繰り返し実行される。その結果、入力電文蓄積手段７１および出力電文蓄積手段７３にデータが蓄積されていく。そして、入力電文蓄積手段７１に入力電文が蓄積されるにつれて、自律学習型テスト手段５０は、自律的にテストパターンを学習し、成長していく。
【００９３】
＜入力電文蓄積処理＞
次に、図１１のフローチャートを参照して、入力電文蓄積手段７１による入力電文蓄積処理のフローを詳細に説明する。
【００９４】
まず、タイマー時間を既定値から変更する場合、入力電文蓄積手段７１のタイマー設定手段７１１は、データ整理用タイマーを設定する（ステップＳ２１）。
【００９５】
入力電文蓄積手段７１は、タイマー設定時間が経過するまでは動作せず、時間の経過を待つ（ステップＳ２２）。
【００９６】
タイマー時間経過時点において、入力電文蓄積手段７１は、通信制御手段３１から新規の入力電文を受信しているか否かを確認する（ステップＳ２３）。
【００９７】
新規の入力電文が存在しない場合（ステップＳ２３でＮｏ）、入力電文蓄積手段７１は、ステップＳ２２に戻り、再びタイマー設定時間が経過するのを待つ。
【００９８】
新規の入力電文が存在する場合（ステップＳ２３でＹｅｓ）、入力電文蓄積手段７１の入力電文格納手段７１２は、時系列で入力電文を記録する（ステップＳ２４）。
【００９９】
以上が、入力電文蓄積手段７１による入力電文蓄積処理についての説明である。
【０１００】
＜テスト電文生成処理＞
次に、図１２のフローチャートを参照して、自律学習型テスト手段５０によるテスト電文生成処理のフローを詳細に説明する。
【０１０１】
まず、自律学習型テスト手段５０の抽出期間指定手段５１は、入力電文蓄積手段７１に蓄積されたデータのうち、テストの入力データとする期間を設定する（ステップＳ３１）。すなわち、ユーザは、抽出期間指定手段５１によって、入力電文蓄積手段７１に蓄積されたデータの中から、テストの入力データとする期間を設定することができる。
【０１０２】
ところで、テストの入力データとする期間とは、ユーザによって設定される任意の期間である。例えば、テストの入力データとする期間は、期間の起点と終点を指定することによって設定することができる。
【０１０３】
なお、テストの入力データとする期間の既定値を全期間とする場合、期間を設定せずにステップＳ３１をスキップしてもよい。
【０１０４】
抽出期間指定手段５１は、設定された期間に含まれる入力電文をテスト入力電文として抽出する（ステップＳ３２）。ただし、設定された期間において格納された入力データは、上述の期間に含まれるものと判断される。
【０１０５】
なお、ステップＳ３１で期間が設定されなかった場合、ステップＳ３２はスキップされる。
【０１０６】
ここで、自律学習型テスト手段５０は、ステップＳ３２で抽出された入力電文の全てに対して、テストを実施するか否かを判断する（ステップＳ３３）。
【０１０７】
ステップＳ３２で抽出された入力電文の全てに対してテストを実施する場合（ステップＳ３３でＹｅｓ）、第１テスト電文生成手段５２は、元の入力電文の全てをそのままテスト入力電文とする（ステップＳ３４）。
【０１０８】
一方、ステップＳ３２で抽出された入力電文の全てに対してテストを実施しない場合（ステップＳ３３でＮｏ）、順位付け手段５３が抽出された入力電文に優先度をつけ、一部の入力電文のみに対して、第１テスト電文生成手段５２がテストを実施する。
【０１０９】
まず、順位付け手段５３は、入力電文の類似性を調べる（ステップＳ３５）。
【０１１０】
具体的には、順位付け手段５３は、入力電文からプロトコルヘッダ部分を取り除いてユーザデータ部分の電文のみを取り出し、ユーザデータ部分の電文のみを比較する。そして、順位付け手段５３は、ユーザデータ電文の一部のみが異なる電文であると判定できた場合は、同じアプリケーションが実行されたと判断して同じテストパターンとする。電文一致の判定基準となる数値は、例えば、ユーザによって電文全体の何パーセントが一致するかを指定すればよい。順位付け手段５３は、指定した数値を上回る類似性を検出した場合、比較し合ったテストパターン同士が同じものとしてカウントする。
【０１１１】
順位付け手段５３は、ステップＳ３５で類似性があると判断された電文を同じテストパターンとしてまとめる。そして、順位付け手段５３は、まとめた電文の数を記録するとともに、必要であればその数を表示する（ステップＳ３６）。
【０１１２】
さらに、順位付け手段５３は、ステップＳ３６で記録されたテストパターンの数が多い順にまとめたテストパターンをソートする（ステップＳ３７）。
【０１１３】
上位ランキングテスト抽出手段５４は、ステップＳ３７でソートされたテストパターンから指定された順位までのテストパターンを抽出する（ステップＳ３８）。
【０１１４】
第２テスト電文生成手段５５は、ステップＳ３８で抽出したテストパターンをそのままテスト入力電文とする（ステップＳ３９）。
【０１１５】
送信手段５６は、ステップＳ３４またはステップＳ３９で生成されたテスト入力電文を順次通信制御手段３１に送信する（ステップＳ４０）。
【０１１６】
以上が、自律学習型テスト手段５０によるテスト電文生成処理のフローについての説明である。
【０１１７】
なお、図１２に従った上述のフローでは、上位何位までの評価を実施するかを設定する項目があるが、設定した評価時間内で実行可能な評価を優先度順に時間が許す限り実行するようにしてもよい。また、テストの優先度を自動で決めることが可能であるが、ユーザが優先度を手動で編集することも可能である。
【０１１８】
＜テスト結果比較処理＞
次に、図１３のフローチャートを参照して、テスト結果比較手段８０によるテスト結果比較処理のフローを詳細に説明する。
【０１１９】
まず、出力電文蓄積手段７３は、入力電文と、その入力電文に対応する出力電文との一覧を記録する（ステップＳ４１）。
【０１２０】
テスト出力結果記録手段７５は、テスト入力電文と、そのテスト入力電文に対応するテスト出力電文の一覧を記録する（ステップＳ４２）。
【０１２１】
なお、ステップＳ４１とステップＳ４２とは、並行して処理されてもよいし、連続して処理されてもよい。また、ステップＳ４１およびステップＳ４２の処理は、後続の処理に先立って事前に実行されていてもよい。
【０１２２】
テスト結果比較手段８０の電文比較手段８１は、出力電文蓄積手段７３およびテスト出力結果記録手段７５の出力電文同士を比較する（ステップＳ４３）。
【０１２３】
そして、電文比較手段８１は、出力電文蓄積手段７３およびテスト出力結果記録手段７５の出力電文同士について、一致の有無を判定する（ステップＳ４４）。
【０１２４】
ステップＳ４４で出力電文が一致すると判定された場合（ステップＳ４４でＹｅｓ）、比較結果出力手段８２は、テスト正常終了の記録を残す（ステップＳ４５）。
【０１２５】
ステップＳ４４で出力電文が一致しないと判定された場合ステップＳ４４でＮｏ）、比較結果出力手段８２は、不一致となった入力と出力をエラー表示する（ステップＳ４６）。
【０１２６】
以上が、テスト結果比較手段８０によるテスト結果比較処理のフローについての説明である。
【０１２７】
以上のように、本実施形態に係るデータ処理システムによれば、アプリケーションサーバ上で稼動しているアプリケーションのテストにおいて、リグレッションテスト項目を自動で生成および実行することが可能となる。
【０１２８】
また、本実施形態に係るデータ処理システムでは、リグレッションテスト結果の正誤を自動で判定するだけではなく、テストパターンを自律的に学習して増加させることができる。例えば、入力可能な値のうち実際に入力された値がテストデータとして蓄積されていくとともに、テストの手動生成では想定していないような異常系の入力パターンについてもテストデータとして蓄積されていく。その結果、本番運用を長期間続けるほどテスト網羅度を自動で向上させることができる。
【０１２９】
さらに、本実施形態に係るデータ処理システムによれば、頻繁に実行されるロジックを自動で判別することにより、短時間で効率的なリグレッションテストを実行可能とすることができる。
【０１３０】
また、本実施形態に係るデータ処理システムは、アプリケーションサーバ上で動作するアプリケーションのリグレッションテストを想定して記載している。電文の入出力を記録できる仕組みがあれば、本実施形態の自律学習型テスト手段を利用することは可能である。
【０１３１】
（効果）
以下に、本実施形態に係るデータ処理システムの具体的な効果についてまとめる。
【０１３２】
第一の効果は、アプリケーションの置換などによるリグレッションテストが自動で最適化されているため、評価工数を大幅に削減できることである。
【０１３３】
第二の効果は、テストが自動化されているため、評価漏れや評価ミスがないことである。
【０１３４】
第三の効果は、安定稼働を望むユーザに対して、モジュール置換に対する抵抗を減らすことができることである。
【０１３５】
第四の効果は、テストパターンが自動で最適化されて成長していくため、本番稼働時間が長ければ長いほど、最適化されたテストが提供されることである。
【０１３６】
第五の効果は、自動で蓄積されたデータからテスト項目を自動生成することにより、これまでの関連技術では見落とされていたテスト内容を自動で補えるようになり、テスト網羅度が向上することである。
【０１３７】
これまでは、リグレッションテストパターンを自律的に学習し、リグレッションテストの内容を自動で成長させていくような仕組みはなく、人手を一切介さない完全な自動化された製品は提供されてこなかった。
【０１３８】
本実施形態に係るデータ処理システムでは、テストパターンを自律的に学習する方法として、テストパターンの入力に本番環境で実行されたアプリケーションの入力電文を用いる。そして、入力電文と、入力電文に対する応答である出力電文とを蓄積し、蓄積したデータをリグレッションテストの入力と出力データとする。その結果、リグレッションテストパターンを自律的に学習し、リグレッションテストの内容を自動で成長させていくことが可能となり、人手を介さない自動化された製品を提供することが可能となる。
【０１３９】
また、これまでにも、入力電文をテストパターンの入力とする方法は行われている例はあったが、本番環境での出力電文を活用していく方法はなかった。
【０１４０】
それに対し、本実施形態に係るデータ処理システムでは、本番環境における入力電文と出力電文とを蓄積することにより、リグレッションテストパターンを自律的に学習し、リグレッションテストの内容を自動で成長させていくことが可能となる。
【０１４１】
また、本実施形態に係るデータ処理システムでは、蓄積したデータを解析することにより、頻繁に実行されているアプリケーションを特定し、特定されたアプリケーションで頻繁に利用される入力電文のテスト優先度を高く設定する。その結果、優先度順にリグレッションテストを実施することによって、短時間で効率的なリグレッションテストを実行可能となる。
【０１４２】
さらに、本実施形態に係るデータ処理システムでは、自動的に蓄積されたデータからリグレッションテスト項目を自動生成する。その結果、これまでは見落とされていたリグレッションテスト内容を自動で補えるようになり、リグレッションテスト網羅度が向上される。なお、本実施形態に係るデータ処理システムにおいてリグレッションテストの内容を自動で成長させていくためには、本番環境で一定期間運用し、業務を実行し続けることが効果的である。
【０１４３】
（具体例）
次に、本実施形態に係るデータ処理システムについて、具体例を挙げて説明する。
【０１４４】
本番稼働しているアプリケーションサーバにおいては、入力電文と出力電文のログを記録する設定で運用する。すなわち、処理手段３０は、クライアント端末２０からリクエストを受信する度に、リクエストごとに入力電文と出力電文のログを記録していく。そのため、リクエストが増えれば増えるほど、入力電文と出力電文のログが蓄積されていく。
【０１４５】
例えば、１秒当たり１件のリクエストがある場合、１時間で３６００件、１日で８６４００件、１か月（３０日）で２９５万件のデータが蓄積されることとなる。このような膨大なデータが自律学習型テスト手段５０のテストパターンを形成する材料となる。
【０１４６】
本番稼働しているアプリケーションにおいて、テストの再実行が必要となるのは、主にアプリケーションの修正や改修が入った場合である。
【０１４７】
テストの再実行が必要となった際に、新規機能については手動でテストすることを想定しているが、リグレッションテストに代表される既存機能のテストについては、自動化されたテストを実施することが望ましい。なぜならば、テストが自動化されれば、テスト工数が削減されることによりリリースまでの期間を短くできたり、手動によるテストミスをなくすことにより品質を保証したりする効果があるからである。
【０１４８】
ただし、既存機能全てに対してリグレッションテストを実施することは、時間の制約によって難しい場合がある。そこで、使用頻度の高い機能に優先度付けをするなどしてテストを実行することが望ましい。本実施形態に係るデータ処理システム１０では、入力電文蓄積手段７１によって、使用頻度を電文単位で記録し、使用頻度の高い順に順位付けをすることにより、テストの優先度を自動で決定する仕組みを提供している。
【０１４９】
＜テスト優先度作成方法＞
ここで、図１４を用いて、テストの優先度を記録するテスト優先度テーブル１００を作成する例について説明する。図１４に示した概念図は、入力電文１〜３を自律学習型テスト手段５０で処理することによって、テスト優先度テーブル１００が作成される様子を示す。各入力電文（入力電文１〜３）は、プロトコルヘッダとユーザデータとを含む。ユーザデータには、複数の入力項目に対する入力値が格納されている。
【０１５０】
各入力電文において、「＠」という記号は、次の数値が入力項目であることを示す。そして、「：」という記号は、入力項目と入力値とを区切る記号である。例えば、入力電文１のユーザデータは、入力項目１の入力値がＡＡＡ、入力項目２の入力値がＢＢＢ、入力項目３の入力値がＣＣＣ、入力項目４の入力値がＤＤＤ、入力項目５の入力値がＥＥＥ、・・・であることを示す。
【０１５１】
テスト優先度テーブル１００を作成するためには、入力電文のテストパターンを分析する必要がある。ここでは、入力電文のテストパターンを分析する手法として、以下の３つの方法を挙げる。
【０１５２】
一つ目の方法は、入力項目ごとにキーワードを入力電文に埋め込んでおき、入力電文に埋め込まれたキーワードを元に入力電文を比較する方法である。
【０１５３】
図１４の例では、入力電文のユーザデータの先頭文字からキーワードとなる「＠」を検索し、「＠」が検索にかかったらその次の数値が入力項目となる。また、入力項目と入力値とは「：」で区切られているため、入力項目データを識別できる。入力項目と入力値とのペアを全て抽出し、他の電文と比較することによってテストパターンを分析することができる。
【０１５４】
ただし、一つ目の方法の場合、キーワードを埋め込むことにより電文長が長くなるという欠点がある。
【０１５５】
二つ目の方法は、キーワードを埋め込まず、ユーザデータの先頭文字から一文字ずつ各入力電文を比較していき、比較し合う電文間の類似性を検証する方法である。例えば、比較し合う電文の９０％が一致するなど、高い類似性がある場合に同じテストパターンであると判断する。
【０１５６】
二つ目の方法では、電文長が長くなるという欠点はなくなるが、全文の文字比較に多大な時間がかかる可能性がある。
【０１５７】
三つ目の方法は、大量データに内在する多種多様なパターンや規則性を高速に自動抽出することを可能とするＦＡＢ（Ｆａｃｔｏｒｉｚｅｄ  Ａｓｙｍｐｔｏｔｉｃ  Ｂａｙｅｓｉａｎ）推論技術を利用する方法である。
【０１５８】
ＦＡＢ推論技術を利用すれば、一見不規則なパターンであると思われる多数の電文の中から規則性を見つけることが可能となる。また、パターンから著しく外れた電文を抽出することも可能となるため、効率的にテストパターンを自動生成することができる。
【０１５９】
以上が、入力電文のテストパターンの分析方法についての説明である。
【０１６０】
入力電文蓄積手段７１のデータは、データ整理用タイマーの時間が経過するごとに更新される。そして、その更新されたデータを元にして、自律学習型テスト手段５０はテストパターンと優先度を更新していく。このように、自動で最適なテストパターンを更新する仕組みによる自律学習によって、システムが成長していくことを可能とする。
【０１６１】
＜テスト結果比較方法＞
ここで、図１５を用いて、同一の入力電文に対応する出力電文とテスト出力電文とを比較する方法について説明する。図１５は、出力電文蓄積手段７３が格納する出力電文蓄積テーブル２００と、テスト出力結果記録手段７５が格納するテスト出力結果蓄積テーブル３００の電文をテスト結果比較手段８０によって比較し、判定結果を判定結果テーブル４００として表示する例を示す。なお、判定結果テーブル４００は、テスト結果比較手段８０に格納される。
【０１６２】
例えば、入力電文ａａａに対応する出力電文がＡＡＡとして出力電文蓄積手段７３に記録されているものとする（出力電文蓄積テーブル２００）。アプリケーション実行手段３２が何らかの理由で置換され、リグレッションテストが必要となった場合、自律学習型テスト手段５０は、入力電文ａａａを通信制御手段３１に送信する。通信制御手段３１が受信した入力電文ａａａをアプリケーション実行手段３２に送信すると、アプリケーション実行手段３２は、受信した入力電文ａａａに対して処理を実行し、処理の実行結果をテスト出力結果記録手段７５に出力する。その結果、テスト出力結果記録手段７５にはテスト出力電文が記録される（テスト出力結果蓄積テーブル３００）。
【０１６３】
ここで、テスト出力結果記録手段７５に記録されたテスト出力電文がＡＡＡである場合、出力電文蓄積手段７３に記録された出力結果と、テスト出力結果記録手段７５に記録されたテスト出力電文とが同じ出力となる。すなわち、出力電文蓄積手段７３に記録された出力結果（ＡＡＡ）と、テスト出力結果記録手段７５に記録されたテスト出力電文（ＡＡＡ）とが同じとなる。その結果、テスト結果比較手段８０は、リグレッションテストで問題なしと判断し、合格判定（ＯＫ）を表示する（判定結果テーブル４００）。
【０１６４】
仮に、テスト出力結果記録手段７５に記録されたテスト出力電文がＢＢＢである場合、出力電文蓄積手段７３に記録された出力結果と、テスト出力結果記録手段７５に記録されたテスト出力電文が違う出力となる。すなわち、テスト結果比較手段８０は、出力結果が違うことからリグレッションテストで問題ありと判断し、入力電文と出力電文とを表示し、結果が異なっていることを示し、不合格判定（ＮＧ）を表示する。
【０１６５】
図１５の例では、入力電文ｂｂｂに対応する出力電文（ＢＢＢ）とテスト出力電文（ＢＢＢ）も一致しているため、合格判定（ＯＫ）が表示される（判定結果テーブル４００）。
【０１６６】
一方、入力電文ｃｃｃに対応する出力電文（ＣＣＣ）とテスト出力電文（ＤＥＦ）とは異なる。そのため、テスト結果比較手段８０は、入力電文ｃｃｃに対しては不合格判定（ＮＧ）を表示する（判定結果テーブル４００）。
【０１６７】
以上が、同一の入力電文に対応する出力電文とテスト出力電文とを比較する方法についての説明である。
【０１６８】
（関連技術）
これまでにも、リグレッションテストを自動化してリグレッションテスト工数を削減する製品は提供されてきた。例えば、アプリケーションサーバ上で稼動しているアプリケーションのリグレッションテストのテスト項目を自動で生成・実行し、テスト結果の正誤を自動で判定することにより、リグレッションテストを自動化することはできる。また、自動で生成したリグレッションテスト項目を手動で編集して別のテストパターンの評価をする仕組みは存在した。
【０１６９】
しかしながら、これまでは、リグレッションテスト項目を自動で生成するために、手動で作成されたテスト仕様書などの入力データが必要であったため、自動で生成できるリグレッションテスト項目数は限られていた。すなわち、リグレッションテスト項目を増やすためには、手動での編集作業が必要であり、リグレッションテスト項目数を増やすのに多大な工数がかかっていた。
【０１７０】
また、入力データの作成を手動で行う場合、テスト設計者が想定するテストケースしか作成することができず、本番環境で発生する想定外のテストを実施することはできなかった。
【０１７１】
そのため、多数のリグレッションテスト項目を、手動ではなく、全て自動で作成することにより、リグレッションテスト項目を増やすのに必要だった工数を削減することが求められていた。また、本番環境で発生する想定外のテストケースを作成する方法の提供が求められていた。
【０１７２】
本発明の実施形態に係るデータ処理システムは、多数のリグレッションテスト項目を自動で作成することができ、リグレッションテスト項目を増やすことに割く工数を削減することを可能とする。また、本番環境で運用しながらテストデータを蓄積していくことが可能となるため、本番環境で発生する想定外のテストケースを作成することが可能となる。
【０１７３】
本発明の実施形態に係るデータ処理システムにおけるデータ処理方法に従った処理は、本実施形態に係る処理を実行するデータ処理プログラムを含むソフトウェアによって実現することが可能である。また、本発明の実施形態に係るデータ処理プログラムを格納したプログラム記録媒体も本発明の範囲に含まれる。プログラム記録媒体としては、ＲＯＭ、ＲＡＭ、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスクなどを挙げることができる。
【０１７４】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１７５】
１    テスト環境
２    コンピュータ
３    サーバ
７    ストレージ
９    ネットワーク
１０    データ処理システム
２０    クライアント端末
２１    電文送信手段
２２    電文受信手段
３０    処理手段
３１    通信制御手段
３２    アプリケーション実行手段
５０    自律学習型テスト手段
５１    抽出期間指定手段
５２    第１テスト電文生成手段
５３    順位付け手段
５４    上位ランキングテスト抽出手段
５５    第２テスト電文生成手段
５６    送信手段
７１    入力電文蓄積手段
７３    出力電文蓄積手段
７５    テスト出力結果記録手段
８０    テスト結果比較手段
８１    電文比較手段
８２    比較結果出力手段
１００    テスト優先度テーブル
２００    出力電文蓄積テーブル
３００    テスト出力結果蓄積テーブル
４００    判定結果テーブル
７１１    タイマー設定手段
７１２    入力電文格納手段
７１３    判別手段
７１４    電文受信回数記録・表示手段
７１５    電文ソート手段
７３１    出力電文格納手段
７３２    電文紐付け手段
７５１    テスト結果記録手段
７５２    テスト電文紐付け手段
【図１】
0006439309.tif 000002
【図２】
0006439309.tif 000003
【図３】
0006439309.tif 000004
【図４】
0006439309.tif 000005
【図５】
0006439309.tif 000006
【図６】
0006439309.tif 000007
【図７】
0006439309.tif 000008
【図８】
0006439309.tif 000009
【図９】
0006439309.tif 000010
【図１０】
0006439309.tif 000011
【図１１】
0006439309.tif 000012
【図１２】
0006439309.tif 000013
【図１３】
0006439309.tif 000014
【図１４】
0006439309.tif 000015
【図１５】
0006439309.tif 000016