(57)【特許請求の範囲】
【請求項１】
コンピュータを、
表示手段の画面上にテスト対象アプリケーションソフトウェアの画面が表示されてから前記テスト対象アプリケーションソフトウェア上の登録に関するボタン押下までの間である所定期間内に入力された複数の入力データ、前記入力データを入力された前記テスト対象アプリケーションソフトウェアが出力した出力データ並びに前記入力データ及び出力データと関連性を有する関連データを記憶手段から取得し、前記入力データの出現回数、並びに特定の画面項目に対する前記入力データと同一のデータが前記出力データ及び前記関連データに出現する出現回数をそれぞれ画面項目名ごとに計数し、画面項目名ごとに計数結果を集計し、集計結果が最大となる画面項目名の入力データを変更の対象となる対象データとして決定する対象データ決定手段、
前記対象データを記録したレコードを前記関連データから特定し、特定したレコード以外のレコードから該対象データが属するカラムに記録されている値を取得するデータ取得手段、
前記データ取得手段において取得された値を前記入力データとして記憶手段に格納する入力データ格納手段、
として機能させるためのデータ生成プログラム。
【請求項２】
前記データ取得手段は、前記対象データを記録したレコード及び該対象データの該レコードにおけるカラムを前記関連データから特定できなかった場合に、前記対象データをそのデータの一部が異なる近似データに加工し、
前記入力データ格納手段は、前記近似データを前記入力データとして記憶手段に格納することを特徴とする請求項１に記載のデータ生成プログラム。
【請求項３】
表示手段の画面上にテスト対象アプリケーションソフトウェアの画面が表示されてから前記テスト対象アプリケーションソフトウェア上の登録に関するボタン押下までの間である所定期間内に入力された複数の入力データ、前記入力データを入力された前記テスト対象アプリケーションソフトウェアが出力した出力データ並びに前記入力データ及び出力データと関連性を有する関連データを記憶手段から取得し、前記入力データの出現回数、並びに特定の画面項目に対する前記入力データと同一のデータが前記出力データ及び前記関連データに出現する出現回数をそれぞれ画面項目名ごとに計数し、画面項目名ごとに計数結果を集計し、集計結果が最大となる画面項目名の入力データを変更の対象となる対象データとして決定する対象データ決定手段と、
前記対象データを記録したレコードを前記関連データから特定し、特定したレコード以外のレコードから該対象データが属するカラムに記録されている値を取得するデータ取得手段と、
前記データ取得手段において取得された値を前記入力データとして記憶手段に格納する入力データ格納手段と、
を有することを特徴とするデータ生成装置。
【請求項４】
表示手段の画面上にテスト対象アプリケーションソフトウェアの画面が表示されてから前記テスト対象アプリケーションソフトウェア上の登録に関するボタン押下までの間である所定期間内に入力された複数の入力データ、前記入力データを入力された前記テスト対象アプリケーションソフトウェアが出力した出力データ並びに前記入力データ及び出力データと関連性を有する関連データを記憶手段から取得し、前記入力データの出現回数、並びに特定の画面項目に対する前記入力データと同一のデータが前記出力データ及び前記関連データに出現する出現回数をそれぞれ画面項目名ごとに計数し、画面項目名ごとに計数結果を集計し、集計結果が最大となる画面項目名の入力データを変更の対象となる対象データとして決定する第１の手順と、
前記対象データを記録したレコードを前記関連データから特定し、特定したレコード以外のレコードから該対象データが属するカラムに記録されている値を取得する第２の手順と、
前記第２の手順において取得された値を前記入力データとして記憶手段に格納する第３の手順と、
を有することを特徴とするデータ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェア等に対するテスト用のデータを生成する技術に関し、特に、より多くのテストパターンを含むデータを生成する技術に関する。
【背景技術】
【０００２】
アプリケーションソフトウェア（以下、単にアプリケーションという。）やこれを組み合わせて構築されたコンピュータシステムでは、顧客に対する納品の前に、例えば単体テスト、統合テストやシステムテスト等、種々のテストを行うことが知られている。これらのテストは、一般に、テストの種々の手順（テストパターン）を記載したテスト仕様書に則って、テスト用のデータ（以下、テストデータという。）を用いて行われることが多い。
【０００３】
上述したテストデータを効率的に生成する技術も知られている。例えば、テストデータがスクリプト言語として用意されると、テストデータの類型（バリエーション）を増加させる際、テストデータの該当箇所のみを変更すればよいため、効率的である。また、特許文献１は、システム仕様や設計書に記載の入力項目のデータ長、文字データの種類やデータ範囲等の情報を元にしてテストデータを生成することを開示する。
【０００４】
【特許文献１】特開２００６−１１３９９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上述したスプリクト言語を用いたテストデータの増加は、手入力により行われるため、テストの規模が大きくなるにつれてその作業量が増加する。したがって、テストパターンに漏れが生じたり、重複したテストパターンが生成されたりする可能性がある。また、上述した特許文献１に開示される技術は、ソースコードや設計情報を利用しなければ、テスト用のデータを生成することができない。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、ソースコード等を利用せずに、より多くのテストパターンのテストデータを生成するデータ生成プログラム、データ生成装置及びデータ生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本明細書開示のデータ生成プログラム、データ生成装置及びデータ生成方法は、まず、表示手段の画面上にテスト対象アプリケーションソフトウェアの画面が表示されてからテスト対象アプリケーションソフトウェア上の登録に関するボタン押下までの間である所定期間内に入力された複数の入力データ、入力データを入力されたテスト対象アプリケーションソフトウェアが出力した出力データ並びに入力データ及び出力データと関連性を有する関連データを記憶手段から取得し、入力データの出現回数、並びに特定の画面項目に対する入力データと同一のデータが出力データ及び関連データに出現する出現回数をそれぞれ画面項目名ごとに計数し、画面項目名ごとに計数結果を集計し、集計結果が最大となる画面項目名の入力データを変更の対象となる対象データとして決定する。そして、対象データを記録したレコードを関連データから特定し、特定したレコード以外のレコードから該対象データが属するカラムに記録されている値を取得する。この値を入力データとして記憶手段に格納する。
【０００８】
これによれば、表示画面上の入力データ、その入力データに応じた出力データ、記憶手段内に記憶されるデータの中で、最も多く出現する値を派生元として、その値と異なる値を含むデータが順次派生していく。
【発明の効果】
【０００９】
本明細書に開示のデータ生成プログラム、データ生成装置及びデータ生成方法によれば、ソースコード等を利用せずに、より多くのテストパターンのテストデータが生成される。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。尚、本実施形態で扱うテスト対象アプリケーションは、一例として、Ｗｅｂ上で行われるいわゆるインターネットショッピングに関するアプリケーションについて説明する。
【００１１】
図１は実施形態に係るデータ生成装置１０の要部構成を例示する機能ブロック図、図２は種々のテーブルを示す図、図３はデータ生成装置１０のハードウェア構成を例示する機能ブロック図である。
【００１２】
データ生成装置１０は、図１に示すように、データ記憶部１１、対象データ決定部１２、データ取得部１３、アプリケーション実行部１４及び出力結果判定部１５、入力データ格納部１６等から構成される。
【００１３】
データ記憶部１１は、表示手段の画面（例えばＷｅｂブラウザ）上に入力された入力データ、入力データ入力されたテスト対象アプリケーションが出力した出力データ並びに入力データ及び出力データと関連性を有する関連データを記憶する。表示手段としては、例えば、液晶ディスプレイやＣＲＴディスプレイ等がある。
【００１４】
上述した関連データは、図２に示すように、例えば、得意先テーブル（同図（ａ））、商品テーブル（同図（ｂ））、受注明細テーブル（同図（ｃ））及び受注テーブル（同図（ｄ））等の各テーブルに分けられて構成される。これらのテーブル以外を含んでいてもよい。これらのテーブルは、データ生成装置１０を利用する利用者により予め記憶させておけばよい。
【００１５】
得意先テーブルは、得意先コード、得意先名、得意先の住所及び電話番号等のデータで構成される。得意先コードは得意先を識別するための識別情報である。尚、得意先は、本実施形態に係るデータ生成装置を利用する利用者の一例である。
商品テーブルは、商品コード、商品名、単価及び在庫数等で構成される。商品コードは、得意先を識別するための識別情報である。
受注明細テーブルは、受注番号、商品コード、受注数量及び受注金額等で構成される。受注番号は、得意先により商品が購入された際に、その購入の記録を識別するための情報である。
受注テーブルは、更新日時、受注番号、得意先コード及び受注合計金額等で構成される。
【００１６】
これらの各種関連データのうち、得意先テーブルに関する関連データ及び商品テーブルに関する関連データは、アプリケーションの動作をテストする者（テスト担当者）により、予めデータ記憶部１１に記憶される。一方、受注明細テーブルに関する関連データ及び受注テーブルに関する関連データは、アプリケーションが実行されることによりデータ記憶部１１に記憶される。
【００１７】
対象データ決定部１２は、入力データ、出力データ及び関連データをデータ記憶部１１から取得する。その後、入力データの出現回数を画面項目名ごとに計数し、画面項目名ごとの入力データと同一の値である同一データの、出力データ及び関連データ内における出現回数をそれぞれ画面項目名ごとに計数し、同じ画面項目名ごとの計数結果を集計し、集計結果が最大となる画面項目名の入力データを変更の対象となる対象データとして決定する。
【００１８】
データ取得部１３は、対象データを記録したレコード及び該対象データの該レコードにおけるカラムを関連データから特定し、該関連データの該レコード以外のレコードから該対象データと同一のカラムに記録されている値等を取得する。
入力データ格納部１６は、データ取得部１３において取得された値を入力データとしてデータ記憶部１１に格納する。
【００１９】
アプリケーション実行部１４は、所定のアプリケーションを連続して実行する。これにより、多数の入力データを保持させておけば、これらの入力データに応じた多数の出力データが自動的に生成される。
【００２０】
出力結果判定部１５は、格納された入力データに対するアプリケーション実行部１４の実行結果と、関連データ及び格納される前の入力データと、の間に差異がある場合に、差異に相当する部分の入力データをデータ記憶部１１に記憶する。
【００２１】
尚、上述したデータ生成装置１０は、いわゆるコンピュータ、すなわち、図３に示すように、ＣＰＵ等の処理装置１０ａ、ＳＲＡＭ(Static Random Access Memory)、ＤＲＡＭ(Dynamic RAM)やＳＤＲＡＭ（Synchronous DRAM）、ＮＶＲＡＭ（Non Volatile RAM）等のＲＡＭ１０ｂ、フラッシュメモリ等のＲＯＭ(Read Only Memory)１０ｃ及び入出力を制御するＩ／Ｆ１０ｄがバス１０ｅにより接続されたハードウェア構成により実現される。
【００２２】
したがって、ＣＰＵ１０ａがＲＡＭ１０ｂやＲＯＭ１０ｃ等の記憶装置に格納された所要のプログラムを読み込み、当該プログラムに従った演算を行うことにより、各装置の機能が実現される。尚、このようなプログラムとしては後述するフローチャートに応じたプログラムとすることができる。また、必要に応じて、例えばハードディスク等、コンピュータに関連する種々の機器をバス１０ｅに接続してもよい。
【００２３】
続いて、上記構成のデータ生成装置１０の概略動作について図４を参照して説明する。
図４はデータ生成装置１０の動作の一例を示すフローチャートある。尚、図４に示すフローチャートにおいて、ステップＳ１、Ｓ２及びＳ４の処理については、それぞれ後述する図５、図１４及び図１８等を参照して詳しく説明する。
【００２４】
データ生成装置１０は、図４に示すように、まず、入出力データ生成処理を行う（ステップＳ１）。入出力データ生成処理は、テスト担当者が表示手段の画面上で入力した値を入力データとしてデータ記憶部１１に記憶し、また、その入力データに基づいて実行されたアプリケーションの処理結果としての出力データをデータ記憶部１１に記憶する。
【００２５】
データ生成装置１０は、次いで、対象データ決定処理を行う（ステップＳ２）。対象データ決定処理は、画面上に入力された種々のデータの中で、バリエーションを増加させる元となるデータを決定する。
【００２６】
データ生成装置１０は、ここで、ステップＳ２で決定された対象データから、まだ、テストデータが生成可能であるか否かを判定する（ステップＳ３）。この判定処理は、生成可能フラグのオン／オフによって決定される。生成可能フラグの詳細については、後述する。
【００２７】
データ生成装置１０は、生成可能フラグがオンであると判定した場合には、データ取得処理を行う（ステップＳ４）。データ取得処理は、ステップＳ２で決定された対象データを種々の処理形態によって変更する等して取得し、新たな入力データを生成する処理である。
【００２８】
データ生成装置１０は、次いで、ステップＳ４の処理で生成された入力データに対してアプリケーションを実行する（ステップＳ５）。これにより、新たな入力データに基づく出力データが生成される。
【００２９】
データ生成装置１０は、ここで、格納された入力データに対する実行結果と、関連データ及び格納される前の入力データと、の差異があるか否かを判定する（ステップＳ６）。そして、差異があると判定した場合には、差異に相当する入力データを差異データとして記憶し（ステップＳ７）、ステップＳ２の処理に戻る。
【００３０】
データ生成装置１０は、さらに、対象データ決定処理を行い、データの生成が可能でないと判定した場合には、生成したデータを出力する（ステップＳ８）。
【００３１】
次に、上述した各処理の一部についてさらに詳しく説明する。
まず、入出力データ生成処理について図５から図１３を参照して説明する。
図５は入出力データ生成処理の一例を示すフローチャート、図６から図１２はアプリケーションにおける画面及び生成される入出力データの一例、図１３はアプリケーションの実行結果の一例である。尚、入出力データ生成処理は、複数の入力データを予め作成しておき、アプリケーションの自動実行機能により、これらの入力データに応じた出力データが自動的に生成されるようにしてもよい。
【００３２】
データ生成装置１０は、まず、アプリケーションにおける画面上のボタンが押下されたか判定する（ステップＳ１１）。ここで、アプリケーションにおける画面は、図６に示すように、得意先参照ボタン、商品参照ボタン及び入力完了ボタン等から構成される。尚、画面上のボタンは、これらのボタンだけに限定されず、後述する図面に記載される各種ボタンも含まれる。
【００３３】
データ生成装置１０は、ボタンの押下があったと判定した場合には、次いで、そのボタンが登録ボタンであったか否かを判定する（ステップＳ１２）。例えば、図７（ａ）に示すように、得意先コードの入力欄に値「ＫＡ００５」が入力されて得意先参照ボタンが押下された場合には、登録ボタンでないと判定し、図７（ｂ）に示すように、入力データを生成する（ステップＳ１３）。この入力データは、入力された値「ＫＡ００５」と押下されたボタン「得意先参照」を有する。
【００３４】
データ生成装置１０は、次いで、出力データを生成し（ステップＳ１４）、入力データ及び出力データを保持しつつ（ステップＳ１５）、ステップＳ１に戻る。この際、データ生成装置１０は、得意先参照ボタンが押下された後、図８（ａ）に示すように、アプリケーションの画面を「受注登録業務画面」から「得意先選択画面」に切り替えて表示させたり、又は、後者の画面を新たに表示させたりする。この画面には、上述した関連データのうち、得意先コードに応じたデータが検索結果として表示される。画面には、得意先コード「ＫＡ００５」に一致した関連データのみを表示させてもよいし、図８（ａ）に示すように、得意先コード「ＫＡ００５」以降の関連データを表示させるようにしてもよい。
【００３５】
出力データは、図８（ｂ）に示すように、画面に表示される関連データ、すなわち、得意先コードに応じて抽出された関連データ、及び、同図（ｃ）に示すように、画面に表示されるボタン「決定」及び「閉じる」として生成される。
【００３６】
データ生成装置１０は、図８（ａ）に示すように、決定ボタンが押下されると、同図（ｄ）に示すように、画面上で選択されたラジオボタン「ＫＡ００５」及び押下されたボタン「決定」に関する入力データを生成する。データ生成装置１０は、生成後、「得意先選択画面」を、図９（ａ）に示すように、「受注登録業務画面」に切り替え、同図（ｂ）に示すように、「受注登録業務画面」に入力されていた得意先コード「ＫＡ００５」並びに「受注登録業務画面」に表示される各ボタン「得意先参照」、「商品参照」及び「入力完了」に関する出力データが生成される。
【００３７】
データ生成装置１０は、このようにして、ステップＳ１１からＳ１５の処理を繰り返すことにより、入力データ及び出力データを保持していく。すなわち、図９（ａ）に示す「受注登録業務画面」において、商品コード「ＡＸ００１１」が入力され、「商品参照ボタン」が押下されると、同図（ｃ）に示すように、これらの関する入力データが生成されるとともに、「受注登録業務画面」を図１０（ａ）に示すように、「商品選択画面」に切り替え、同図（ｂ）及び（ｃ）に示すように、「商品選択画面」に表示される内容に応じた出力データを生成する。
【００３８】
データ生成装置１０は、同図（ａ）に示すように、「選択ボタン」が押下されると、同図（ｄ）に示すように、「選択ボタン」に関する入力ボタンが生成されるとともに、「商品選択画面」を図１１（ａ）に示すように、「受注登録業務画面」に切り替え、同図（ｂ）に示すように、「受注登録業務画面」に表示されていた内容に応じた出力データを生成する。
【００３９】
データ生成装置１０は、同図（ａ）に示すように、数量「１００」が入力され、「入力完了ボタン」が押下されると、同図（ｃ）に示すように、これらの関する入力データが生成されるとともに、「受注登録業務画面」を図１２（ａ）に示すように、「受注登録業務画面（確認モード）」に切り替え、同図（ｂ）に示すように、「受注登録業務画面（確認モード）」に表示される内容に応じた出力データを生成する。
【００４０】
データ生成装置１０は、同図（ａ）に示すように、「登録ボタン」が押下されると、同図（ｃ）に示すように、「登録ボタン」に関する入力データが生成される（ステップＳ１６）。
【００４１】
データ生成装置１０は、上述したステップＳ１３、Ｓ１４及びＳ１６で生成した入力データ及び出力データを記憶し（ステップＳ１７）、関連データのうち、図１３（ｂ）に示すように、購入した商品コード「ＡＸ００１１」に該当する商品テーブルの「在庫数」を「数量」分だけ減らすとともに、同図（ｃ）に示すように、受注明細テーブルを登録し、同図（ｄ）に示すように、受注テーブルを登録する。
【００４２】
次に、対象データ決定処理について図１４から図１７を参照して説明する。
図１４は対象データ決定処理の一例を示すフローチャート、図１５は入力データの計数処理を説明するための図、図１６は出力データの計数処理を説明するための図、図１７は関連データの計数処理を説明するための図である。
【００４３】
データ生成装置１０は、まず、図１４に示すように、入力データ、出力データ及び関連データを記憶部から取得し（ステップＳ２１）、入力データの出現回数を画面項目名ごとに計数する（ステップＳ２２）。この処理は、入出力データ生成処理で生成された入力データを計数対象として行われる。
【００４４】
より詳しくは、図１５に示すように、入力データのうち、得意先コード「ＫＡ００５」である入力データは２回である。同様に、商品コード「ＡＸ００１１」である入力データは１回であり、数量「１００」である入力データも１回である。
【００４５】
データ生成装置１０は、ここで、画面項目名に関する同一の入力データを選択する（ステップＳ２３）。例えば、得意先コード「ＫＡ００５」の入力データを選択し、該入力データと同一であるデータを同一データとして出力データ及び関連データ内の出現回数を計数する（ステップＳ２４）。尚、商品コードや数量を選択して出現回数を計数するようにしてもよい。これらの選択は、例えば、入力された順番に基づいて選択するようにしてもよいし、入力データの先頭の文字（アルファベットや数値）の昇順・降順、データのビット数が小さい・大きい順等により選択するようにしてもよい。
【００４６】
具体的には、図１６に示すように、同一データ「ＫＡ００５」を元に、出力データ内を検索し、同一データ「ＫＡ００５」が出現する回数を計数する。同図によれば、「ＫＡ００５」は４回出現する。また、図１７に示すように、同一データ「ＫＡ００５」を元に、関連データ内を検索し、同一データ「ＫＡ００５」が出現する回数を計数する。同図によれば、「ＫＡ００５」は１回出現する。
【００４７】
データ生成装置１０は、同じ画面項目名の計数結果を集計する（ステップＳ２５）。この結果、得意先コード「ＫＡ００５」の出現回数は、図１７に示すように、７回となる。
【００４８】
データ生成装置１０は、ここで、すべての入力データを選択したか否か判定する（ステップＳ２６）。したがって、商品コード「ＡＸ００１１」や数量「１００」に関する入力データがまだ選択されていない場合には、上述したステップＳ２３からＳ２５の処理を繰り返し、それぞれの計数結果を集計する。
【００４９】
データ生成装置１０は、すべての入力データを選択したと判定した場合には、次いで、集計値が最大となる入力データを変更の対象となる対象データと決定する（ステップＳ２７）。したがって、得意先コード「ＫＡ００５」、商品コード「ＡＸ００１１」、数量「１００」のうち、集計結果が７回である、得意先コード「ＫＡ００５」が変更の対象となる対象コードと決定される。
【００５０】
データ生成装置１０は、次いで、生成可能フラグをオンにする（ステップＳ２８）。これにより、図３に示すフローチャートにおけるステップＳ３の処理で生成可能と判定される。
【００５１】
次に、データ取得処理の概略について図１８を参照して説明する。
図１８はデータ取得処理の一例を示すフローチャートである。尚、図１８に示すフローチャートにおいて、ステップＳ４３の加工処理及びステップＳ４５の変更処理については、それぞれ後述する図１９から図２１及び図２２から図２４を参照して詳しく説明する。
【００５２】
データ生成装置１０は、決定された対象データを元に記憶部を検索し（ステップＳ４１）、対象データを記録したカラム等を特定したか否かを判定する（ステップＳ４２）。より詳しくは、対象データ（例えば「ＫＡ００５」）を記録したレコード及び該対象データの該レコードにおけるカラムを関連データから特定し得るか否かを判定する。
【００５３】
データ生成装置１０は、対象データ「ＫＡ００５」に対応するレコード及びカラムを特定しなかったと判定した場合には、対象データをそのデータの一部が異なる近似データに加工する加工処理を行う（ステップＳ４３）。
【００５４】
データ生成装置１０は、加工後の近似データを記録したレコード及び該対象データの該レコードにおけるカラム等を関連データから特定し得るか否かを判定する（ステップＳ４４）。特定できなかった場合には、図４に示すステップＳ２の処理に戻る。一方、ステップＳ４２の処理において、対象データに応じたレコード及びカラムを特定した場合や、ステップＳ４４の処理において、近似データに応じたレコード及びカラムを特定した場合には、関連データの該レコード以外のレコードから該対象データと同一のカラムに記録されている値やこの値を種々の処理形態で変更した値を取得する処理を行う（ステップＳ４５）。
【００５５】
データ生成装置１０は、ここで、ステップＳ４５の処理で取得した値のちらばり度（バリエーション）は十分であるか否かを判定する（ステップＳ４６）。この判定処理は、例えば、バリエーションが十分であると判定するための閾値との大小関係により行えばよい。
【００５６】
データ生成装置１０は、バリエーションが十分であると判定した場合には、生成可能フラグをオフにし（ステップＳ４７）、十分でないと判定した場合には、ステップＳ４７の処理を行わずに処理を終了する。
【００５７】
次に、上述した加工処理及び変更処理をさらに詳しく説明する。
まず、加工処理について図１９から図２１を参照して説明する。
図１９から図２１は、加工処理の一例を示すフローチャートである。各図面内に記載されるかっこ書きは各図面間で対応するように接続される。例えば、図１９に示す（ａ）と図２０に示す（ａ）は接続されていることを示している。他についても同様である。
【００５８】
また、各判定処理における定義については以下のとおりである。以下に示す定義は例えばアプリケーションの画面によって任意に選択される。
定義Ｐ：対象データの半角／全角を異らせる加工処理を行う。
定義Ｑ：対象データの数値のカンマ区切りや小数点の表現を異ならせる加工処理を行う。
定義Ｒ：対象データの文字数や文字パターンが一致するデータを取得する加工処理を行う。
定義Ｓ：対象データの一部と一致するデータを取得する加工処理を行う。
定義Ｔ：対象データのデータタイプと一致するデータを取得する加工処理を行う。
【００５９】
データ生成装置１０は、まず、図１９に示すように、選択された定義が定義Ｐであるか否か判定する（ステップＳ４３１）。定義Ｐである場合には、次いで、対象データが半角／全角の変換が可能なデータであるか否かを判定する（ステップＳ４３２）。例えば、対象データがひらがなや漢字である場合には、半角変換は不可能なデータであると判定する。一方、アルファベットや数値である場合には、半角／全角の変換が可能なデータであると判定する。これにより、対象データ「ＫＡ００５」が全角のデータであるがために取得し得なかった場合でも、半角に変換することにより、対象データに応じたカラム内の値を関連データから取得できる可能性がある。
【００６０】
データ生成装置１０は、対象データが変換可能であると判定した場合には、対象データの各文字を文字ごとに変換する（ステップＳ４３３）。例えば、対象データが半角文字で構成されている場合には、その半角文字で構成された部分を全角文字に変換する。逆に、全角文字で構成されている場合には、その全角文字で構成された部分を半角文字に変換する。例えば、「商品コード」のうち、「商品」が全角、「コード」が半角である場合には、「コード」のうちその一部である「コ」のみを全角にするようにしてもよい。これにより、カラム内の値を取得できる可能性が上がる。
【００６１】
データ生成装置１０は、次いで、変換後の対象データ（近似データ）に基づき、関連データを検索し（ステップＳ４３４）、近似データに応じたカラム内の値の取得を成功したか否かを判定する（ステップＳ４３５）。ここで、取得成功しなかった場合には、全パターンを実施したか否かを判定する（ステップＳ４３６）。この全パターンの判定処理は、対象データの構成部分にまだ、変換可能な文字が含まれているか否かによって行われ、まだ、変換可能な文字が含まれている場合には、ステップＳ４３３に戻る。
【００６２】
データ生成装置１０は、ステップＳ４３１の処理において、選択された定義が定義Ｐでないと判定した場合、ステップＳ４３２の処理において、変換可能でないと判定した場合、ステップＳ４３６の処理において、全パターンが実施されたと判定した場合には、次いで、選択された定義が定義Ｑであるか否かを判定する（ステップＳ４３７）。
【００６３】
データ生成装置１０は、定義Ｑである場合には、次いで、対象データが数値データであるか否かを判定する（ステップＳ４３８）。そして、数値データであると判定した場合には、対象データの数値表現の変換を行い（ステップＳ４３９）、上述したステップＳ４３４からＳ４３６の処理を行う。例えば、対象データが「１００」であれば、例えば「１００．００」等と小数点を含めたり、対象データが「１００００」であれば、例えば「１０，０００」等と区切りを含めたりする。これにより、カラム内の値の取得可能性が高くなる。
【００６４】
一方、データ生成装置１０は、ステップＳ４３７の処理において、選択された定義が定義Ｑでないと判定した場合や、ステップＳ４３８の処理において、対象データが数値でないと判定した場合には、図２０に示すように、選択された定義が定義Ｒであるか否かを判定する（ステップＳ４４０）。
【００６５】
データ生成装置１０は、定義Ｒである場合には、次いで、対象データからその文字数を取得し（ステップＳ４４１）、解析データから同一文字数を有するデータを抽出する（ステップＳ４４２）。例えば、対象データが「ＫＡ００５」である場合には、５文字の値を抽出する。尚、解析データは、関連データの内容を種々の観点から解析した結果となるデータであり、詳細については、後述する。これにより、対象データと異なるデータであっても、対象データと同一文字数の値を取得でき、バリエーションに富むデータ生成がなされる。
【００６６】
一方、データ生成装置１０は、ステップＳ４４０の処理において、選択された定義が定義Ｒでないと判定した場合には、選択された定義が定義Ｓであるか否かを判定する（ステップＳ４４３）。
【００６７】
データ生成装置１０は、定義Ｓである場合には、次いで、対象データからその部分文字列を抽出し（ステップＳ４４４）、上述したステップＳ４３４からＳ４３６の処理を行う。これにより、部分文字列によっても、カラム内の値の取得が可能となる。
【００６８】
一方、データ生成装置１０は、ステップＳ４４３の処理において、選択された定義が定義Ｓでないと判定した場合には、図２１に示すように、選択された定義が定義Ｔであるか否かを判定する（ステップＳ４４５）。
【００６９】
データ生成装置１０は、定義Ｔである場合には、次いで、対象データのデータタイプ（例えば文字型や整数型等）を取得し（ステップＳ４４６）、解析データから同一データタイプを有するデータを抽出する（ステップＳ４４７）。
【００７０】
データ生成装置１０は、ここで、図２０に示すステップＳ４４２の処理や上述したステップＳ４４７の処理により抽出できるか否かを判定する（ステップＳ４４８）。データ生成装置１０は、抽出できると判定した場合には、解析データから該当するデータを抽出し（ステップＳ４４９）、処理を終了する。
【００７１】
一方で、データ生成装置１０は、図１９に示すステップＳ４３５の処理において、取得成功と判定した場合や、ステップＳ４４５の処理において、選択された定義が定義Ｔでないと判定した場合、ステップＳ４４８の処理において、抽出できなかったと判定した場合にも、処理を終了する。
【００７２】
次に、変更処理について図２及び図２２から図２４等を参照して説明する。
図２２から図２４は、変更処理の一例を示すフローチャートである。尚、各図面内に記載されるかっこ書きは、上記と同様、各図面間で対応するように接続される。
【００７３】
また、各判定処理における処理については以下のとおりである。以下に示す処理は例えばアプリケーションの画面によって任意に選択される。
処理Ａ：対象データを、画面入力値と一致したデータの上のデータ値に変更する処理を行う。
処理Ｂ：対象データを、画面入力値と一致したデータの下のデータ値に変更する処理を行う。
処理Ｃ：対象データを、最小値に変更する処理を行う。
処理Ｄ：対象データを、最大値に変更する処理を行う。
処理Ｅ：対象データを、最小値より１つ小さい値に変更する処理を行う。
処理Ｆ：対象データを、最大値より１つ大きい値に変更する処理を行う。
処理Ｇ：対象データを、データ長より１短い値に変更する処理を行う。
処理Ｈ：対象データを、データ長より１長い値に変更する処理を行う。
処理Ｉ：対象データを、画面入力値と一致したデータの隣のデータ値に変更する処理を行う。
処理Ｊ：対象データと等しい値を有するデータを削除する処理を行う。
処理Ｋ：処理Ｅ〜Ｈの変更後の対象データに更新する処理を行う。
【００７４】
データ生成装置１０は、まず、図２２に示すように、選択された処理が処理Ａであるか否か判定する（ステップＳ４５１）。処理Ａである場合には、処理Ａを行う（ステップＳ４５２）。例えば、対象データが「ＫＡ００５」である場合には、「ＫＡ００４」に変更する処理を行う。より詳しくは、このステップＳ４５２の処理の前に、図１８を参照して説明したステップＳ４１の処理により対象データ「ＫＡ００５」をキーにデータ記憶部１１を検索している。データ記憶部１１には、図２に示すように、関連データとして得意先テーブル、商品テーブル、受注明細テーブル及び受注テーブルが記憶されており、対象データ「ＫＡ００５」をキーにデータ記憶部１１を検索すると、得意先テーブルに格納されるレコードの中で得意先コードが「ＫＡ００５」であるレコードが抽出される。そして、このレコードが格納されていたテーブルの中で、このレコードの格納場所を基準として、１つ上のレコードに格納される得意先コードを取得する。このため、図２に示す得意先テーブルの中で得意先コード「ＫＡ００４」が取得される。したがって、対象データが「ＫＡ００５」である場合には、「ＫＡ００４」に変更する処理を行うことになる。尚、本実施形態では、各テーブルにレコードが格納された順番が古い方を上、新しい方を下としている。この順序は逆にしてもよい。したがって、図２に示す得意先テーブルであれば、得意先コード「ＫＡ００１」側が上、「ＫＡ０２０」側が下となる。この説明は、得意先テーブルだけでなく、商品テーブル、受注明細テーブル及び受注テーブルにもあてはまる。対象データの上のデータがない場合には、処理を停止してもよいし、さらに上のデータに変更する処理を行うようにしてもよい。
【００７５】
一方、データ生成装置１０は、選択された処理が処理Ａでないと判定した場合には、次いで、選択された処理が処理Ｂであるか否か判定する（ステップＳ４５３）。処理Ｂである場合には、処理Ｂを行う（ステップＳ４５４）。例えば、対象データが「ＫＡ００５」である場合には、「ＫＡ００６」に変更する処理を行う。より詳しくは、上述したように、対象データ「ＫＡ００５」をキーにデータ記憶部１１を検索すると、得意先テーブルに格納されるレコードの中で得意先コードが「ＫＡ００５」であるレコードが抽出される。そして、このレコードが格納されていたテーブルの中で、このレコードの格納場所を基準として、１つ下のレコードに格納される得意先コードを取得する。このため、図２に示す得意先テーブルの中で得意先コード「ＫＡ００６」が取得される。したがって、対象データが「ＫＡ００５」である場合には、「ＫＡ００６」に変更する処理を行うことになる。対象データの下のデータがない場合にも、処理を停止してもよいし、さらに下のデータに変更する処理を行うようにしてもよい。
【００７６】
一方、データ生成装置１０は、選択された処理が処理Ｂでないと判定した場合には、次いで、選択された処理が処理Ｃであるか否か判定する（ステップＳ４５５）。処理Ｃである場合には、処理Ｃを行う（ステップＳ４５６）。例えば、対象データが「ＫＡ００５」である場合には、そのカラムの最小値「ＫＡ００１」に変更する処理を行う。この最小値「ＫＡ００１」は、得意先コード「ＫＡ００５」を抽出してから最小値を探すために得意先テーブルを検索してもよいが、図２６を参照して後述する解析データから取得してもよい。すなわち、この解析データを、このステップＳ４５６より前に予め生成しておくことで、得意先コード「ＫＡ００５」を抽出してから最小値を探すために得意先テーブルを検索する場合に比べて、短時間で取得できる。この最小値に関するテストデータを生成しておくことで、アプリケーションの仕様上想定され得るデータの上限も生成されるようになる。
【００７７】
一方、データ生成装置１０は、選択された処理が処理Ｃでないと判定した場合には、次いで、選択された処理が処理Ｄであるか否か判定する（ステップＳ４５７）。処理Ｄである場合には、処理Ｄを行う（ステップＳ４５８）。例えば、対象データが「ＫＡ００５」である場合には、そのカラムの最大値「ＫＡ０２０」に変更する処理を行う。この最大値「ＫＡ０２０」も上述したように、得意先コード「ＫＡ００５」を抽出してから最大値を探すために得意先テーブルを検索してもよいし、後述する解析データから取得してもよい。これにより、アプリケーションの仕様上想定され得るデータの下限も生成されるようになる。
【００７８】
一方、データ生成装置１０は、選択された処理が処理Ｄでないと判定した場合には、次いで、図２３に示すように、選択された処理が処理Ｅであるか否か判定する（ステップＳ４５９）。処理Ｅである場合には、処理Ｅを行う（ステップＳ４６０）。例えば、上述したように対象データの最小値が「ＫＡ００１」である場合には、１桁目を繰り上げて「ＫＡ０００」に変更する処理を行う。例えば、１桁目がＱなどアルファベットであれば、アルファベットの順序に従って、Ｐなどとすればよい。これにより、アプリケーションの仕様上想定されていないデータの上限も生成されるようになる。
【００７９】
一方、データ生成装置１０は、選択された処理が処理Ｅでないと判定した場合には、次いで、選択された処理が処理Ｆであるか否か判定する（ステップＳ４６１）。処理Ｆである場合には、処理Ｆを行う（ステップＳ４６２）。例えば、上述したように対象データの最大値が「ＫＡ０２０」である場合には、１桁目を繰り下げて「ＫＡ０２１」に変更する処理を行う。これにより、アプリケーションの仕様上想定されていないデータの下限も生成されるようになる。
【００８０】
一方、データ生成装置１０は、選択された処理が処理Ｆでないと判定した場合には、次いで、選択された処理が処理Ｇであるか否か判定する（ステップＳ４６３）。処理Ｇである場合には、処理Ｇを行う（ステップＳ４６４）。例えば、対象データが「ＫＡ００５」である場合には、「ＫＡ００」等と最後尾の文字列を削除するように変更する処理を行う。これにより、アプリケーションの仕様上想定されていない、文字数不足のデータも生成されるようになる。
【００８１】
一方、データ生成装置１０は、選択された処理が処理Ｇでないと判定した場合には、次いで、選択された処理が処理Ｈであるか否か判定する（ステップＳ４６５）。処理Ｈである場合には、処理Ｈを行う（ステップＳ４６６）。例えば、対象データが「ＫＡ００５」である場合には、「ＫＡ００５５」等と最後尾の文字列を重ねるように変更する処理を行う。これにより、アプリケーションの仕様上想定されていない、文字数過多のデータも生成されるようになる。
【００８２】
一方、データ生成装置１０は、選択された処理が処理Ｈでないと判定した場合には、次いで、図２４に示すように、選択された処理が処理Ｉであるか否か判定する（ステップＳ４６７）。処理Ｉである場合には、処理Ｉを行う（ステップＳ４６８）。例えば、対象データが「ＫＡ００５」である場合には、「○○社」に変更する処理を行う。これにより、アプリケーションの仕様上想定されていないデータタイプ等のデータも生成されるようになる。
【００８３】
一方、データ生成装置１０は、選択された処理が処理Ｉでないと判定した場合には、次いで、選択された処理が処理Ｊであるか否か判定する（ステップＳ４６９）。処理Ｊである場合には、処理Ｊを行う（ステップＳ４７０）。例えば、対象データが「ＫＡ００５」である場合には、その値と同じデータを削除する処理を行い、処理を終了する。
【００８４】
一方、データ生成装置１０は、選択された処理が処理Ｊでないと判定した場合には、次いで、選択された処理が処理Ｋであるか否か判定する（ステップＳ４７１）。処理Ｋである場合には、処理Ｋを行う（ステップＳ４７２）。例えば、変更後の対象データが「ＫＡ０００」、「ＫＡ０２１」、「ＫＡ００」、「ＫＡ００５５」である場合には、「ＫＡ００７」、「ＫＡ００８」、「ＫＡ００９」、「ＫＡ０１０」をこれらの変更後の対象データに更新し、処理を終了する。また、選択された処理が処理Ｋでないと判定した場合にも処理を終了する。
【００８５】
尚、上述したステップＳ４５２、Ｓ４５４、Ｓ４５６、Ｓ４５８、Ｓ４６０、Ｓ４６２、Ｓ４６４、Ｓ４６６、Ｓ４６８の処理を終了した場合には、データ生成装置１０は、それぞれの処理で取得又は生成した値に対象データを変更する（ステップＳ４７３）。例えば、ステップＳ４５２の処理を終了した場合には、対象データ「ＫＡ００５」を「ＫＡ００４」に変更する。
【００８６】
データ生成装置１０は、ステップＳ４７３の処理を終了すると、変更された対象データに基づく入力データを生成する（ステップＳ４７４）。このようにして、対象データとして決定された「ＫＡ００５」が種々の処理形態で対象データと異なるデータに順次変更される。そして、関連データから取得した、対象データに応じた値をデータ記憶部１１に入力データとして記憶することで、バリエーションに富んだデータが生成される。
【００８７】
ここで、図２０及び図２１を参照して説明した解析データの生成について図２、図２５及び図２６を参照して説明する。
【００８８】
図２５は解析データ生成処理の一例を示すフローチャート、図２６は解析結果の一例である。解析データを生成することにより、定義Ｒや定義Ｔにおける処理が可能となる。尚、図２５に示すフローチャートは、図４に示すフローチャートのステップＳ１の処理とステップＳ２の処理との間に含めることが後続する定義Ｒ等の処理を行う点で望ましい。また、解析対象としては、図２に示す各テーブルを用いることができる。
【００８９】
データ生成装置１０は、図２５に示すように、まず、一のカラムを任意に選択する（ステップＳ５０１）。例えば、図２に示す得意先テーブルの「得意先コード」を選択する。
【００９０】
データ生成装置１０は、次いで、そのカラムのレコード数を取得する（ステップＳ５０２）。図２に示す得意先テーブルのカラム「得意先コード」であれば、そのレコード数は「２０」となる。
【００９１】
データ生成装置１０は、次いで、そのカラムのデータタイプを解析する（ステップＳ５０３）。図２に示す得意先テーブルのカラム「得意先コード」であれば、データタイプは「半角文字列」となる。
【００９２】
データ生成装置１０は、次いで、そのカラム内におけるデータの文字数の平均値、最大値、最小値を解析する（ステップＳ５０４）。例えば、図２に示す得意先テーブルのカラム「得意先コード」であれば、文字数の平均値、最大値、最小値とも「５」となる。
【００９３】
データ生成装置１０は、次いで、そのカラム内のデータの最大値、最小値を抽出する（ステップＳ５０５）。例えば、図２に示す得意先テーブルのカラム「得意先コード」であれば、最大値「ＫＡ０２０」、最小値「ＫＡ００１」となる。
【００９４】
データ生成装置１０は、次いで、そのカラム内のデータの一致部分を抽出する（ステップＳ５０６）。図２に示す得意先テーブルのカラム「得意先コード」であれば、一致部分が「ＫＡ０」となる。
【００９５】
データ生成装置１０は、ここで、すべてのカラムを解析したか否かを判定する（ステップＳ５０７）。図２に示す得意先テーブルであれば、カラム「得意先コード」以外にも、「得意先名」、「住所」、「電話番号」のカラムがあるため、ステップＳ５０１の処理に戻る。
【００９６】
一方、データ生成装置１０は、上述したすべてのカラムを解析したと判定した場合には、次いで、すべてのテーブルを解析したか否かを判定する（ステップＳ５０８）。図２では、得意先テーブル以外にも、商品テーブル、受注明細テーブル、受注テーブルがあるため、これらのテーブルが解析されていないと判定した場合には、次のテーブルを取得し（ステップＳ５０９）、ステップＳ５０１の処理に戻る。
【００９７】
データ生成装置１０は、すべてのテーブルを解析したと判定した場合には、解析結果となる解析データを記憶する（ステップＳ５１０）。解析結果は、図２６に示すように、解析データとして記憶される。これにより、図２０を参照して説明したステップＳ４４２の処理や、図２１を参照して説明したステップＳ４４７の処理が可能となる。
【００９８】
以上、本発明の望ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されず、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変化が可能である。例えば、本発明のプログラムを通信手段により提供してもよいし、ＣＤ−ＲＯＭ等の記録媒体に格納して提供してもよい。
【図面の簡単な説明】
【００９９】
【図１】実施形態に係るデータ生成装置の要部構成を例示する機能ブロック図である。
【図２】種々のテーブルを示す図である。
【図３】データ生成装置のハードウェア構成を例示する機能ブロック図である。
【図４】データ生成装置の動作の一例を示すフローチャートある。
【図５】入出力データ生成処理の一例を示すフローチャートである。
【図６】アプリケーションにおける画面及び生成される入出力データの一例である。
【図７】アプリケーションにおける画面及び生成される入出力データの一例である。
【図８】アプリケーションにおける画面及び生成される入出力データの一例である。
【図９】アプリケーションにおける画面及び生成される入出力データの一例である。
【図１０】アプリケーションにおける画面及び生成される入出力データの一例である。
【図１１】アプリケーションにおける画面及び生成される入出力データの一例である。
【図１２】アプリケーションにおける画面及び生成される入出力データの一例である。
【図１３】アプリケーションの実行結果の一例である。
【図１４】対象データ決定処理の一例を示すフローチャートである。
【図１５】入力データの計数処理を説明するための図である。
【図１６】出力データの計数処理を説明するための図である。
【図１７】関連データの計数処理を説明するための図である。
【図１８】データ取得処理の一例を示すフローチャートである。
【図１９】加工処理の一例を示すフローチャートである。
【図２０】加工処理の一例を示すフローチャートである。
【図２１】加工処理の一例を示すフローチャートである。
【図２２】変更処理の一例を示すフローチャートである。
【図２３】変更処理の一例を示すフローチャートである。
【図２４】変更処理の一例を示すフローチャートである。
【図２５】解析データ生成処理の一例を示すフローチャートである。
【図２６】解析結果の一例である。
【符号の説明】
【０１００】
１０  データ生成装置
１０ａ  ＣＰＵ
１０ｂ  ＲＡＭ
１０ｃ  ＲＯＭ
１０ｄ  Ｉ／Ｆ
１０ｅ  バス
１１  データ記憶部
１２  対象データ決定部
１３  データ取得部
１４  アプリケーション実行部
１５  出力結果判定部
１６  入力データ格納部
【図１】
0005277687.tif 000002
【図２】
0005277687.tif 000003
【図３】
0005277687.tif 000004
【図４】
0005277687.tif 000005
【図５】
0005277687.tif 000006
【図６】
0005277687.tif 000007
【図７】
0005277687.tif 000008
【図８】
0005277687.tif 000009
【図９】
0005277687.tif 000010
【図１０】
0005277687.tif 000011
【図１１】
0005277687.tif 000012
【図１２】
0005277687.tif 000013
【図１３】
0005277687.tif 000014
【図１４】
0005277687.tif 000015
【図１５】
0005277687.tif 000016
【図１６】
0005277687.tif 000017
【図１７】
0005277687.tif 000018
【図１８】
0005277687.tif 000019
【図１９】
0005277687.tif 000020
【図２０】
0005277687.tif 000021
【図２１】
0005277687.tif 000022
【図２２】
0005277687.tif 000023
【図２３】
0005277687.tif 000024
【図２４】
0005277687.tif 000025
【図２５】
0005277687.tif 000026
【図２６】
0005277687.tif 000027