(57)【特許請求の範囲】
【請求項１】
既存データからソフトウェアの動作を検証するためのテストデータを生成するデータ生成装置において、
既存データを受け付ける第１受付手段と、
該第１受付手段が受け付けた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成する第１生成手段と、
テスト仕様を受け付ける第２受付手段と、
該第２受付手段が受け付けたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成する第２生成手段と、
生成した第１及び第２制約条件に夫々重みを付ける重み付け手段と、
該重み付け手段が重みを付けた第１及び第２制約条件を充足するテストデータを前記第１受付手段が受け付けた既存データから生成する生成手段と
を備えるデータ生成装置。
【請求項２】
前記第１及び第２制約条件は論理式から構成され、
前記重み付け手段は、第２制約条件の論理式を第１制約条件の論理式より重く重み付けし、
前記生成手段は、前記第１及び第２制約条件の論理式を充足し、かつ前記重み付け手段が該第１及び第２制約条件の論理式に付けた重みの和又は積が最大になるテストデータを前記第１受付手段が受け付けた既存データから生成する
請求項１に記載のデータ生成装置。
【請求項３】
前記第１生成手段は、前記生成手段が生成したテストデータに基づいて第３制約条件を予め定められた規則に従った文字列処理により生成する手段を有し、
追加テスト仕様を受け付ける第３受付手段を備え、
前記第２生成手段は、前記第３受付手段が受け付けた追加テスト仕様に基づく制約条件が前記第２制約条件に追加された第４制約条件を予め定められた規則に従った文字列処理により生成する手段を有し、
前記重み付け手段は、生成した第３及び第４制約条件に夫々重み付けし、
前記生成手段は、前記重み付け手段が重み付けた第３及び第４制約条件を充足するテストデータを、生成したテストデータから再帰的に生成する
請求項１又は請求項２に記載のデータ生成装置。
【請求項４】
前記第３及び第４制約条件は論理式から構成され、
前記重み付け手段は、第４制約条件の論理式を第３制約条件の論理式より重く重み付けし、
前記生成手段は、前記第３及び第４制約条件の論理式を充足し、かつ前記重み付け手段が該第３及び第４制約条件の論理式に付けた重みの和又は積が最大になるテストデータを、生成したテストデータから再帰的に生成する
請求項３に記載のデータ生成装置。
【請求項５】
前記テスト仕様又は追加テスト仕様は、前記ソフトウェア、該ソフトウェアが使用するデータベース又は該ソフトウェアの検証に係るテストケースに関する情報を含む
請求項３又は請求項４に記載のデータ生成装置。
【請求項６】
制御部を有するデータ生成装置が既存データからソフトウェアの動作を検証するためのテストデータを生成するデータ生成方法において、
前記制御部が、
既存データを受け付け、
受け付けた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成し、
テスト仕様を受け付け、
受け付けたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成し、
生成した第１及び第２制約条件に夫々重みを付け、
重みを付けた第１及び第２制約条件を充足するテストデータを前記既存データから生成する
データ生成方法。
【請求項７】
既存データからソフトウェアの動作を検証するためのテストデータを生成する処理をコンピュータに実行させるプログラムにおいて、
与えられた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成し、
与えられたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成し、
生成した第１及び第２制約条件に夫々重みを付け、
重みを付けた第１及び第２制約条件を充足するテストデータを前記既存データから生成する
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストデータを生成するデータ生成装置、データ生成方法及びプログラムに関する。
【背景技術】
【０００２】
開発したソフトウェアに係るプログラムの動作を確認するため、単体テスト、結合テスト、総合テスト等の各種テストが行われる。これらのテストを実行するために、既存データからテストデータが生成される（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２６０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
業務ロジックと整合する既存データをソフトウェアのテストに利用する場合、ＤＢ（Data Base）に対してＳＱＬ（Structured Query Language）を逐一発行し、既存データの中身を確認しながらテストデータを生成する手法が一般的である。しかし、この手法は作業効率が悪い。また、テストデータがＤＢ未登録の画面入力データを含む場合、ＳＱＬではテストデータの抽出ができず、手作業の工程が発生するとともに、テスト精度の信頼性が低減する。
【０００５】
本願は斯かる事情に鑑みてなされたものである。その目的は、既存データから効率的にテストデータを生成し、テスト精度を向上させることが可能なデータ生成装置等を提供することにある。
【課題を解決するための手段】
【０００６】
本願による開示の一観点は、既存データからソフトウェアの動作を検証するためのテストデータを生成するデータ生成装置において、既存データを受け付ける第１受付手段と、該第１受付手段が受け付けた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成する第１生成手段と、テスト仕様を受け付ける第２受付手段と、該第２受付手段が受け付けたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成する第２生成手段と、生成した第１及び第２制約条件に夫々重みを付ける重み付け手段と、該重み付け手段が重みを付けた第１及び第２制約条件を充足するテストデータを前記第１受付手段が受け付けた既存データから生成する生成手段とを備える。
【発明の効果】
【０００７】
本願による開示の一観点によれば、既存データから効率的にテストデータを生成し、テスト精度を向上させることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】データ生成装置のハードウェア群の一例を示すブロック図である。
【図２】データ生成装置のハードウェア群の一例を示すブロック図である。
【図３】データ処理の流れを示すデータフロー図である。
【図４】ＤＢスキーマ情報の一例を示す説明図である。
【図５】ＤＢスキーマ情報から変換されたプロパティの一例を示す説明図である。
【図６】画面項目情報及び画面遷移情報の一例を示す説明図である。
【図７】画面項目情報及び画面遷移情報から変換されたプロパティの一例を示す説明図である。
【図８】テスト仕様情報の一例を示す説明図である。
【図９】第１住所テーブルのレコードの一例を示す説明図である。
【図１０】第２住所テーブルのレコードの一例を示す説明図である。
【図１１】日付入力ファイルの入力データの一例を示す説明図である。
【図１２】データ形式変換後の既存データの一例を示す説明図である。
【図１３】追加プロパティの一例を示す説明図である。
【図１４】拡張プロパティの一例を示す説明図である。
【図１５】プロパティを充足するテストデータの一例を示す説明図である。
【図１６】既存データからテストデータを生成する処理の手順を示すフローチャートである。
【図１７】新規テストデータの生成に係るデータ処理の流れを示すデータフロー図である。
【図１８】新規テストデータを生成するためのプロパティの一例を示す説明図である。
【図１９】新規テストデータを生成するための追加プロパティの一例を示す説明図である。
【図２０】プロパティを充足する新規テストデータのイメージの一例を示す説明図である。
【図２１】生成済みテストデータから新規テストデータを生成する処理の手順を示すフローチャートである。
【図２２】生成済みテストデータから新規テストデータを生成する処理の手順を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施の形態をその図面に基づいて説明する。本実施の形態に係るデータ生成装置は、例えばＰＣ（パーソナルコンピュータ）、ノート型ＰＣ、ワークステーション等である。以下では、データ生成装置の例として、ＰＣを挙げて説明する。また、本実施の形態に係るデータ生成装置は、ソフトウェアのテストを支援するテストデータを扱うが、論理回路のテストデータを生成することに利用されてもよい。
なお、本発明は、以下の実施の形態に限定されるものではない。
【００１０】
実施の形態１
図１は、データ生成装置１のハードウェア群の一例を示すブロック図である。データ生成装置１は、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、ハードディスク１３、ディスクドライブ１４、通信部１５、タイマ１６、表示部１７及び操作部１８を含む。データ生成装置１の各構成部は、バス１ｂを介して接続されている。
【００１１】
ＣＰＵ１１は、データ生成装置１の各構成部を制御する。ＣＰＵ１１は、ハードディスク１３に記録されたプログラム１Ｐを読み込み、当該プログラム１Ｐを実行する。
ＲＡＭ１２はＣＰＵ１１による処理の過程で必要な作業変数、データ等を一時的に記録する。なお、ＲＡＭ１２は主記憶装置の一例であり、ＲＡＭ１２の代わりにフラッシュメモリ、メモリカード等が用いられてもよい。
【００１２】
ハードディスク１３は、ＣＰＵ１１が実行するプログラム１Ｐを記録している。ハードディスク１３は、データ生成装置１内部に取り付けられるものであっても、データ生成装置１外部に置かれるものであってもよい。なお、ハードディスク１３は補助記憶装置の一例であり、大容量の情報の記録が可能なフラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ＢＤ（Blu-ray Disc、登録商標）等の光ディスク１ａにより代替されてもよい。
【００１３】
ディスクドライブ１４は、外部の記録媒体である光ディスク１ａから情報を読み込み、光ディスク１ａに情報を記録する。
通信部１５は、モデム又はＬＡＮ（Local Area Network）カード等であり、インターネットＮに接続されている。
【００１４】
タイマ１６は、計時を信号としてＣＰＵ１１に送信する。
表示部１７は、例えば液晶ディスプレイ、有機ＥＬ（Electro-Luminescence）ディスプレイ等の画面を有し、ＣＰＵ１１からの指示に従って、プログラム１Ｐに係る様々な画面を表示する。
【００１５】
操作部１８は、ユーザが各種の入力を行うキーボード、マウス、タッチパネル等の入力デバイスを含む。操作部１８は、ユーザによる操作に基づいて入力信号を生成する。生成された入力信号は、バス１ｂを介してＣＰＵ１１に送信される。
【００１６】
データ生成装置１のハードディスク１３には、ＳＡＴ（Satisfiability problem）ソルバ又はＳＭＴ（Satisfiability Modulo Theories）ソルバ２Ｐがインストールされている。
ＳＡＴは、命題論理式又はブール式の充足可能性判定問題であり、命題論理式又はブール式が充足可能であるか否かを判定する問題である。ＳＡＴソルバはＳＡＴを解くプラグラムのことである。ＳＡＴは命題論理を扱うのに対し、ＳＭＴは述語論理を扱う。ＳＭＴソルバ２Ｐは、一階述語論理の充足可能性判定問題を解くプログラムのことである。
【００１７】
ＳＡＴ問題が充足不能である場合、論理式の節に重みを付け、ＳＡＴを最適化問題に拡張したものがＭａｘＳＡＴである。ＭａｘＳＡＴに対応したＳＡＴソルバは、命題論理式を充足する節の重み和が最大になる命題変数への真偽値の割当てを求める。あるいは、ＭａｘＳＡＴに対応したＳＡＴソルバは、命題論理式に違反となる節の重み和が最小になる命題変数への真偽値の割当てを求める。ＳＭＴソルバ２Ｐの中には、ＭａｘＳＡＴに対応したＳＭＴソルバ２Ｐもある。
【００１８】
ＳＡＴソルバ及びＳＭＴソルバ２Ｐとして、例えばｍｉｎｉＳＡＴ、ｚＣｈａｆｆ、ＤＰＬＬ、Ｗａｌｋｓａｔ、Ｙｉｃｅｓ、ＵＣＬＩＤ、ＣＶＣ３、Ｚ３等がある。実施の形態１では、ＭａｘＳＡＴに対応したＳＭＴソルバ２Ｐを使用する。そのようなＳＭＴソルバ２Ｐは、例えばＹｉｃｅｓである。
【００１９】
次に、データ生成装置１の動作について説明する。
図２は、データ生成装置のハードウェア群の一例を示すブロック図である。ハードディスク１３は、既存データの一部である第１住所テーブル１Ｔ及び第２住所テーブル２Ｔを記録している。第１住所テーブル１Ｔ及び第２住所テーブル２Ｔは、どちらも住所と日付とを対応付けて記録するテーブルである。
【００２０】
また、ハードディスク１３は、画面からの入力データを格納した日付入力ファイル１Ｆ及び業務アプリケーションを記録している。日付入力ファイル１Ｆも既存データである。業務アプリケーションは、例えばテストのために大量のテストデータを必要とする大規模業務アプリケーションである。ＣＰＵ１１は、ハードディスク１３からＲＡＭ１２に業務アプリケーションを読み込み、生成されたテストデータを用いて業務アプリケーションのテストを実行する。
なお、第１住所テーブル１Ｔ、第２住所テーブル２Ｔ、日付入力ファイル１Ｆ及び業務アプリケーションは、光ディスク１ａに記録されていてもよいし、通信部１５を介して接続された外部の情報処理装置又は記録装置に記録されていてもよい。
【００２１】
まず、実施の形態１における処理全体の概要について説明する。
図３は、データ処理の流れを示すデータフロー図である。図３は、データ処理の概略を示している。
データ生成装置１は、ＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報を受け付ける。これらの情報は、広義のテスト仕様であり、テスト対象のソフトウェアに係るＤＢ、画面、アプリケーションの設計仕様、業務ロジック及びテストケースに関する情報を含む。広義のテスト仕様に含まれるテスト仕様情報は、狭義のテスト仕様である。テスト仕様情報は、アプリケーションの仕様書及び設計書を参照して作成されるテストケース（テスト条件）を含む。テストケースは、正常ケース及び異常ケースを含む。
なお、広義のテスト仕様は、ＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報の一部あるいはこれらの情報の組み合わせであってもよい。
【００２２】
データ生成装置１は、広義のテスト仕様をＳＭＴソルバ２Ｐが読むことのできる言語で記載されたファイルに変換する処理を後述する規則に従って実行する。以下では、ＳＡＴソルバ又はＳＭＴソルバ２Ｐが読むことのできる言語で記載されたファイル又はファイルの内容をプロパティと呼ぶ。プロパティは、ＳＡＴを解くための制約条件、すなわち命題論理式である。
【００２３】
データ生成装置１は、既存データを受け付け、受け付けた既存データをＳＭＴソルバ２Ｐが読むことのできる言語で記載されたプロパティに変換する処理を実行する。以下では、既存データに基づくプロパティを追加プロパティと区別して呼ぶ。実施の形態１では、既存データ自体がＳＡＴを解くための制約条件に変換される。
なお、変換前の既存データのデータ形式はいかなるデータ形式でもよい。既存データは、ＤＢ、画面入力データ、テキストファイル、所定のアプリケーション専用のファイル、データストリーム、デジタル信号等のいずれでもよい。以下では、既存データの一例として、ＤＢのテーブルレコード及び画面からの入力データを扱う。
【００２４】
データ生成装置１は、変換したプロパティ及び追加プロパティに対して夫々重み付けをする処理を実行する。重み付け処理が施されたプロパティは、ＭａｘＳＡＴの処理が可能な形式のプロパティであり、以下では拡張プロパティと区別して呼ぶ。
【００２５】
データ生成装置１は、拡張プロパティに基づいてＭａｘＳＡＴを解き、与えられたプロパティを最も従属する割り当て（モデル）を出力する。すなわち、データ生成装置１は、最適なテストデータを生成し、出力する。このテストデータには、例えばＤＢのテーブルレコード及び画面からの入力データが含まれる。
なお、ＤＢのテーブルレコード及び画面からの入力データは、別々に出力されてもよいし、まとめて出力されてもよい。
【００２６】
次に、実施の形態１における処理の詳細について説明する。
ＤＢスキーマ情報は、テーブル定義及びテーブル間のＥＲ（Entity Relationship）を含む。
図４は、ＤＢスキーマ情報の一例を示す説明図である。図４には、第１住所テーブル１Ｔのテーブル定義がｘｍｌにより記載されている。例えば、第１住所テーブル１Ｔは２つの列を有し、第１列は名称が住所、データ型がＳｔｒｉｎｇ、ｉｎｄｅｘが１であること等が記載されている。
【００２７】
図５は、ＤＢスキーマ情報から変換されたプロパティの一例を示す説明図である。図５には、例えば第１住所テーブル１Ｔのテーブル定義の一部がプロパティとして記載されている。
【００２８】
第１住所テーブル１Ｔ及び第２住所テーブル２Ｔの構造について説明する。第１住所テーブル１Ｔは、住所列及び日付列を含む。第１住所テーブル１Ｔの住所列及び日付列のデータ型は共にＳｔｒｉｎｇ型である。第１住所テーブル１Ｔの住所列及び日付列は、複合プライマリキーである。
第２住所テーブル２Ｔは、住所列及び日付列を含む。第２住所テーブル２Ｔの住所列及び日付列のデータ型は共にＳｔｒｉｎｇ型である。第２住所テーブル２Ｔの住所列及び日付列は、複合プライマリキーである。
第１住所テーブルと第２住所テーブルとは１対多の関係で結合されている。
【００２９】
図６は、画面項目情報及び画面遷移情報の一例を示す説明図である。画面項目情報及び画面遷移情報は、テスト対象であるアプリケーションの設計仕様に含まれる情報である。画面項目情報及び画面遷移情報は、アプリケーションが従う業務ロジックを含む。図６の例では、初期画面の項目情報がｘｍｌにより記載されている。例えば、オンライン日時の項目について、値を初期化し、入力可能な文字に半角英数字を設定している。
【００３０】
図７は、画面項目情報及び画面遷移情報から変換されたプロパティの一例を示す説明図である。図７には、例えばある画面の初期化について、レコード識別番号はｉｎｔ型、ｎｕｌｌ値を許すか否かはブール型、オンライン日時はＳｔｒｉｎｇ型といった各項目のデータ型がプロパティとして記載されている。
【００３１】
図８は、テスト仕様情報の一例を示す説明図である。テスト仕様情報は、開発したソフトウェアに関する各種のテストケース、すなわちテスト条件を含む。図８の例では、アプリケーションで使用される初期表示画面について、得意先コード、商品コード、商品名等の初期設定仕様が例示されている。データ生成装置１は、正常ケースのテストデータも異常ケースのテストデータも生成することができる。その切り分けは、正常ケース又は異常ケースの条件をテスト仕様情報に記載することによって行われる。
テスト仕様情報から変換されたプロパティについては、図による例示を省略する。
【００３２】
実施の形態１で扱うテスト仕様情報には、画面から入力される日付の情報が含まれる。この画面名称は日付画面であり、日付画面において日付を入力する欄の項目名は日付である。
【００３３】
説明の便宜上、ここでは簡略化したテスト仕様情報が与えられるものとする。そのテスト仕様情報は、第１住所テーブル１Ｔの住所列の値と第２住所テーブル２Ｔの住所列の値とが等しく、第１住所テーブル１Ｔの日付列の値と第２住所テーブル２Ｔの日付列の値と日付画面の日付項目の入力データとが等しいことである。このテスト仕様情報を式で表した場合、次のようになる。
第１住所テーブル．住所＝＝第２住所テーブル．住所
ＡＮＤ
第１住所テーブル．日付＝＝第２住所テーブル．日付＝＝日付画面．日付
上記の例のテスト仕様情報は、ＳＱＬ文のｗｈｅｒｅ句に似ているが、ＳＱＬ文では扱うことができない、画面からの入力データがＤＢのデータと結合されている点がＳＱＬ文と異なる。
【００３４】
ＣＰＵ１１は、広義のテスト仕様を後述の規則に従ってＳＭＴソルバ２Ｐが読むことのできる言語表現に変換し、変換したプロパティをファイルとしてハードディスク１３に記録する。このプロパティファイルのファイル名は、例えばプロパティ．ｙｓである。
プロパティファイルは、３種類のファイルを含む。それらは、ＤＢに関するプロパティファイル、画面を含むアプリケーションに関するプロパティファイル及びテスト条件に関するプロパティファイルである。
なお、プロパティファイルは、ＤＢに関するプロパティファイルと画面を含むアプリケーションに関するプロパティファイルとテスト条件に関するプロパティファイルとに分けられてもよいし、１つのファイルにまとめられてもよい。
【００３５】
上記のテスト仕様情報を後述の規則に従って変換した場合、テスト条件に関するプロパティファイルの内容の一部は例えば次のようになる。
（ａｎｄ（＝第１住所テーブル．住所  第２住所テーブル．住所）（＝第１住所テーブル．日付  第２住所テーブル．日付））
（ａｎｄ（＝第１住所テーブル．日付  日付画面．日付）（＝第２住所テーブル．日付  日付画面．日付））
「ａｎｄ」は論理積を示す。
【００３６】
次に、既存データについて説明する。
データ生成装置１が受け付ける既存データは、第１住所テーブル１Ｔのレコード、第２住所テーブル２Ｔのレコード及び日付画面からの入力データを含む。
図９は、第１住所テーブル１Ｔのレコードの一例を示す説明図である。第１住所テーブル１Ｔの住所列は、例えば「神奈川県川崎市」、「東京都立川市」等の住所を格納している。第１住所テーブル１Ｔの日付列は、例えば「９／１」、「９／２」等の日付を格納している。第１住所テーブル１Ｔのレコード総件数は、５件である。
【００３７】
図１０は、第２住所テーブル２Ｔのレコードの一例を示す説明図である。第２住所テーブル２Ｔの住所列は、例えば「千葉県千葉市」、「東京都港区」等の住所を格納している。第２住所テーブル２Ｔの日付列は、例えば「９／８」、「９／５」等の日付を格納している。第２住所テーブル２Ｔのレコード総件数は、５件である。
【００３８】
図１１は、日付入力ファイル１Ｆの入力データの一例を示す説明図である。日付画面からの入力データは、例えば「８／１」、「９／３」等の日付である。データ生成装置１は、日付画面から入力された日付を、配列番号と対応付けて受け付け、日付入力ファイル１Ｆとしてハードディスク１３に記録する。配列番号は、データの入力順に一致していてもよいし、一致していなくてもよい。日付入力ファイル１Ｆの入力データの総件数は、５件である。
【００３９】
図１１に示した日付入力ファイル１Ｆの詳細は、例えば次のＣＳＶ形式を有するデータである。
レベル，項目名，配列番号，値
レベルは、日付画面から入力されるデータの階層を示す数字である。例えば、受注業務の場合、受注業者は１回の受注処理により複数の商品を受注することがある。受注処理に関する受注画面では、１件の受注レコードに対して１つの受注番号が発番され、複数の商品コードが付与される。従って、その受注画面における受注番号の項目のレベルは１であり、商品番号の項目のレベルは２である。商品コードに紐付けられた受注日、単価、受注数量、受注金額等の項目がある場合、これらの項目のレベルは３である。
日付画面の場合、画面内に日付を入力する欄が明細表の形式で構成されているものとする。かかる場合、明細表の項目のレベルは１であり、明細表内部に設けられた日付の項目のレベルは２となる。
【００４０】
画面からの入力データを記録するファイル名は、「画面名．ｃｓｖ」とし、例えば日付画面．ｃｓｖである。
以下に、日付画面．ｃｓｖの内容を図１１に合わせて例示する。
レベル，項目名，配列番号，値
１，明細表，，
２，日付，０，８／１
２，日付，１，９／３
２，日付，２，８／２１
２，日付，３，９／５
２，日付，４，７／１０
【００４１】
データ生成装置１による既存データの読み込み処理について説明する。
ＣＰＵ１１は、既存データをＳＭＴソルバ２Ｐが読むことのできる言語に変換するため、この言語変換処理の前準備として既存データを所定のデータ形式に変換する。
【００４２】
ＣＰＵ１１は、第１住所テーブル１Ｔ及び第２住所テーブル２Ｔを１テーブルずつ読み込み、各テーブルのレコードを例えばＣＳＶ形式のファイルに変換してハードディスク１３に記録する。ここで、ハードディスク１３に記録するＣＳＶファイルのファイル名は、「テーブル名．ｃｓｖ」とし、例えば第１住所テーブル．ｃｓｖ、第２住所テーブル．ｃｓｖである。
【００４３】
ＣＰＵ１１は、テーブルに関するＣＳＶファイルの出力とは別に、テーブル列のデータ型等の情報を、例えば次のように抽出し、ハードディスク１３に出力する。ファイル名は、例えばテーブル列データ型．ｔｘｔである。
第１住所テーブル
住所，Ｓｔｒｉｎｇ
日付，Ｓｔｒｉｎｇ
第２住所テーブル
住所，Ｓｔｒｉｎｇ
日付，Ｓｔｒｉｎｇ
【００４４】
ＣＰＵ１１は、画面に関するＣＳＶファイルの出力とは別に、画面からの入力データのデータ型等の情報を、例えば次のように抽出し、ハードディスク１３に出力する。ファイル名は、例えば画面項目データ型．ｔｘｔである。
日付画面
日付，Ｓｔｒｉｎｇ
【００４５】
ＣＰＵ１１は、第１住所テーブル．ｃｓｖ、第２住所テーブル．ｃｓｖをＲＡＭ１２に読み込む。ＣＰＵ１１は、ＲＡＭ１２に読み込んだＣＳＶファイルの１レコードを次のデータ形式に変換する。
テーブル名．列名［ｉ］＝＝値
ｉは配列番号又はレコードの行番号である。すなわち、テーブル名と列名とをテーブル名が左になる順にピリオドで結合する。結合したテーブル名及び列名の右に角括弧書きのｉを結合する。そして、さらに角括弧書きのｉに対して右から＝＝と値とを結合する。
１レコードに複数の列が存在する場合、スペース、ａｎｄ、スペースで各列のデータを連結する。例えば、２つの列を有するテーブルの場合、変換後のデータ形式は次の通りである。
テーブル名．列名１［ｉ］＝＝値  ａｎｄ  テーブル名．列名２［ｉ］＝＝値
【００４６】
ＣＰＵ１１は、テーブル名．ｃｓｖに記録された１行のレコードを先頭から改行文字まで読み込み、上述のデータ形式の変換処理を実行する。ＣＰＵ１１は、ｉをインクリメントして、次の行のレコードについて同様にデータ形式を変換する。ＣＰＵ１１は、ＥＯＦ（End Of File）に達した場合、処理を終了する。
ＣＰＵ１１は、データ形式変換後のテーブルレコードをハードディスク１３に記録する。その際のファイル名は、「テーブル名．ｔｘｔ」とし、例えば第１住所テーブル．ｔｘｔ、第２住所テーブル．ｔｘｔである。
【００４７】
ＣＰＵ１１は、日付画面．ｃｓｖをＲＡＭ１２に読み込む。ＣＰＵ１１は、ＲＡＭ１２に読み込んだ日付画面．ｃｓｖのレコードを次のデータ形式に変換し、テキストファイルとしてハードディスク１３に記録する。
画面名．明細表名．項目名［ｊ］＝＝値
ｊは配列番号又は入力データの行番号である。すなわち、画面名と明細表名と項目名とをこの順で左から右へピリオドで結合する。結合した画面名、明細表名及び項目名の右に角括弧書きのｊを結合する。そして、さらに角括弧書きのｊに対して右から＝＝と値とを結合する。
明細表に複数の項目が存在する場合、スペース、ａｎｄ、スペースで各項目のデータを連結する。例えば、変換後のデータ形式は次の通りである。
画面名．明細表名．項目名１［ｊ］＝＝値  ａｎｄ  画面名．明細表名．項目名２［ｊ］＝＝値
【００４８】
ＣＰＵ１１は、日付画面．ｃｓｖを先頭から改行文字まで読み込んだ場合、ｊをインクリメントして、次の行の入力データについて同様にデータ形式を変換する。ＣＰＵ１１は、ＥＯＦ（End Of File）に達した場合、処理を終了する。
ＣＰＵ１１は、データ形式変換後の画面入力データをハードディスク１３に記録する。その際のファイル名は、「画面名．ｔｘｔ」とし、例えば日付画面．ｔｘｔである。
【００４９】
図１２は、データ形式変換後の既存データの一例を示す説明図である。図１２では、Ｓｔｒｉｎｇ型の値は、その値が文字列であることを明示するため、ダブルクォーテーションで囲まれている。図１２では、第１住所テーブル．ｔｘｔ、第２住所テーブル．ｔｘｔ及び日付画面．ｔｘｔの内容をまとめて示している。
なお、ＤＢ及び画面に係るデータ形式変換後の既存データについて、１つのファイルにまとめてＣＰＵ１１がハードディスク１３に記録してもよいことは勿論である。
【００５０】
ＣＰＵ１１は、テーブル列データ型．ｔｘｔ、画面項目データ型．ｔｘｔを読み込み、既存データに関するｄｅｆｉｎｅ文を作成する。例えば、ｄｅｆｉｎｅ文は以下のようである。
（ｄｅｆｉｎｅ  テーブル名  ：：（−＞列のデータ型  列のデータ型））
（ｄｅｆｉｎｅ  列名  ：：データ型）
上記を第１住所テーブルに当てはめた場合、ｄｅｆｉｎｅ文は、
（ｄｅｆｉｎｅ  第１住所テーブル  ：：（−＞Ｓｔｒｉｎｇ  Ｓｔｒｉｎｇ））
（ｄｅｆｉｎｅ  住所  ：：Ｓｔｒｉｎｇ）
（ｄｅｆｉｎｅ  日付  ：：Ｓｔｒｉｎｇ）
となる。ＣＰＵ１１は、第２住所テーブル及び日付画面のｄｅｆｉｎｅ文も同様にして作成する。
【００５１】
ＣＰＵ１１は、既存データである第１住所テーブル．ｔｘｔ、第２住所テーブル．ｔｘｔ及び日付画面．ｔｘｔをＲＡＭ１２に読み込み、読み込んだ既存データをＳＭＴソルバ２Ｐが読むことのできる言語表現に変換する。
【００５２】
ＣＰＵ１１は、既存データのデータ形式が以下であるとした場合、
Ａ＝＝Ｂ  ａｎｄ  Ｃ＝＝Ｄ  ａｎｄ  …
上記の既存データをＳＭＴソルバ２Ｐが読むことのできる次の表現に変換する。
（ａｎｄ（＝Ａ  Ｂ）（＝Ｃ  Ｄ）…）
すなわち、既存データは、スペース、ａｎｄ、スペースの順に並んだ文字列で結合されたデータ単位であるＡ＝＝Ｂ、Ｃ＝＝Ｄ等から構成されている。これらのデータ単位は、＝＝で結合された２つの文字列を有している。例えば、データ単位がＡ＝＝Ｂである場合、データ単位はＡとＢとの文字列を有している。そこで、ＣＰＵ１１は、１つのデータ単位であるＡ＝＝Ｂから、ＡとＢとを抜き出し、左から右へ向かって左丸括弧、イコール、Ａ、スペース、Ｂ、右丸括弧の順に各文字列を結合した文字列を作成する。この文字列処理は１つのデータ単位の変換に該当する。ＣＰＵ１１は、他のデータ単位についても、同様の文字列を作成する。ＣＰＵ１１は、データ単位ごとに変換した文字列を変換前の既存データのデータ単位が並んでいた順序と対応する順序で右端に次々と結合する。ＣＰＵ１１は、結合したデータ単位群の左端にａｎｄを結合し、さらに左端と右端とに夫々左丸括弧と右丸括弧とを結合し、変換処理を終了する。このように、ＳＭＴソルバ２Ｐが読むことのできる表現は、既存データに含まれるＡ、Ｂ、Ｃ、Ｄ等の文字列と、左丸括弧、ａｎｄ、イコール、右丸括弧の文字列とを用いて文字列処理される上述の規則がある。
なお、当該規則は、ＳＭＴソルバ２Ｐ又はＳＡＴソルバの種類によって異なる。
【００５３】
上述の規則に則り、第１住所テーブル．ｔｘｔの既存データを当該規則に当てはめた場合、
第１住所テーブル.住所［０］＝＝“神奈川県川崎市”  ａｎｄ  第１住所テーブル.日付［０］＝＝“９／１”は、
（ａｎｄ（＝第１住所テーブル.住所［０］  “神奈川県川崎市”)(＝第１住所テーブル.日付［０］  “９／１”））
となる。
【００５４】
図１３は、追加プロパティの一例を示す説明図である。最初の５行は、第１住所テーブル１Ｔに基づく制約条件に該当する。次の５行は、第２住所テーブル２Ｔに基づく制約条件に該当する。最後の５行は、日付画面から入力された入力データに基づく制約条件に該当する。
ＣＰＵ１１は、既存データから述語論理式に変換したプロパティを追加プロパティのファイルとしてハードディスク１３に記録する。そのファイル名は、例えば追加プロパティ．ｙｓである。
【００５５】
ＣＰＵ１１は、ここまでの段階で生成したプロパティ及び追加プロパティに夫々重みを付けた拡張プロパティのファイルを生成する。すなわち、ＣＰＵ１１は、プロパティ．ｙｓ及び追加プロパティ．ｙｓをハードディスク１３からＲＡＭ１２に読み込み、次の形式に従って夫々のファイルのプロパティに重み付けをした拡張プロパティのファイルを生成する。
（ａｓｓｅｒｔ＋プロパティの内容  重みの値）
ａｓｓｅｒｔは、制約式を追加するコマンドであり、プロパティの内容及び重みの値は引数の述語である。ここで、プロパティ．ｙｓのプロパティの重みを追加プロパティ．ｙｓの追加プロパティの重みよりも重く設定する。例えば、プロパティ．ｙｓのプロパティの重みを１００に、追加プロパティ．ｙｓの追加プロパティの重みを１に設定する。すなわち、ＤＢ制約、アプリケーション制約及びテスト条件は、必ず充足すべき制約条件としてＭａｘＳＡＴを解くＳＭＴソルバ２Ｐに設定するため、既存データに基づく制約条件よりも重い重みが付けられる。
ＣＰＵ１１は、プロパティ及び追加プロパティに夫々重み付けをした制約条件を拡張プロパティとしてハードディスク１３に記録する。この拡張プロパティのファイル名は、例えば拡張プロパティ．ｙｓである。
【００５６】
図１４は、拡張プロパティの一例を示す説明図である。各行の最後のｉｄは、識別符号である。最初の２行は、プロパティ．ｙｓに基づく制約条件に該当し、１００の重みが付けられている。最初の２行以外の行は、追加プロパティ．ｙｓに基づく制約条件に該当し、１の重みが付けられている。最後のｍａｘ−ｓａｔは、ＭａｘＳＡＴを実行するコマンドである。すなわち、ｍａｘ−ｓａｔは充足可能性を最も充足する割り当てを抽出するコマンドである。
【００５７】
ＣＰＵ１１は、拡張プロパティ．ｙｓをＲＡＭ１２に読み込み、拡張プロパティに基づく制約条件の充足可能性を検査する。ＣＰＵ１１は、制約条件の充足可能性を最も従属する割り当て（モデル）を拡張プロパティから抽出し、表示部１７に表示する。あるいは、ＣＰＵ１１は、制約条件を充足しない述語論理式を拡張プロパティから抽出し、表示部１７に表示してもよい。
制約条件の充足可能性を最も従属する割り当て（モデル）は、拡張プロパティに基づいて生成されたテストデータであるが、このテストデータは１の重みが付けられた既存データから生成又は抽出されたデータである。
なお、ＣＰＵ１１は検査結果をファイルとしてハードディスク１３に出力してもよい。
【００５８】
ＣＰＵ１１は、検査結果として例えば次の識別符号で表された内容を表示部１７に表示する。
Unsatisfied assertion ids：３，４，７，８，１０，１１，１３，１５，１７
従って、満たされる組み合わせは１，２，５，６，９，１２，１４，１６の８つである。
【００５９】
図１５は、プロパティを充足するテストデータの一例を示す説明図である。図１５Ａは、第１住所テーブル１Ｔから抽出されたテストデータを示す。図１５Ｂは、第２住所テーブル２Ｔから抽出されたテストデータを示す。図１５Ｃは、日付入力ファイル１Ｆから抽出されたテストデータを示す。図１５Ａ、図１５Ｂ及び図１５Ｃの各１行のデータセットが１件のテストデータを示す。すなわち、図１５は、２件のテストデータを示している。
【００６０】
図１６は、既存データからテストデータを生成する処理の手順を示すフローチャートである。
ＣＰＵ１１は、ＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報をＲＡＭ１２に読み込む（ステップＳ１０１）。ＣＰＵ１１は、ＲＡＭ１２に読み込んだテスト仕様情報等をプロパティに変換し、変換したプロパティをハードディスク１３に記録する（ステップＳ１０２）。ＣＰＵ１１は、既存データをＲＡＭ１２に読み込む（ステップＳ１０３）。ＣＰＵ１１は、ＲＡＭ１２に読み込んだ既存データを追加プロパティに変換し、変換した追加プロパティをハードディスク１３に記録する（ステップＳ１０４）。
【００６１】
ＣＰＵ１１は、ハードディスク１３からプロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだプロパティに１００の重みを付ける（ステップＳ１０５）。ＣＰＵ１１はハードディスク１３から追加プロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだ追加プロパティに１の重みを付ける（ステップＳ１０６）。ＣＰＵ１１は、重み付けをしたプロパティ及び追加プロパティを拡張プロパティとしてハードディスク１３に記録する（ステップＳ１０７）。
【００６２】
ＣＰＵ１１は、ハードディスク１３から拡張プロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだ拡張プロパティをＳＭＴソルバ２Ｐに入力する（ステップＳ１０８）。ＣＰＵ１１は、ＳＭＴソルバ２Ｐからテストデータを受け付け、ＲＡＭ１２に記録する（ステップＳ１０９）。ＣＰＵ１１は、ＳＭＴソルバ２Ｐから受け付け、ＲＡＭ１２に記録したテストデータをハードディスク１３に記録し（ステップＳ１１０）、処理を終了する。
【００６３】
図１６における各ステップの順序は、上述に限らない。例えば、ステップＳ１０１及びステップＳ１０２は、ステップＳ１０３及びステップＳ１０４と入れ替えてもよい。また、ステップＳ１０５及びステップＳ１０６は順序が逆でもよい。
ステップＳ１０８及びステップＳ１０９では、ＳＭＴソルバ２Ｐを外部の情報処理装置のように記載しているが、実際にはＣＰＵ１１はＳＭＴソルバ２ＰをＲＡＭ１２にロードし、自らがＭａｘＳＡＴを実行している。ただし、ＣＰＵ１１は通信部１５を介して外部の情報処理装置にＭａｘＳＡＴを実行させ、その結果であるテストデータを外部の情報処理装置から受け付けてもよい。すなわち、テストデータはデータ生成装置１単体によって生成されてもよく、データ生成装置１及び外部の情報処理装置を含むシステムによって生成されてもよい。
【００６４】
データ生成装置１によれば、既存データからテストデータを生成することができる。ここでの既存データは、既存システムと連携し、かつ本番環境にあるＤＢデータ及び画面からの入力データを含む。データ生成装置１は、既存データをＳＭＴソルバ２Ｐが解く制約条件に変換することにより、効率的にテストデータを生成し、テスト精度を向上させることができる。
【００６５】
データ生成装置１によれば、ＥＲ関連定義を含むＤＢ制約、アプリケーションの仕様及びテスト条件の重みを、既存データに基づく追加プロパティの重みよりも重く設定した拡張プロパティを生成することができる。これにより、データ生成装置１は、重み付けＭａｘＳＡＴを実行することができ、必ず充足すべきＤＢ制約、アプリケーション仕様及びテスト条件の制約を備えたテストデータを既存データから生成することができる。
【００６６】
上述では、ＣＰＵ１１は、第１住所テーブル．ｔｘｔ、第２住所テーブル．ｔｘｔ及び日付画面．ｔｘｔを生成及び記録した。しかし、これらのテキストファイルは作業ファイルであり、必須ではない。ＣＰＵ１１は、第１住所テーブル．ｃｓｖ、第２住所テーブル．ｃｓｖ及び日付画面．ｃｓｖをハードディスク１３からＲＡＭ１２に読み込み、メモリ空間のみを使用して追加プロパティを生成してもよい。
同様に上述では、プロパティ．ｙｓ、追加プロパティ．ｙｓ及び拡張プロパティ．ｙｓを作業ファイルあるいは中間ファイルとして使用している。しかし、これらの作業ファイル等も必須ではない。ＣＰＵ１１は、第１住所テーブル．ｃｓｖ、第２住所テーブル．ｃｓｖ、テーブル列データ型．ｔｘｔ、日付画面．ｃｓｖ及び画面項目データ型．ｔｘｔをハードディスク１３からＲＡＭ１２に読み込む。そして、ＣＰＵ１１は、ＲＡＭ１２に読み込んだこれらのデータからメモリ空間のみを使用してテストデータを生成してもよい。
【００６７】
上述では、データ生成装置１は、ＭａｘＳＡＴを解くためにＳＭＴソルバ２Ｐを使用した。しかし、ＭａｘＳＡＴを解くためにＳＡＴソルバが使用されてもよいことは勿論である。なお、上述では、ａｓｓｅｒｔ、ｍａｘ−ｓａｔ等のコマンドを使用したが、これらのコマンドはＳＡＴ又はＳＭＴのツールにより異なる。上述のコマンドは一例である。
【００６８】
上述のＭａｘＳＡＴでは、命題論理式を充足する節の重み和が最大になる命題変数への真偽値の割当て、又は命題論理式に違反となる節の重み和が最小になる命題変数への真偽値の割当てが求められる。しかし、命題論理式を充足する節の重み積が最大になる命題変数への真偽値の割当て、又は命題論理式に違反となる節の重み積が最小になる命題変数への真偽値の割当てが求められてもよい。データ生成装置１は、上記に従い、拡張プロパティに記載されたプロパティの重み積に基づいて、テストデータを生成してもよい。
【００６９】
上述では、データ生成装置１は、拡張プロパティに基づいてＭａｘＳＡＴを解き、テストデータを生成した。しかし、データ生成装置１は、プロパティ及び追加プロパティに基づいてＳＡＴを解き、テストデータを生成してもよい。すなわち、データ生成装置１は、プロパティ及び追加プロパティに重み付けをせずに、ＳＡＴを解き、テストデータを生成してもよい。あるいは、データ生成装置１は、プロパティ及び追加プロパティにすべて１の重みを付けた拡張プロパティに基づいて、いわゆる重みなしＭａｘＳＡＴ（unweighted MaxSAT）を実行してもよい。
【００７０】
実施の形態２
実施の形態２は、新規テストデータの追加生成に関する。
図１７は、新規テストデータの生成に係るデータ処理の流れを示すデータフロー図である。図１７は、データ処理の概略を示している。
【００７１】
データ生成装置１は、新たな追加仕様情報を含むＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報を受け付ける。追加仕様情報は、新規テストデータを追加生成するために、ＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報に付け加えられる広義のテスト仕様である。追加仕様情報には、ＤＢ制約、アプリケーション制約若しくはテスト条件のいずれか又は全てに関与する新たな情報が含まれていてもよい。また、追加仕様情報は、「生成済みテストデータが２件である場合、さらに生成される新規テストデータの件数は１件である」といった真偽を判定することができる命題であってもよい。
追加仕様情報のデータは、ＸＭＬ、ＣＳＶ、ＴＸＴ、ＤＢ、表計算ソフトのファイル等どのような形式で与えられてもよい。
【００７２】
あるいは、既にＤＢスキーマ情報、画面項目情報、画面遷移情報及びテスト仕様情報を受け付けて生成したプロパティ．ｙｓがハードディスク１３に記録されている場合、データ生成装置１は、追加仕様情報のみを受け付けてもよい。かかる場合、データ生成装置１は、追加仕様情報を前述の規則に従ってプロパティに変換し、変換したプロパティを生成済みのプロパティ．ｙｓに追加し、プロパティ．ｙｓを更新する。
【００７３】
データ生成装置１は、新規テストデータを追加生成する場合、生成済みのテストデータに対して既存データ変換処理を実行する。データ生成装置１は、新たな追加プロパティを例えば追加プロパティ．ｙｓとしてハードディスク１３に記録する。
【００７４】
データ生成装置１は、新たなプロパティ及び新たな追加プロパティに対して重み付け処理を実行し、新たな拡張プロパティを生成する。データ生成装置１は、新たに生成した拡張プロパティに基づいて、重み付き制約条件を最も充足する新規テストデータを生成し、表示部１７、ハードディスク１３等に出力する。
【００７５】
図１８は、新規テストデータを生成するためのプロパティの一例を示す説明図である。図１８の１行及び２行目は、実施の形態１におけるプロパティ．ｙｓと同じである。破線で囲まれた図１８の３行及び４行目は、追加仕様情報に基づくプロパティ部分である。図１８の追加仕様情報は、例えばＤＢデータ構造を表すＥＲ関連情報である。
【００７６】
図１９は、新規テストデータを生成するための追加プロパティの一例を示す説明図である。図１９の例は、生成した図１５のテストデータに基づいてＳＭＴソルバ２Ｐのために変換された追加プロパティを示している。図１９では、「東京都港区」と「埼玉県川口市」との２つの住所について、夫々第１住所テーブル１Ｔ及び第２住所テーブル２Ｔのデータ、並びに日付入力ファイル１Ｆの入力データである「９／５」と「９／３」とが示されている。
【００７７】
ＣＰＵ１１は、ここまでの段階で生成した図１８のプロパティ及び図１９の追加プロパティに重みを付けた拡張プロパティを生成する。図１８のプロパティ及び図１９の追加プロパティに付ける重みは、例えば夫々１００、１である。ＣＰＵ１１は、新規テストデータのために生成した拡張プロパティ．ｙｓをハードディスク１３に記録する。
【００７８】
ＣＰＵ１１は、拡張プロパティ．ｙｓをハードディスク１３からＲＡＭ１２に読み込み、拡張プロパティに基づく制約条件の充足可能性を検査する。ＣＰＵ１１は、制約条件の充足可能性を最も従属する割り当て（モデル）を抽出し、表示部１７、ハードディスク１３等に出力する。ここでの制約条件の充足可能性を最も従属する割り当て（モデル）は、新規テストデータである。
【００７９】
図２０は、プロパティを充足する新規テストデータのイメージの一例を示す説明図である。図２０Ａは、第１住所テーブル１Ｔのレコードに対応する新規テストデータを示す。図２０Ｂは、第２住所テーブル２Ｔのレコードに対応する新規テストデータを示す。図２０Ｃは、日付入力ファイル１Ｆの入力データに対応する新規テストデータを示す。図２０Ａ、図２０Ｂ及び図２０Ｃの各１行のデータセットが１件のテストデータを示す。図２０Ａ、図２０Ｂ及び図２０Ｃの夫々について、最初の２行までは生成済みのテストデータを、太線で囲んだ３行目は追加された新規テストデータを示している。
【００８０】
ＳＭＴソルバ２Ｐが内部的に扱う情報は数字列であり、漢字等は扱われる情報の対象ではない。数字列からなるテストデータに基づいて追加プロパティを再生成した場合、当初のテスト仕様及び追加仕様情報に基づく制約条件を充足する新規テストデータが生成される。図２０における「埼玉県大宮市」に係る新規テストデータは、分かりやすくするため、あくまで新規テストデータが追加されるイメージを表現している。
【００８１】
図２１及び図２２は、生成済みテストデータから新規テストデータを生成する処理の手順を示すフローチャートである。ステップＳ２０１からステップＳ２０９までの処理は、夫々図１６で示したステップＳ１０１からステップＳ１０９までの処理と同一であるので、これらの処理に関する説明は省略する。
【００８２】
ＣＰＵ１１は、新規テストデータを追加生成するか否か判定する（ステップＳ２１０）。なお、ＣＰＵ１１が新規テストデータを追加生成するか否か判定する判定材料は、例えばユーザが操作部１８から入力した指令に基づくものとする。
【００８３】
ＣＰＵ１１は、新規テストデータを追加生成すると判定した場合、（ステップＳ２１０：ＹＥＳ）、追加仕様情報をＲＡＭ１２に読み込む（ステップＳ２１１）。ＣＰＵ１１は、ＲＡＭ１２に読み込んだ追加仕様情報をプロパティに変換し、変換したプロパティをプロパティファイルに追加し、プロパティファイルを更新する（ステップＳ２１２）。
【００８４】
ＣＰＵ１１は、生成済みテストデータをＲＡＭ１２から読み込む（ステップＳ２１３）。ＣＰＵ１１は、ＲＡＭ１２から読み込んだ生成済みテストデータを追加プロパティに変換し、変換した追加プロパティをハードディスク１３に記録する（ステップＳ２１４）。
【００８５】
ＣＰＵ１１は、ハードディスク１３からプロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだプロパティに１００の重みを付ける（ステップＳ２１５）。ＣＰＵ１１はハードディスク１３から追加プロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだ追加プロパティに１の重みを付ける（ステップＳ２１６）。ＣＰＵ１１は、重み付けをしたプロパティ及び追加プロパティを拡張プロパティとしてハードディスク１３に記録する（ステップＳ２１７）。
【００８６】
ＣＰＵ１１は、ハードディスク１３から拡張プロパティをＲＡＭ１２に読み込み、ＲＡＭ１２に読み込んだ拡張プロパティをＳＭＴソルバ２Ｐに入力する（ステップＳ２１８）。ＣＰＵ１１は、ＳＭＴソルバ２Ｐからテストデータを受け付け、受け付けたテストデータをＲＡＭ１２に記録して（ステップＳ２１９）、ステップＳ２１０に処理を戻す。
【００８７】
ＣＰＵ１１は、新規テストデータを追加生成しないと判定した場合、（ステップＳ２１０：ＮＯ）、ＳＭＴソルバ２Ｐから受け付け、ＲＡＭ１２に記録したテストデータをハードディスク１３に記録し（ステップＳ２２０）、処理を終了する。
【００８８】
実施の形態２において、追加仕様情報がなく、実施の形態１と同様のプロパティ．ｙｓに基づいてＭａｘＳＡＴが実行された場合、生成済みのテストデータが再生成されるだけで、新規テストデータは生成されない。しかし、追加仕様情報が追加された場合、新たなプロパティがプロパティ．ｙｓに追加される。これにより、データ生成装置１は生成済みのテストデータから必ず満足しなければならない新規のプロパティを充足する新規テストデータを追加生成することができる。
【００８９】
データ生成装置１を動作させるためのプログラム１Ｐ、ＳＡＴソルバ及びＳＭＴソルバ２Ｐは、ディスクドライブ１４を介して光ディスク１ａから読み込まれてもよい。あるいは、プログラム１Ｐ、ＳＡＴソルバ及びＳＭＴソルバ２Ｐは、通信部１５を介して外部の情報処理装置又は記録装置から読み込まれてもよい。さらに、プログラム１Ｐ、ＳＡＴソルバ及びＳＭＴソルバ２Ｐを記録したフラッシュメモリ等の半導体メモリ１ｃが、データ生成装置１内に実装されていてもよい。
【００９０】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００９１】
以上の実施の形態１又は２を含む実施形態に関し、さらに以下の付記を開示する。
【００９２】
（付記１）
既存データからソフトウェアの動作を検証するためのテストデータを生成するデータ生成装置において、
既存データを受け付ける第１受付手段と、
該第１受付手段が受け付けた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成する第１生成手段と、
テスト仕様を受け付ける第２受付手段と、
該第２受付手段が受け付けたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成する第２生成手段と、
生成した第１及び第２制約条件に夫々重みを付ける重み付け手段と、
該重み付け手段が重みを付けた第１及び第２制約条件を充足するテストデータを前記第１受付手段が受け付けた既存データから生成する生成手段と
を備えるデータ生成装置。
【００９３】
（付記２）
前記第１及び第２制約条件は論理式から構成され、
前記重み付け手段は、第２制約条件の論理式を第１制約条件の論理式より重く重み付けし、
前記生成手段は、前記第１及び第２制約条件の論理式を充足し、かつ前記重み付け手段が該第１及び第２制約条件の論理式に付けた重みの和又は積が最大になるテストデータを前第１記受付手段が受け付けた既存データから生成する
付記１に記載のデータ生成装置。
【００９４】
（付記３）
前記第１生成手段は、前記生成手段が生成したテストデータに基づいて第３制約条件を予め定められた規則に従った文字列処理により生成する手段を有し、
追加テスト仕様を受け付ける第３受付手段を備え、
前記第２生成手段は、前記第３受付手段が受け付けた追加テスト仕様に基づく制約条件が前記第２制約条件に追加された第４制約条件を予め定められた規則に従った文字列処理により生成する手段を有し、
前記重み付け手段は、生成した第３及び第４制約条件に夫々重み付けし、
前記生成手段は、前記重み付け手段が重み付けた第３及び第４制約条件を充足するテストデータを、生成したテストデータから再帰的に生成する
付記１又は付記２に記載のデータ生成装置。
【００９５】
（付記４）
前記第３及び第４制約条件は論理式から構成され、
前記重み付け手段は、第４制約条件の論理式を第３制約条件の論理式より重く重み付けし、
前記生成手段は、前記第３及び第４制約条件の論理式を充足し、かつ前記重み付け手段が該第３及び第４制約条件の論理式に付けた重みの和又は積が最大になるテストデータを、生成したテストデータから再帰的に生成する
付記３に記載のデータ生成装置。
【００９６】
（付記５）
前記テスト仕様又は追加テスト仕様は、前記ソフトウェア、該ソフトウェアが使用するデータベース又は該ソフトウェアの検証に係るテストケースに関する情報を含む
付記３又は付記４に記載のデータ生成装置。
【００９７】
（付記６）
制御部を有するデータ生成装置が既存データからソフトウェアの動作を検証するためのテストデータを生成するデータ生成方法において、
前記制御部が、
既存データを受け付け、
受け付けた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成し、
テスト仕様を受け付け、
受け付けたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成し、
生成した第１及び第２制約条件に夫々重みを付け、
重みを付けた第１及び第２制約条件を充足するテストデータを前記既存データから生成する
データ生成方法。
【００９８】
（付記７）
前記第１及び第２制約条件は論理式から構成され、
前記第２制約条件の論理式を前記第１制約条件の論理式より重く重み付けし、
前記第１及び第２制約条件の論理式を充足し、かつ該第１及び第２制約条件の論理式に付けた重みの和又は積が最大になるテストデータを前記既存データから生成する
付記６に記載のデータ生成方法。
【００９９】
（付記８）
生成したテストデータに基づいて第３制約条件を予め定められた規則に従った文字列処理により生成し、
追加テスト仕様を受け付け、
受け付けた追加テスト仕様に基づく制約条件が前記第２制約条件に追加された第４制約条件を予め定められた規則に従った文字列処理により生成し、
生成した第３及び第４制約条件に夫々重みを付け、
重みを付けた第３及び第４制約条件を充足するテストデータを、生成したテストデータから再帰的に生成する
付記６又は付記７に記載のデータ生成方法。
【０１００】
（付記９）
前記第３及び第４制約条件は論理式から構成され、
前記第４制約条件の論理式を前記第３制約条件の論理式より重く重み付けし、
前記第３及び第４制約条件の論理式を充足し、かつ該第３及び第４制約条件の論理式に付けた重みの和又は積が最大になるテストデータを、生成したテストデータから再帰的に生成する
付記８に記載のデータ生成方法。
【０１０１】
（付記１０）
前記テスト仕様又は追加テスト仕様は、前記ソフトウェア、該ソフトウェアが使用するデータベース又は該ソフトウェアの検証に係るテストケースに関する情報を含む
付記８又は付記９に記載のデータ生成方法。
【０１０２】
（付記１１）
既存データからソフトウェアの動作を検証するためのテストデータを生成する処理をコンピュータに実行させるプログラムにおいて、
与えられた既存データに基づいて第１制約条件を予め定められた規則に従った文字列処理により生成し、
与えられたテスト仕様に基づいて第２制約条件を予め定められた規則に従った文字列処理により生成し、
生成した第１及び第２制約条件に夫々重みを付け、
重みを付けた第１及び第２制約条件を充足するテストデータを前記既存データから生成する
処理をコンピュータに実行させるプログラム。
【０１０３】
（付記１２）
前記第１及び第２制約条件は論理式から構成され、
前記重みを付ける処理は、前記第２制約条件の論理式を前記第１制約条件の論理式より重く重み付けし、
前記テストデータを生成する処理は、前記第１及び第２制約条件の論理式を充足し、かつ該第１及び第２制約条件の論理式に付けた重みの和又は積が最大になるテストデータを前記既存データから生成する
付記１１に記載のプログラム。
【０１０４】
（付記１３）
前記第１制約条件を生成する処理は、前記テストデータを生成する処理が生成したテストデータに基づいて第３制約条件を予め定められた規則に従った文字列処理により生成し、
前記第２制約条件を生成する処理は、与えられた追加テスト仕様に基づく制約条件が第２制約条件に追加された第４制約条件を予め定められた規則に従った文字列処理により生成し、
前記重みを付ける処理は、生成した第３及び第４制約条件に夫々重みを付け、
前記テストデータを生成する処理は、前記重みを付ける処理が重みを付けた第３及び第４制約条件を充足するテストデータを、生成したテストデータから再帰的に生成する
付記１１又は付記１２に記載のプログラム。
【０１０５】
（付記１４）
前記第３及び第４制約条件は論理式から構成され、
前記重みを付ける処理は、前記第４制約条件の論理式を前記第３制約条件の論理式より重く重み付けし、
前記テストデータを生成する処理は、前記第３及び第４制約条件の論理式を充足し、かつ該第３及び第４制約条件に付けた重みの和又は積が最大になるテストデータを、生成したテストデータから再帰的に生成する
付記１３に記載のプログラム。
【０１０６】
（付記１５）
前記テスト仕様又は追加テスト仕様は、前記ソフトウェア、該ソフトウェアが使用するデータベース又は該ソフトウェアの検証に係るテストケースに関する情報を含む
付記１３又は付記１４に記載のプログラム。
【符号の説明】
【０１０７】
１    データ生成装置
１１  ＣＰＵ
１２  ＲＡＭ
１３  ハードディスク
１７  表示部
１８  操作部
１Ｐ  プログラム
２Ｐ  ＳＭＴソルバ
１Ｔ  第１住所テーブル
２Ｔ  第２住所テーブル
１Ｆ  日付入力ファイル
【図１】
0005561142.tif 000002
【図２】
0005561142.tif 000003
【図３】
0005561142.tif 000004
【図４】
0005561142.tif 000005
【図５】
0005561142.tif 000006
【図６】
0005561142.tif 000007
【図７】
0005561142.tif 000008
【図８】
0005561142.tif 000009
【図９】
0005561142.tif 000010
【図１０】
0005561142.tif 000011
【図１１】
0005561142.tif 000012
【図１２】
0005561142.tif 000013
【図１３】
0005561142.tif 000014
【図１４】
0005561142.tif 000015
【図１５】
0005561142.tif 000016
【図１６】
0005561142.tif 000017
【図１７】
0005561142.tif 000018
【図１８】
0005561142.tif 000019
【図１９】
0005561142.tif 000020
【図２０】
0005561142.tif 000021
【図２１】
0005561142.tif 000022
【図２２】
0005561142.tif 000023