JP5292956B2 - テストデータ生成プログラム - Google Patents

テストデータ生成プログラム Download PDF

Info

Publication number
JP5292956B2
JP5292956B2 JP2008177573A JP2008177573A JP5292956B2 JP 5292956 B2 JP5292956 B2 JP 5292956B2 JP 2008177573 A JP2008177573 A JP 2008177573A JP 2008177573 A JP2008177573 A JP 2008177573A JP 5292956 B2 JP5292956 B2 JP 5292956B2
Authority
JP
Japan
Prior art keywords
record
variation
schema
data
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008177573A
Other languages
English (en)
Other versions
JP2009099126A (ja
Inventor
朝子 片山
忠弘 上原
敏裕 小高
ユカ 田中
徹 手塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008177573A priority Critical patent/JP5292956B2/ja
Publication of JP2009099126A publication Critical patent/JP2009099126A/ja
Application granted granted Critical
Publication of JP5292956B2 publication Critical patent/JP5292956B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本技術は、業務アプリケーション・プログラム等のテストで使用されるテストデータを自動生成する分野の技術に関する。
業務アプリケーション・プログラム等のテストを行う際にはテスト実行環境を作成する必要があるが、テスト実行環境としてデータベースに何らかのデータを登録しなければならない場合がある。その場合、以下のような問題があった。
(A)業務上整合性を有するデータの登録
データベースに登録すべきデータは、業務上整合性を有するデータでなければならないが、この点を考慮してデータベースにデータを登録していない場合には、正しいテストが行われない可能性がある。
DBスキーマ情報を利用してデータを作成する例としては、例えば特開2000−20529号公報が存在しているが、スキーマ情報だけで業務上のルールを全て表すことができるわけではない。
例えば図1左側に示すように、「ユーザ」クラスと「ユーザ履歴」クラスには、1:nの関係がある。それぞれ「ユーザ」クラスは「ユーザ」テーブルに、「ユーザ履歴」は「ユーザ履歴」テーブルにマッピングされる。これはスキーマ情報から得られる情報に基づくが、このスキーマ情報からテストデータを生成すると、ユーザの区分(例えば個人と法人)にかかわらず、図1右側に示すように、「ユーザ」テーブルのレコード毎に「ユーザ履歴」テーブルのレコードが0乃至n対応付けられることとなる。
しかし、業務において、ユーザの区分によって「ユーザ」クラスと「ユーザ履歴」クラスとの関係が異なる場合がある。例えば、ユーザが個人の区分である場合には「ユーザ」クラスに「ユーザ履歴」クラスはマッピングされることがなく、ユーザが法人の区分である場合には「ユーザ」クラスに「ユーザ履歴」クラスが0乃至n対応付けられる場合がある。このような場合、図1右側における、ユーザ(個人)とユーザ履歴とのマッピングは、業務上整合性がとれていないデータということになる。従って、「ユーザ(個人)」のレコードに対応して「ユーザ履歴」のレコードを生成しないようにしなければならないが、このようなレコード生成はスキーマ情報のみからは、行うことはできない。
(B)処理上の網羅性を有するテストデータの生成
データベースに登録されているデータは、業務のプロセスに従って本来様々な状態・種別の値を取り得る。これら全ての状態・種別にわたったテストデータを登録しておくことが重要である。そうでないと、例えば検索処理を実施した結果が正しく検索が行われた結果なのか、又は正しく処理されていないのに検索対象のデータにヒットすべきでないデータが含まれていなかったためであるかを区別することができないからである。
テストデータの処理上の網羅性については、従来はソースコードから処理分岐の条件を抽出し、その閾値としてデータ種別を抽出する方法が存在していた。しかし、ソースコードを人間によって読むにはコストが高くなってしまい、自動静的解析によるものは非常に規模の小さいアプリケーションでのみ成功が報告されており、業務アプリケーションの規模になると正しく抽出することは非常に難しい。
特開2000−20529号公報
以上述べたように、従来の方法では、業務アプリケーション・プログラムにおける業務上の整合性を有するテストデータを自動で生成し、データベースに登録することはできない。また、従来の方法では、テスト対象の業務アプリケーション・プログラムの処理上の網羅性を担保したテストデータを自動的に生成することも不可能である。従って、従来の方法では、業務アプリケーション・プログラムに対して正しいテストを行うために十分なテストデータを生成することができない。
よって、本技術の目的は、業務アプリケーション・プログラムに対して正しいテストを行うために十分なテストデータを自動的に生成することである。
第1の態様に係るテストデータ生成方法は、第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、第1のテーブル及び第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、第1のテーブルのデータと第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されている区分状態情報から第1のテーブルにおける区分及び状態の業務上取り得る組み合わせを特定し、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って上記組み合わせに応じた第1のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報から、第1のテーブルのレコードと第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、上記バリエーションにおいて必要となる第1のテーブルのレコードであって未生成のレコードが存在する場合には、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録する第1テーブル未生成レコード生成ステップと、設計情報格納部に格納されている第2のテーブルのスキーマ項目情報及びスキーマ関連情報における第1のテーブルと第2のテーブルとの関係付けに従って、上記バリエーションに応じて必要となる第2のテーブルのレコードを生成し、データベースに登録する第2テーブルレコード生成ステップとを含む。
第2の態様に係るテストデータ生成方法は、第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、第1のテーブル及び第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、第1のテーブルのデータと第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されているスキーマ関連情報で指定される区分値のバリエーションを特定し、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って区分値のバリエーションに応じた第1のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報の区分値毎の関係多重度から、第1のテーブルのレコードと第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、上記バリエーションにおいて必要となる第1のテーブルのレコードであって未生成のレコードが存在する場合には、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録する第1テーブル未生成レコード生成ステップと、設計情報格納部に格納されている第2のテーブルのスキーマ項目情報及びスキーマ関連情報における第1のテーブルと第2のテーブルとの関係付けに従って、上記バリエーションに応じて必要となる第2のテーブルのレコードを生成し、データベースに登録する第2テーブルレコード生成ステップとを含む。
第3の態様に係るテストデータ生成方法は、第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各テーブルのスキーマ項目情報とを格納する設計情報格納部と、各テーブルを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されているスキーマ関連情報で指定される区分値のバリエーションを特定し、設計情報格納部に格納されているスキーマ項目情報に従って区分値のバリエーションに応じた第1及び第2のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報の関連データ項目間における区分値毎の関係多重度から、関連データ項目を含む、関係テーブルのレコードのバリエーションを特定するバリエーション特定ステップと、関係テーブルのレコードのバリエーションにおいて必要となる第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、設計情報格納部に格納されている第1及び第2のテーブルのスキーマ項目情報に従って第1及び第2のテーブルの、関連データ項目の値を含むレコードを新たに生成し、データベースに登録すると共に、データベースに登録されている第1及び第2のテーブルのレコードを用いて、関係テーブルのレコードを生成し、データベースに登録する関係テーブル生成ステップとを含む。そして、上で述べたバリエーション特定ステップは、関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する展開ステップを含む。また、上で述べた関係テーブル生成ステップは、n:mのサブバリエーションのための関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、第1のテーブルの関連データ項目のn個の値と第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意するステップを含む。
業務アプリケーション・プログラムに対して正しいテストを行うために十分なテストデータを自動的に生成することができる。
[実施の形態1]
図2に本技術の一実施の形態に係るテストデータ生成装置100の機能ブロック図を示す。テストデータ生成装置100は、設定情報及び設計情報の入力をユーザから受け付ける入力部1と、スキーマ関連情報、区分・状態情報及びスキーマ項目情報を含む設計情報を格納する設計情報格納部3と、設計情報格納部3から必要な設計情報を読み出す設計情報読み取り部5と、設計情報読み取り部5によって読み出された設計情報及び入力部1からの設定情報を用いて生成すべきテストデータのバリエーションなどを決定する処理を実施するデータ生成決定部7と、データ生成決定部7の処理結果を格納するバリエーションデータ格納部9と、バリエーションデータ格納部9に格納されたデータと設計情報読み取り部5によって読み出された設計情報等を用いてテストデータの生成を行うデータ生成部11とを有する。なお、データ生成部11によって生成されたテストデータは、データベース(DB)13に登録され、当該DB13を用いて業務アプリケーション・プログラムのテストが実施される。
以下では、図3及び図4に示すようなクラス図で表されるデータをテストデータとして生成する例を、第1の例として説明する。図3に示すように、「ユーザ」というクラスに対して、「ユーザ履歴」というクラスが集約という形で関連付けられている。「ユーザ」クラスにはユーザテーブルが対応し、「ユーザ履歴」クラスにはユーザ履歴テーブルが対応する。「ユーザ」テーブルの1レコードあたり、ユーザ履歴テーブルは0乃至nのレコードが関連付けられる。このような「ユーザ」クラスと「ユーザ履歴」クラスの関係を、関係多重度が1:nと記す。また、図4に示すように、「ユーザ」クラスは、2つの区分を有する。すなわち、「個人・団体」区分と、「ユーザ」区分とを有する。これらの組み合わせにより、例えば保険契約の例では、個人契約者にあたる「個人ユーザ」、法人契約対象者にあたる「団体ユーザ」、個人ユーザが勤めている会社にあたる「個人ユーザ関係」、団体ユーザが所属する自治体や地域団体や利害関係のあるグループにあたる「団体ユーザ関係」、個人契約者ではないが内容にクレームをつけてくる個人にあたる「個人クレーマー」、法人契約対象者ではないが内容にクレームをつけてくる団体にあたる「団体クレーマー」を表す。データの具体的な定義として、「個人・団体」区分は、「団体」(区分値=1)及び「個人」(区分値=2)とを含む。さらに、「ユーザ」区分は、「ユーザ」(区分値=1)、「ユーザ関係」(区分値=2)、「クレーマー」(区分値=3)を含む。これによって、「個人・団体」区分で「個人」という区分値を有し且つ「ユーザ」区分で「ユーザ」という区分値を有する「個人ユーザ」というサブクラスと、「個人・団体」区分で「個人」という区分値を有し且つ「ユーザ」区分で「ユーザ関係」という区分値を有する「個人ユーザ関係」というサブクラスと、「個人・団体」区分で「個人」という区分値を有し且つ「ユーザ」区分で「クレーマー」という区分値を有する「個人クレーマー」というサブクラスと、「個人・団体」区分で「団体」という区分値を有し且つ「ユーザ」区分で「ユーザ」という区分値を有する「団体ユーザ」というサブクラスと、「個人・団体」区分で「団体」という区分値を有し且つ「ユーザ」区分で「ユーザ関係」という区分値を有する「団体ユーザ関係」というサブクラスと、「個人・団体」区分で「団体」という区分値を有し且つ「ユーザ」区分で「クレーマー」という区分値を有する「団体クレーマー」というサブクラスとが定義される。
また、図3及び図4には図示していないが、第1の例では、「ユーザ」クラスには「未登録」「登録」「登録削除」という3つの状態が存在するものとする。但し、サブクラスによっては上記のような状態を有さないものもある。具体的には、「個人ユーザ関係」サブクラス及び「団体クレーマー」サブクラスでは「登録」状態及び「登録削除」状態は存在しない。
次に、図5乃至図17を用いて、テストデータ生成装置100の処理内容について説明する。まず、入力部1は、ユーザに対して、例えば図6に示すような表示を行って、ユーザから設定情報の入力を促すと共に、設定情報の入力を受け付け、メインメモリなどの記憶装置に格納する。また、さらに設計情報の入力も促すと共に、設計情報の入力を受け付け、設計情報格納部3に格納する(ステップS1)。図6の画面例では、生成対象のテーブル(スキーマ)名の入力欄と、1種別あたりの最低生成件数の入力欄と、関係多重度数m(多重度上限とも呼ぶ)の指定入力欄とが設けられている。「1種別あたりの最低生成件数」は、サブクラスと状態との業務上取り得る組み合わせの各々について生成すべきレコード数を指定するものである。関係多重度mは、図3で示された「ユーザ」クラスと「ユーザ履歴」クラスとの関係多重度が1:nにおけるnの上限値である。ここでは、主として生成するテーブルの名前が「ユーザ」であり、1種別あたりの最低生成件数が「1」であり、関係多重度数nの指定が「2」であることが分かる。
設計情報については、図7乃至図9に示す情報が含まれる。図7に、スキーマ関連情報の例を示す。スキーマ関連情報は、生成する「ユーザ」テーブルに関連する関連テーブル名「ユーザ履歴」と、関連カラム(外部キーのカラム)名「ユーザ番号」と、関係多重度「0..n」とが含まれる。「0..n」は、0乃至nであることを示す。
図8に、区分・状態情報の例を示す。区分・状態情報は、サブクラスと状態との組み合わせを示す。図8では、「個人ユーザ」サブクラス(個人・団体区分=2、ユーザ区分=1)には、「未登録」「登録」「登録削除」という状態が存在し、「団体ユーザ」サブクラス(個人・団体区分=1、ユーザ区分=1)には、「未登録」「登録」「登録削除」という状態が存在し、「個人ユーザ関係」サブクラス(個人・団体区分=2、ユーザ区分=2)には、「未登録」状態のみが存在し、「団体ユーザ関係」サブクラス(個人・団体区分=1、ユーザ区分=2)には、「未登録」「登録」「登録削除」という状態が存在し、「個人クレーマー」サブクラス(個人・団体区分=2、ユーザ区分=3)には、「未登録」「登録」「登録削除」という状態が存在し、「団体クレーマー」サブクラス(個人・団体区分=1、ユーザ区分=3)には、「未登録」状態のみが存在する。このように理論上は3×6=18種類のレコードが存在することになるが、業務上存在しない状態があるので、14種類のレコードを生成することになる。
図9に、ユーザテーブルのスキーマ項目情報の例を示す。図9では、ユーザテーブルのレコードの各カラム(ユーザ番号、個人・団体区分、ユーザ区分、名称、住所、登録日付、削除日付)について、「主キー」か否か、「未登録」状態における値の有無、「登録」状態における値の有無、「登録削除」状態における値の有無、必須か否かを表す必須区分、及びデータ属性が登録される。データ属性は、どのような値を生成すべきかルール(形式など)及び取り得る値が規定されている。具体的には、半角英数字[10]は、半角英数字[A,...Z,0,...9]によって合成される10桁固定の文字列を表す。本実施の形態では、[]は固定数を表し、()は以内であることを表している。従って、全角(100byte)は、全角の文字100byte以内であることを表す。
さらに、本例では、主キーは「ユーザ番号」であり、必須のカラムは、「ユーザ番号」「個人・団体区分」及び「ユーザ区分」であり、登録日付については「登録」状態のみに登録され、削除日付については「登録削除」状態のみに登録される。「未登録」状態については、登録日付も削除日付も登録されない。
図7乃至図9に示したようなデータは、マシンリーダブルな形式で入力部1に入力され、入力部1によって設計情報格納部3に格納される。なお、「ユーザ履歴」テーブルのスキーマ項目情報(図15)も入力され、設計情報格納部3に格納される。
次に、設計情報読み取り部5は、設計情報格納部3から設計情報(スキーマ関連情報、区分・状態情報、スキーマ項目情報)を読み出す(ステップS3)。上で述べたようなデータの内容が把握可能となる。
そして、データ生成決定部7は、区分・状態情報及び入力された設定情報に基づき、ユーザテーブルにおいて生成すべきレコードのバリエーションを特定し、バリエーションについてのデータをバリエーションデータ格納部9に格納する(ステップS5)。図8に示した区分・状態情報から、サブクラスと状態との業務上取り得る組み合わせが14種類であることが分かり、図6で示したように「1種別あたりの最低生成件数」が「1」であるから、1種類につき1レコードで、14件のレコードを生成するということが特定される。このように、区分・状態情報から特定される14種類のレコードを1つずつ生成することを表すバリエーションのデータが、バリエーションデータ格納部9に格納される。
その後、データ生成部11は、読み出されたスキーマ項目情報に従って、バリエーションデータ格納部9に格納されているバリエーションにおいて必要とされるレコードを生成し、DB13に登録する(ステップS7)。例えば、データ生成部11は、「半角英数字」「半角」「全角」「数字」といった文字列に関する生成メソッドを有しており、長さを入力することによって、予め定められたルール(例えばランダム、「ユーザ番号」などのカラム名に応じて「CUSTOM_」+「数字(桁数は全体の桁数にあわせる)」といったルール、主キーであれば各値がユニークになるようにするルールなど)に従った文字列を自動的に生成する。
例えば、「団体ユーザ」サブクラスで「未登録」状態のレコードを生成する場合には、図9のスキーマ項目情報に従って、主キーである「ユーザ番号」を、半角英数字[10]というデータ属性に従って生成する。主キーであるから値はユニークでなければならず、上で述べたように「CUSTOM_」+「3桁数字」のようなルールに従って生成する。個人・団体区分は、「団体ユーザ」であるから「1」であり、ユーザ区分は、「団体ユーザ」であるから「1」となる。「名称」については全角(100byte)、「住所」については全角(200byte)であるから、ひらがな、英数記号、常用漢字、カタカナの集合からランダムに抽出して長さの分の文字列を生成する。但し、住所については、郵便番号をランダムに生成して、郵便番号に対応する住所を「住所」に利用するようにしても良い。この場合には、郵便番号と住所を対応付ける辞書が必要となる。このようにすると、図10の第1レコードが生成される。
図10の第2乃至第14レコードについては、上で特定されたバリエーションに従って同様に生成される。なお、図9のスキーマ項目情報で必要とされる登録日付と削除日付については、YYYY/XX/ZZというフォーマットに従って所定のルールに従って生成する。例えば、処理日付を含む1週間の日付をランダムに発生させるなどの処理を行うようにしても良い。このようにすれば、14種類のレコードが各1件生成されることになる。
そして、データ生成決定部7は、未生成の関連テーブルが存在するか判断する(ステップS9)。例えば、設計情報に含まれるスキーマ関連情報を参照して、未生成の関連テーブルが存在するか判断する。未生成の関連テーブルが存在すると判断された場合には、端子Aを介して図12の処理に移行する。本例では、「ユーザ履歴」テーブルをまだ生成していないので、端子Aを介して図12の処理に移行するものとする。
一方、未生成の関連テーブルが存在しないと判断された場合には、データ生成決定部9は、例えば図11に示すような処理結果を含む表示をユーザに対して出力する(ステップS11)。図11には、「ユーザ」テーブルのレコードが42件、「ユーザ履歴」テーブルのレコードが42件、生成されたデータが\CreatedData\20070618_mouraフォルダに格納されていることが示されている。
図12の処理の説明に移行して、データ生成決定部7は、スキーマ関連情報に含まれる、生成すべき関連テーブルのカラムの持ち得る区分・状態及び関係多重度と、入力部1によって入力された関係多重度数mとから、生成すべき関連テーブルのレコードのバリエーションを決定し、当該バリエーションのデータをバリエーションデータ格納部9に格納する(ステップS13)。
本例では、「ユーザ」テーブルのレコードと、「ユーザ履歴」テーブルのレコードとの間には0..nの集約関連が存在することが、スキーマ関連情報(図7)で特定される。図7では、「ユーザ履歴」テーブルには区分・状態については規定されていない。すなわち、単に「ユーザ」テーブルのレコードと「ユーザ履歴」テーブルのレコードは、1:m(mはここでは0を含む整数)の関係にある。従って、本実施の形態では、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:0、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:1、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:mの3つのパターンを生成するものとする。なお、mはユーザにより指定された多重度上限によって決定される。図6での入力例では、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:2となる。
なお、「ユーザ」テーブルのレコードに対して、「ユーザ履歴」テーブルのレコードとp(正の整数)..nの集約関連が存在する場合には、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:p、「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:mの2つのパターンを生成する。
上でも述べたように、本例では、
「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:0
「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:1
「ユーザ」テーブルのレコード:「ユーザ履歴」テーブルのレコード=1:2
の3つのパターンが必要となる。「ユーザ」テーブルのレコード「1」というのは、14種類のレコードのセットが「1」ということであって、ステップS7では1セット分しか生成していないので「ユーザ」テーブルの14種類のレコードのセットがあと2セット必要で、「ユーザ履歴」テーブルのレコードについては、「ユーザ」テーブルの14種類のレコードのセット1つにつき1セット(14種類)、及び「ユーザ」テーブルの14種類のレコードのセット1つにつき2セット(14種類×2)必要となる。合計すれば、「ユーザ」テーブルのレコードも14×3=42件(但し14件はステップS7で生成済み)、「ユーザ履歴」テーブルのレコードも14×3=42件生成すべきということになる。
これを別角度から図示すると、図13に示すようになる。すなわち、「ユーザ」テーブルの1種類のレコード(例えば「団体ユーザ(未登録)」レコード)につき、「ユーザ履歴」のレコードが「無い」場合と、1つある場合と、2つある場合との3つのパターンが、14種類分存在することとなる。このようなバリエーションのデータをバリエーションデータ格納部9に格納する。
次に、データ生成部11は、外部キー(例えばスキーマ関連情報における「関連カラム」から特定する。又は「関連元のテーブルと関連テーブルとで同じ名前のカラムを、スキーマ項目情報から特定する)の未使用の値が存在するか判断する(ステップS15)。例えば、ユーザなどによって既に外部キーの値が指定されている場合などには、当該指定されている外部キーのうち未使用の値が存在するかを判断する。そのような値が存在する場合には、データ生成部11は、当該外部キーの未使用の値を用いて、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを1つ生成し、DB13に登録する(ステップS17)。その後、データ生成部11は、ステップS13で特定された必要なバリエーションの全てを生成したか判断する(ステップS19)。全てのバリエーションについてデータを生成したわけではない場合には、ステップS15に戻る。なお、本例では、外部キーの未使用の値はないものとする。一方、全てのバリエーションを生成した場合には、端子Bを介して図5のステップS9に戻る。
ステップS15で外部キーの未使用の値が存在しないと判断された場合には、データ生成部11は、関連元テーブル(本例では「ユーザ」テーブル)における外部キー該当カラム(「ユーザ番号」のカラム)に、未使用の値が存在するか判断する(ステップS21)。本例では、ステップS7で生成された「ユーザ」テーブルのレコード群(図10)は、ステップS13で特定されたバリエーションのうち、「ユーザ」テーブルの1レコードに対応して「ユーザ履歴」テーブルのレコードなしというバリエーションに用いられるので、外部キー該当カラムには未使用の値は存在しないと判断される。
ステップS21で、関連元テーブルにおける外部キー該当カラムに、未使用の値が存在すると判断された場合には、データ生成部11は、当該外部キー該当カラムの未使用の値を用いて、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを1つ生成し、DB13に登録する(ステップS23)。そしてステップS19に移行する。
一方、関連元テーブルにおける外部キー該当カラムに、未使用の値が存在しないと判断された場合には、データ生成部11は、関連元テーブルのスキーマ項目情報に従って、ステップS19で特定されたバリエーションに応じて必要となるレコードを1つ生成し、DB13に登録する(ステップS25)。本例では、図14の第1レコードが生成される。
そして、データ生成部11は、ステップS25で生成された、関連元テーブルにおける外部キー該当カラムの値を用い、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを1つ生成し、DB13に登録する(ステップS27)。本例では、図14の第1レコードのユーザ番号「CUSTOM_014」を外部キー該当カラムの値として用いて、図15に示す「ユーザ履歴」テーブルのスキーマ項目情報に従って、図16の左欄第1レコードを生成する。スキーマ項目情報の使用方法は、「ユーザ」テーブルのスキーマ項目情報と同様である。そして、ステップS19に戻る。
図15では、「ユーザ番号」及び「履歴移動日」というデータ項目が、主キー且つ必須区分であり、「ユーザ番号」については半角英数字[10]で構成され、「履歴移動日」についてはYYYY/XX/ZZというフォーマットで構成される。
本例の場合、ステップS15、S21、S25及びS27を繰り返し、図14の第2レコード乃至第14レコードを生成し、さらに図16の第2レコード乃至第14レコードを生成する。その後、ステップS15、S21、S25及びS27を実行して、図17の第1レコードを生成し、さらに図16の第15レコードを生成する。そうすると、次に、ステップS15、S21及びS23を実行して、図16の第16レコードを生成する。このように、「ユーザ」テーブルを1レコード生成すると、ステップS23及びS27で「ユーザ履歴」テーブルのレコードを2件生成する処理を繰り返し、図17に示す「ユーザ」テーブルの第2乃至第14レコード及び図16の残りのレコード(第17乃至第42レコード)を生成する。
ここまで実施すれば、全てのバリエーションについて生成し終わることになるので、端子Bを介してステップS9に戻り、関連テーブルについて全て処理したか判断する。本例では、関連テーブルは、「ユーザ履歴」テーブル以外には存在しないので、処理が終了して、ステップS11で図11の表示を行う。
以上のような処理を実施することによって、業務上の整合性を保持させると共に処理上の網羅性を担保するようなテストデータをDB13に登録することができるようになる。
[実施の形態1における第2の例]
次に、第2の例について説明する。第2の例は、図18に示すようなクラス図で表される。すなわち、「ユーザ」クラスには、2つの区分が存在しており、「個人・団体」区分と、「ユーザ」区分とがある。「個人・団体」区分において団体の場合には区分値=1となり、個人の場合には区分値=2となる。また、「ユーザ」区分において、「ユーザ」の場合には区分値=1であり、「ユーザ関係」の場合には区分値=2であり、「クレーマー」の場合には区分値3である。そして、「個人・団体」区分の区分値=1で「ユーザ」区分の区分値=1は、「団体ユーザ」というサブクラスとなる。ここまでは、第1の例と同じである。しかし、第1の例では「ユーザ」クラス全体について「ユーザ履歴」クラスが集約という関係で関連付けられていたが、第2の例では、「団体ユーザ」というサブクラスにのみ、1:nという集約関係で「ユーザ履歴」クラスが関連付けられている。
第2の例における、スキーマ関連情報及び区分・状態情報は、図19のようになる。図19では、第1の例とは異なり、スキーマ関連情報と区分・状態情報が統合された形式となっている。本例では、第1の例と同様に、「個人ユーザ」「団体ユーザ」「個人ユーザ関係」「団体ユーザ関係」「個人クレーマー」及び「団体クレーマー」のサブクラスが存在し、「未登録」「登録」「登録削除」という状態が存在し、それらの組み合わせが規定される。但し、「個人ユーザ関係」及び「団体クレーマー」というサブクラスには、「登録」及び「登録削除」という状態は存在しない(「×」マークあり)。また、「団体ユーザ」サブクラスと「登録」状態の組み合わせには、関連テーブル、関連カラム及び関係多重度が規定されており、それぞれ「ユーザ履歴」テーブル、「ユーザ番号」及び「0..n」という情報が指定されている。同様に、「団体ユーザ関係」サブクラスと「登録」状態の組み合わせには、関連テーブル、関連カラム及び関係多重度が規定されており、それぞれ「ユーザ履歴」テーブル、「ユーザ番号」及び「0..n」という情報が指定されている。
「ユーザ」テーブルのスキーマ項目情報が、第1の例と同じであるとすると、「ユーザ」テーブルは、図5のステップS7で生成される部分(図10)は同じである。しかし、ステップS13で特定されるバリエーションは第1の例とは異なる。具体的には、図20に示すように、「団体ユーザ」サブクラスと「登録」状態の組み合わせと「団体ユーザ関係」サブクラスと「登録」状態の組み合わせについては、「ユーザ履歴」テーブルのレコード無し、1レコード対応、2レコード対応というバリエーションが特定されるが、その他のサブクラスと状態の組み合わせについては「ユーザ履歴」テーブルのレコードは関連付けられていない。
従って、「ユーザ」テーブルのレコードは、ステップS7で図14に示したレコード群が生成されているのであれば、図21に示すように、「ユーザ」テーブルのスキーマ項目情報に従って4レコードが追加で生成される。さらに、「ユーザ履歴」テーブルのレコードは、図22に示すように、「ユーザ履歴」レコードのスキーマ項目情報に従って、合計6件生成される。なお、図6のような設定情報の入力がなされていることを前提としている。
[実施の形態1における第3の例]
図23に、第3の例のクラス図を示す。第3の例においては、「ユーザ」クラスに対して「担当販売」クラスが1:nで関連しており、「担当販売」クラスに対して「販売員」クラスが1対1で関連している。すなわち、第1及び第2の例のようにクラス間に従属関係がない場合である。
図24に第3の例の「ユーザ」テーブルのスキーマ関連情報を示す。図24では、関連テーブル名が、「担当販売」テーブルであり、関連カラムが「ユーザ番号」であり、関係多重度が、「主担当」という区分については「1」(すなわち、1:1)であり、「一般担当」という区分については「0..n」である。このように、「担当販売」クラスの区分によって関係多重度が異なる例を取り扱う。
なお、「ユーザ」テーブルについては図8に示した区分・状態情報と図9に示したスキーマ項目情報とに従って生成されるものとする。そうすると、図10に示すようなレコードが生成される。
一方、「担当販売」テーブルのスキーマ項目情報は、図25に示すようなデータであるものとする。すなわち、主キーとしては「ユーザ番号」及び「販売員ID」が必須として指定されており、これらは10文字の半角英数字で構成される。また、担当販売区分も必須として指定されており、主担当の場合には「1」一般担当の場合には「2」が設定されるようになっている。
上で述べたような処理を実施すれば、ステップS13では、図26に示すようなバリエーションが特定される。すなわち、「ユーザ」テーブルの14種類のレコードに対して、「担当販売」テーブルの「主担当」区分のレコードが各々1つ対応するバリエーション(「担当販売」テーブルの「一般担当」区分のレコードはなし)と、「ユーザ」テーブルの14種類のレコードに対して、「担当販売」テーブルの「主担当」区分のレコードが各々1つ対応し、さらに「一般担当」区分のレコードが各々1つ対応するバリエーションと、「ユーザ」テーブルの14種類のレコードに対して、「担当販売」テーブルの「主担当」区分のレコードが各々1つ対応し、さらに「一般担当」区分のレコードが各々2つ対応するバリエーションとが特定される。
そうすると、「ユーザ」テーブルについてはステップS7で14種類のレコードが1セット生成され、その後、図26に示したようなバリエーションに応じて、図25のスキーマ項目情報に従って、図27A及びBに示すような「担当販売」テーブルのレコードが生成される。なお、第1及び第2の例と同様に、「ユーザ」テーブルの14種類のレコードが3セット必要となり、「担当販売」テーブルについては、14件+14件×2+14件×3=84件のレコードが生成される。図27A及びBでは、1つの「ユーザ」レコードにつき「主担当」区分のレコードが必ず1件必要となるため、販売員IDは42種類必要となる。84件のレコードのうち残りの42件のレコードについては、42種類の販売員IDを使い回すことになる。
次に、残りの関連テーブルとして、「担当販売」テーブルに関連付けられた「販売員」テーブルを生成する。図28に「担当販売」テーブルのスキーマ関連情報を示す。図28では、関連テーブル名「販売員」と、関連カラム「販売員ID」、関係多重度「1」が登録されている。従って、「販売員」テーブルでは、「担当販売」テーブルの「販売員ID」と1対1になるようにレコードを生成する。上で述べたように、販売員IDは42種類あるので、「販売員」テーブルのレコードは42件となる。「担当販売」テーブルから外部キーの値(販売員IDの値)は抽出できる。
ここでは、図29に示すようなスキーマ項目情報が用いられる。図29では、主キーである「販売員ID」が必須で10桁の半角英数字で構成され、担当販売者名が全角(100byte)で構成される。このようなスキーマ項目情報に従って、図30に示すような「販売員」テーブルが生成される。
このようにいずれの例においても、業務上の整合性を保持しつつ、処理上の網羅性を担保するようなテストデータをDB13に登録することができるようになる。
[実施の形態1の変形例]
上で述べた例では、区分・状態情報が用意される例を示したが、業務上特に状態が規定されない場合には、例えば以下で用いる図38のようなスキーマ関連情報において区分毎に関係多重度が規定されていればよい場合もある。このような場合には、図5のステップS5では、区分・状態情報を用いずスキーマ関連情報から取り得る区分値の組み合わせに従って生成すべきレコードのバリエーションを特定し、ステップS7でレコードを生成するようにしても良い。さらに、図12のステップS13でも区分・状態情報を用いずにレコード・バリエーションを特定する。
[実施の形態2]
第1の実施の形態においては、2つのテーブル間における多重度が1:nについては処理対象としていたが、0..n:0..mである場合については処理の対象外としていた。1:nの場合にはそのレコード間の関係が一意に決まるのに対して、n:mの場合にはそのレコード間の関係のバリエーションが無限にあり得るため、無限のバリエーション中で有限個のレコードを用意する場合に、どのような関係バリエーションを生成すれば網羅性が高く、障害発見に有効なデータとなるかの判断は難しかった。例えば、図31に示すように、お客様テーブルのレコードと営業テーブルのレコードとの間に、0..2:0..2の関係がある場合には、図32(a)に示すように、お客様テーブルにおけるレコードa1及びa2と、営業テーブルのレコードb1及びb2とを、2対2で対応付けるパターンと、図32(b)に示すように、お客様テーブルにおけるレコードa1乃至a3と、営業テーブルのレコードb1乃至b3とを、2対2で対応付けるパターン等が可能である。これ以外のパターンも生成することができるが、上で述べたように、どのようなパターンを採用すべきかを判断するのは難しい。
しかし、業務上このような多重度のテーブル関係は多数存在しており、幅広い業務のテストデータを生成する上で、多重度がn:mの場合にも対応できるようにする必要がある。
例えば、以下のような業務のためのシステムに対するテストデータを生成する場合を考える。すなわち、(a)カーシェアリングクラブがあって、車1台につき所有者は2名ずつ。(2)ある車を使うためにはその車を所有している二人の信任状が必要。(3)同じ車を所有する人同士は互いに信任状を出すことができる。
このような場合、図33(a)に示すようなテストデータを生成することも可能であるし、図33(b)に示すようなテストデータを生成することも可能である。すなわち、図33(a)では、メンバ1及び2に車A及びBが2:2で対応付けられており、図33(b)では、メンバ1乃至3に車A乃至Cが2:2で対応付けられている。
ところが、図33(a)の場合には、2台の車をメンバ1及び2で所有し合っており、メンバ1及び2以外にメンバも規定されていないので信任状を発行する場面がない。一方、図33(b)の場合には、メンバ3は、車Aを所有していないが、車Aを所有しているメンバ1と車Cを所有しているので、車Aを使用する際には、車Aを所有しているメンバ1及び2から信任状を発行してもらえば、車Aを使用することができる。
すなわち、図33(b)の例であれば、
IF((車Aの所有者でない)&(車Aの所有者である2人のメンバと同じ車を所有している))then(車Aを使うことができる)
というロジックのテストを行うことができる。
このように同じ多重度n:mのテストデータであっても、テストを行うのに十分なテストデータとは限らず、テストを行うのに十分なテストデータを生成する必要がある。
以下では、関係多重度に基づき直接又は間接的に結び付けられたレコード群において変更の影響が波及するレコードの数であるレコード間関係数を導入し、ユーザにその条件値を指定させ、当該条件値に適合するレコードを生成することによって、テストに十分なレコードを含むパターンを生成するものとする。例えば、図33(a)の場合には、メンバというデータ項目と車というデータ項目とで1レコードと考え、例えばメンバ1が変更になると、車Bも変更しなければならなくなるので、メンバ1を含むレコードと車Bを含むレコードとにより、レコード間関係数は「2」とカウントされる。また、図33(b)の場合には、メンバ1が変更になると、車Cも変更しなければならなくなり、車Cを変更するとメンバ3も変更する必要があり、メンバ3を変更すると車Bも変更する必要があるというように、メンバ1を含むレコードと車Cを含むレコードと車Bを含むレコードとにより、レコード間関係数は「3」とカウントされる。
なお、本実施の形態における機能ブロック図は、テストデータ生成装置100の機能ブロック図(図2)と同じであるものとする。
次に、第2の実施の形態に係るテストデータ生成装置100の処理内容について図34乃至図65を用いて説明する。
まず、処理フローを分かりやすくするための具体例を図34乃至図38を用いて説明する。図34は、テストデータを生成すべきテーブル群の関係を表すクラス図を示す。図34に示すように、データ項目a及びbについてのテーブルAと、データ項目xについてのテーブルXと、テーブルAとテーブルXとの関係を表し且つデータ項目a及びxについてのテーブルZとが含まれる。
図35に、テーブルAのスキーマ項目定義を示す。テーブルAには、データ項目a及びbが含まれ、データ項目aは主キーであり、データ項目a及びbは共に必須のデータ項目である。また、データ項目aのデータ属性としては、全角(100byte)であり、データ項目bのデータ属性としては、半角英数字1文字である。以下、データ項目bは区分とも記すものとする。
また、図36に、テーブルXのスキーマ項目定義を示す。テーブルXには、データ項目xが含まれ、データ項目xは主キーであり、データ項目xは必須のデータ項目である。また、データ項目xのデータ属性としては、全角(100byte)である。
さらに、図37に、テーブルZのスキーマ項目定義を示す。テーブルZには、データ項目a及びxが含まれ、データ項目a及びx共に主キーであり、データ項目a及びxは共に必須のデータ項目である。また、データ項目aのデータ属性としては、全角(100byte)であり、データ項目xのデータ属性としては、半角英数字1文字である。
図38に、テーブルZのスキーマ関連情報を示す。図38のスキーマ関連情報では、テーブルAのデータ項目bの値(区分値)毎に、A:Xで表される、テーブルAとテーブルXの関係多重度が変化することを示している。具体的には、データ項目bの値(区分値)が「1」であれば、A:Xは、0..3:0..2であり、データ項目bの値(区分値)が「2」であれば、A:Xは、1:0..2であると規定されている。なお、図38では関連カラムについては明示されていないが、テーブルAのデータ項目bが、区分値として用いられること及びスキーマ項目定義から、データ項目aとデータ項目xが関連していることが分かる。
次に、図39乃至図65を用いて、処理フローについて説明する。まず、入力部1は、ユーザに対して、例えば図40に示すような表示を行って、ユーザから設定情報の入力を促すと共に、設定情報の入力を受け付け、メインメモリなどの記憶装置に格納する。また、さらに設計情報の入力も促すと共に、設計情報の入力を受け付け(ステップS51)、設計情報格納部3に格納する(ステップS53)。図40の画面例では、生成対象のテーブル(スキーマ)名の入力欄と、関係多重度数nの指定入力欄と、関係多重度mの指定入力欄と、レコード間関係数の上限Pの指定入力欄とを含む。関係多重度nの指定入力欄には、スキーマ関連情報において多重度に具体的な数値が指定されていない場合、多重度nに相当する数値を指定するための入力欄である。図38の例では、「0..3」における「3」であることが明かであるので入力の必要はない。同様に、関係多重度mの指定入力欄には、スキーマ関連情報において多重度に具体的な数値が指定されていない場合、mに相当する数値を指定するための入力欄である。図38の例では、「0..2」における「2」であることが明らかであるので入力の必要はない。レコード間関係数の上限Pの指定入力欄には、上で述べたレコード間関係数の上限値を指定するための入力欄である。
なお、ステップS51で入力される設計情報には、図35乃至図38に示したような情報が含まれる。このような設計情報は、マシンリーダブルな形式で入力部1に入力され、入力部1によって設計情報格納部3に格納される。
そして、データ生成決定部7は、入力された設定情報等に基づき、生成対象のテーブルにおいて生成すべきレコードのバリエーションを特定し、当該バリエーションについてのデータをバリエーションデータ格納部9に格納する(ステップS55)。図40で示した入力画面では、テーブルA及びXが生成対象のテーブルであるので、スキーマ項目定義及びスキーマ関連情報から、テーブルA及びXについて初期的にどのようなバリエーションが必要なのかを特定する。なお、区分・状態情報が設計情報に含まれる場合には、これを用いることになるが、今回の例では区分・状態情報は含まれないので、スキーマ項目定義及びスキーマ関連情報から特定する。図35及び図38の例からすると、テーブルAのデータ項目bは区分値「1」又は「2」をとることが分かるので、テーブルAは、データ項目bが「1」のレコード及び「2」のレコードというようなバリエーションが必要であることが分かる。このためバリエーションデータ格納部9には、テーブルAについてこのようなバリエーションを登録する。一方、図36及び図38の例からすると、テーブルXについては設計情報上特別な制限はなく、単純に1レコード生成すればよいので、そのようなバリエーションについてのデータをバリエーションデータ格納部9に登録する。
その後、データ生成部11は、読み出されたスキーマ項目情報、スキーマ関連情報等に従って、バリエーションデータ格納部9に格納されているバリエーションにおいて必要とされるレコードを生成し、DB13に登録する(ステップS57)。例えば、データ生成部11は、「半角英数字」「半角」「全角」「数字」といった文字列に関する生成メソッドを有しており、長さを入力することによって、予め定められたルール(例えばランダム、「ユーザ番号」などのカラム名に応じて「CUSTOM_」+「数字(桁数は全体の桁数にあわせる)」といったルール、主キーであれば各値がユニークになるようにするルールなど)に従った文字列を自動的に生成する。
例えば、テーブルAについては図41に示すように区分値であるデータ項目bの値が異なる2つのレコードが生成される。また、テーブルXについては図42に示すように単純に1レコードが生成される。なお、図43に示すようにテーブルZについてはこの段階ではレコードは生成されない。
そして、データ生成決定部7は、未生成の関連テーブルが存在するか判断する(ステップS59)。例えば、設計情報に含まれるスキーマ関連情報等を参照して、未生成の関連テーブルが存在するか判断する。未生成の関連テーブルが存在すると判断された場合には、端子Cを介して図44の処理に移行する。図40の例では、テーブルZをまだ生成していないので、端子Cを介して図44の処理に移行するものとする。
図44の処理の説明に移行して、データ生成決定部7は、スキーマ関連情報に含まれる、生成すべき関連テーブルのカラムの持ち得る区分・状態(存在する場合)及び関係多重度と、入力部1によって入力された関係多重度数n及びmとから、生成すべき関連テーブルのレコードのバリエーションを決定し、当該バリエーションのデータをバリエーションデータ格納部9に格納する(ステップS61)。
図38の例からすると、関連テーブルであるテーブルZにおいてデータ項目aとデータ項目xの関係多重度は、データ項目aに関連するデータ項目bの区分値によって異なることが分かる。従って、データ項目bの区分値「1」の場合とデータ項目bの区分値「2」の場合とに分け、前者の場合には関係多重度0..n:0..mについてのバリエーションを後に展開し、後者の場合には関係多重度1:0..2なので、0:0、1:1、1:2というバリエーションについてのレコードを生成することになる。従って、データ項目bの区分値「1」の場合における関係多重度0..n:0..mについてのバリエーションのデータと、データ項目bの区分値「2」の場合における関係多重度0:0、1:1、1:2というバリエーションのデータとをバリエーションデータ格納部9に格納する。
その後、データ生成部11は、バリエーションデータ格納部9において1つの未処理バリエーションを特定する(ステップS63)。そして、特定したバリエーションが、関係多重度n:m(0..n:0..m。以下同様に省略して記する場合もある)のバリエーションであるか判断する(ステップS65)。ここで関係多重度がn:mではない場合には、データ生成部11はレコード生成処理を実施する(ステップS67)。このレコード生成処理については、図45を用いて説明する。但し、図45の処理フローは、図12のステップS15乃至S27(ステップS19を除く)と実質的に同一である。
まず、データ生成部11は、外部キー(例えばスキーマ関連情報における「関連カラム」から特定する。又は「関連元のテーブルと関連テーブルとで同じ名前のカラムを、スキーマ項目情報から特定する)の未使用の値が存在するか判断する(ステップS101)。例えば、ユーザなどによって既に外部キーの値が指定されている場合などには、当該指定されている外部キーのうち未使用の値が存在するかを判断する。そのような値が存在する場合には、データ生成部11は、当該外部キーの未使用の値を用いて、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを生成する(ステップS103)。そして元の処理に戻る。
ステップS101で外部キーの未使用の値が存在しないと判断された場合には、データ生成部11は、関連元テーブルにおける外部キー該当カラムに、未使用の値が存在するか判断する(ステップS105)。ステップS105で、関連元テーブルにおける外部キー該当カラムに、未使用の値が存在すると判断された場合には、データ生成部11は、当該外部キー該当カラムの未使用の値を用いて、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを生成する(ステップS107)。そして元の処理に戻る。
一方、関連元テーブルにおける外部キー該当カラムに、未使用の値が存在しないと判断された場合には、データ生成部11は、関連元テーブルのスキーマ項目情報に従って、ステップS63で特定されたバリエーションに応じて必要となるレコードを生成する(ステップS109)。
そして、データ生成部11は、ステップS109で生成された、関連元テーブルにおける外部キー該当カラムの値を用い、関連テーブルのスキーマ項目情報に従って、関連テーブルのレコードを生成する(ステップS111)。そして元の処理に戻る。
例えば、データ項目bの区分値「2」の場合には、上で述べたように関係多重度0:0、1:1、1:2というバリエーションについてレコードを生成する。模式的に書けば、図46に示すように、(a)データ項目aとデータ項目xが0:0で対応する場合、(b)データ項目aとデータ項目xが1:1で対応する場合、(c)データ項目aとデータ項目xが1:2で対応する場合のレコードを生成する必要がある。なお、本例では、データ項目aが外部キーとして用いられる。
関係多重度0:0を処理する場合、図41に示した状態から開始すると、データ項目aの値「a2」は未使用の値ということになるので、図46(a)に示すように、データ項目aの値「a2」を採用すると共に、データ項目xの値をスキーマ項目情報から「x10」として生成する。
次に、関係多重度1:1を処理する場合には、テーブルAには未使用の値はないので、図46(b)に示すように、データ項目aの値「a14」を生成すると共に、対応するデータ項目xの値「x11」を生成する。
さらに、関係多重度1:2を処理する場合には、テーブルAには未使用の値はないので、図46(c)に示すように、データ項目aの値「a15」を生成すると共に、対応するデータ項目xの値「x12」及び「x13」を生成する。
以上のようにして処理が終了すると、図44の説明に戻って、データ生成部11は、ステップS67で生成したデータを、DB13に登録する(ステップS69)。上で説明した生成データ例では、データ項目bの区分値「2」の場合の処理だったので、それに対応してデータ項目aの値「a14」及び「a15」を、図47に示すようなデータをテーブルAに追加登録する。同様に、データ項目xについても「x10」「x11」「x12」「x13」を生成したので、これらを図48に示すようなデータをテーブルXに追加登録する。さらに、図46(a)で示した0:0の関係多重度については、対応関係がないということなのでこの場合を除き、図46(b)及び(c)についての対応関係については、図49に示すようなデータをテーブルZに登録する。すなわち、関係多重度1:1についてはa14及びx11を含むレコードを登録し、関係多重度1:2についてはa15及びx12を含むレコードとa15及びx13を含むレコードを登録する。
そして、データ生成部11は、ステップS61で特定された必要なバリエーションの全てについてデータを生成したか判断する(ステップS81)。全てのバリエーションについてデータを生成したわけではない場合には、ステップS63に戻る。一方、全てのバリエーションを生成した場合には、端子Dを介して図39のステップS59に戻る。
一方、ステップS65で関係多重度がn:mについてのバリエーションを展開する場面であると判断された場合には、データ生成部11は、n:mレコード生成処理を実施する(ステップS71)。n:mレコード生成処理については、図50を用いて説明する。なお、0..n:0..mの場合には、0:0、1:1、1:m、n:1及びn:mを生成する必要がある。本実施の形態では、まずn:mについてのデータを生成する。
まず、データ生成部11は、n:mのバリエーションについてレコード生成処理を実施する(ステップS121)。この処理は図45と同様である。なお、n及びmについては、スキーマ関連情報又はユーザ設定入力値を用いる。ここではn=3及びm=2である。
外部から入力された未使用の外部キー値が存在せず且つテーブルAのデータ項目aに区分値「1」についての未使用の値が存在しない場合には、図45の処理で図51に示すようなデータが生成される。すなわち、データ項目aについては「a8」「a9」「a10」というデータ値が生成され、データ項目xについては「x6」「x7」というデータ値が生成されている。なお、図51の例では、レコード間関係数は「3」である。
なお、最小のレコード数でn:mを満たすためには、テーブルAのデータ項目aについてはn個、テーブルXのデータ項目xについてはm個、データ値を生成すればよい。そして、データ項目aの各データ値からデータ項目xのデータ値へm本の線を引けば(関連付けを行えば)、合計でn×m本の関係が生成され、テーブルZにおいてn×m個のレコードが生成されることになる。
次に、データ生成部11は、ユーザから指定されたレコード間関係数の上限Pを、生成したレコード群のレコード間関係数が超えたか判断する(ステップS123)。ユーザが「6」をレコード間関係数の上限Pとして指定すると、図51で生成したレコード群のレコード間関係数が「3」であるから、ステップS123では、生成したレコード群のレコード間関係数は、上限Pを超えていないと判断される。
なお、図51で生成したレコード群においては、カラム値a8が変更されると、カラム値x7を変更しなければならず、カラム値x7を変更するとカラム値a10を変更しなければならないので、カラム値a8を含むレコードと、カラム値x7を含むレコードと、カラム値a10を含むレコードとにより、レコード間関係数は「3」とカウントされる。
生成したレコード群のレコード間関係数が上限Pを超えていない場合には、データ生成部11は、再度n:mのバリエーションについてレコード生成処理を実施する(ステップS125)。ステップS121と同様である。従って、ステップS125では、図52に示すように、図51で生成したレコード群と同様のデータが生成される。
そして、データ生成部11は、レコード間関連付け処理を実施する(ステップS127)。例えば、図51に示したレコード群と図52に示したレコード群を、連結させる処理を実施する。すなわち、図53に示すような関連付けを行う。図53において点線の関連付けは、3:2から6:4に直す際に切断された関連付けであり、太線の関連付けは、6:4に直す際に生成された関連付けである。このような連結の方法は、グラフ理論においては周知であり、ここではこれ以上述べないが、予めルール化しておき、当該ルールに従って連結を行うものとする。
ステップS127の後にステップS123に戻って、データ生成部11は、生成したレコード群のレコード間関係数が、ユーザによって指定されたレコード間関係数の上限Pを超えたか判断する。図53で示したレコード群のレコード間関係数は「6」であり、上限Pが「6」であるから、ステップS123の条件を満たしていないと判断される。このような場合にはステップS125及びS127を再度実行する。
なお、図53で示したレコード群において、カラム値a8が変更されると、カラム値x7が変更され、カラム値x7が変更されるとカラム値a10が変更され、カラム値a10が変更されるとカラム値x8が変更され、カラム値x8が変更されるとカラム値a12も変更され、カラム値a8が変更されるとカラム値x6も変更されるのでカラム値a13も変更される。従って、カラム値a8を含むレコードと、カラム値x7を含むレコードと、カラム値a10を含むレコードと、カラム値x8を含むレコードと、カラム値a12を含むレコードと、カラム値a13を含むレコードとにより、レコード間関係数は「6」とカウントされる。
具体的には、図53で示したレコード群に対して図51又は図52に示したようなレコード群を追加して連結すると、図54のようなレコード群が得られる。しかしながら、レコード間関係数は「9」となってしまう。
そうするとステップS123でレコード間関係数の上限Pを超えたと判断されるので、データ生成部11は、追加でレコード生成処理を行っている場合には直前実施時に生成されたデータを破棄し、関連付けをそれより前に戻す(ステップS129)。追加でレコード生成処理を実施する毎に状態を保存しておき、1つ前の状態に戻すようにしても良い。上で述べた例では図53に示した状態が採用されることになる。そして元の処理に戻る。
そして、データ生成部11は、生成データをDB13に登録する(ステップS131)。図53に基づき追加でテーブルAに登録されるデータは図55に示すようなデータである。現在処理しているのはデータ項目bの区分値「1」についてであるから、区分値は全て「1」であり、データ項目aの値は図53から分かるように「a8」乃至「a13」である。また、図53に基づき追加でテーブルXに登録されるデータは図56に示すようなデータである。すなわち、図53から分かるように「x6」乃至「x9」である。そして、図53に基づきテーブルZに登録されるデータは図57に示すようなデータである。図57では、図53の関連付けに応じて12のレコードが追加される。
図44の処理の説明に戻って、ステップS71でn:mについての処理が終了すると、0..n:0..mについてのバリエーションで未処理の0:0、1:1、1:m及びn:1を処理することになる。データ生成部11は、これらのうち未処理のサブバリエーションを特定し(ステップS73)、当該パターンについてレコード生成処理を実施する(ステップS75)。この処理についてはステップS67と同じであり、説明は省略する。そして、ステップS75で生成したデータを、DB13に登録する(ステップS77)。さらに、ステップS73で示した全てのパターンを処理したか判断し、未処理のサブバリエーションが存在する場合にはステップS73に戻る。一方、全てのサブバリエーションを処理した場合にはステップS81に移行する。
ステップS73乃至S79の繰り返しでは、図58のようなデータが生成される。但し、図58(a)に示す0:0の場合には、図41の状態においてデータ項目bの区分値「1」でデータ項目aについての未使用のデータ値「a1」を用い、データ項目xの未使用のデータ値「x1」を用いるので、新規に生成されるデータはない。図58(b)に示す1:1の場合には、データ項目aのデータ値「a3」とデータ項目xのデータ値「x2」は新規に生成されたものである。さらに、図58(c)に示す1:m(ここでは2)の場合には、データ項目aのデータ値「a4」とデータ項目xのデータ値「x3」及び「x4」は、新たに生成されたものである。そして、図58(d)に示すn(ここでは3):1の場合には、データ項目aのデータ値「a5」「a6」及び「a7」とデータ項目xのデータ値「x5」は、新たに生成されたものである。
このようなデータについては、ステップS77でDB13に追加登録されるが、テーブルAには図58に基づき図59に示すようなレコードが登録され、テーブルXには図58に基づき図60に示すようなレコードが登録され、テーブルZには図58に基づき図61に示すようなレコードが登録される。
ステップS81で全てのバリエーションについて処理したと判断されると、端子Dを介して図39のステップS59に戻る。
図39の処理の説明に戻ると、再度、データ生成決定部7は、未生成の関連テーブルが存在するか判断する(ステップS59)。例えば、設計情報に含まれるスキーマ関連情報を参照して、未生成の関連テーブルが存在するか判断する。未生成の関連テーブルがまだ存在すると判断された場合には、端子Cを介して図44の処理に移行する。
一方、未生成の関連テーブルが存在しないと判断された場合には、データ生成決定部7は、例えば図62に示すような処理結果を含む表示をユーザに対して出力する(ステップS60)。図62には、テーブルAのレコードが15件、テーブルXのレコードが13件、テーブルZのレコードが21件生成され、生成された関連データのセットが\CreatedData\A_X_Zフォルダに格納されていることが示されている。メッセージ内容については、様々な態様に変形可能である。
最終的にDB13に格納されるデータをまとめると、テーブルAについては図63に示すように15レコードが生成され、テーブルXについては図64に示すように13レコード生成され、テーブルZについては図65に示すように21レコードが生成される。
以上のような処理を実施することにより、関係多重度がn:mであるような場合においても、ユーザによって指定されたレコード間関係数の上限に応じて、業務上の整合性を保持しつつ、処理上の網羅性を担保するようなレコード群を生成することができるようになる。なお、上では0..n:0..mの例を説明したが、例えば1..n:1..mであっても、0:0のサブバリエーションを生成しないようにすればよい。同様に下限が1より大きい場合、例えば2..n:2..mの場合にも、2:2、2:m、n:2、n:mといったようにサブバリエーションに展開するようにすればよい。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるわけではない。例えば、図2に示した機能ブロック図は一例であって、必ずしもプログラムモジュール構成に対応しない場合もある。
さらに、処理フローについても処理結果が変わらない限り、ステップの順番を入れ替えたり、並列実行させることができる。
以上述べた実施の形態をまとめると以下のようになる。
第1の態様に係るテストデータ生成方法は、第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、第1のテーブル及び第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、第1のテーブルのデータと第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されている区分状態情報から第1のテーブルにおける区分及び状態の業務上取り得る組み合わせを特定し、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って上記組み合わせに応じた第1のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報から、第1のテーブルのレコードと第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、上記バリエーションにおいて必要となる第1のテーブルのレコードであって未生成のレコードが存在する場合には、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録する第1テーブル未生成レコード生成ステップと、設計情報格納部に格納されている第2のテーブルのスキーマ項目情報及びスキーマ関連情報における第1のテーブルと第2のテーブルとの関係付けに従って、上記バリエーションに応じて必要となる第2のテーブルのレコードを生成し、データベースに登録する第2テーブルレコード生成ステップとを含む。
このように業務上取り得る組み合わせに応じた第1のテーブルのレコードを生成することによって、業務上の整合性及び処理上の網羅性を担保し、第1のテーブルのレコードと第2のテーブルのレコードとの対応関係のバリエーションに応じて第1及び第2のテーブルのレコードを生成することによって、処理上の網羅性を担保している。すなわち、業務アプリケーション・プログラムに対して正しいテストを行うために十分なテストデータを自動的に生成することができるようになる。
なお、上で述べたバリエーション特定ステップが、スキーマ関連情報における関係多重度がx(0以上の整数)乃至n(変数)であり且つ多重度上限m(xより大きい整数)が指定された場合、第1のテーブルの1レコードに対応して第2のテーブルのxレコードというバリエーションと、第1のテーブルの1レコードに対応して第2のテーブルのmレコードというバリエーションとを生成するステップを含むようにしてもよい。処理上の網羅性を担保するためである。
さらに、上で述べたバリエーション特定ステップが、スキーマ関連情報における関係多重度が0乃至n(変数)であり且つ多重度上限m(2以上の整数)が指定された場合、第1のテーブルの1レコードに対応して第2のテーブルのレコードなしというバリエーションと、第1のテーブルの1レコードに対応して第2のテーブルの1レコードというバリエーションと、第1のテーブルの1レコードに対応して第2のテーブルのmレコードというバリエーションとを生成するステップを含むようにしてもよい。典型的なバリエーションによって、処理上の網羅性を担保するためである。
さらに、上で述べたバリエーション特定ステップが、スキーマ関連情報における、第1のテーブルの特定のレコードと第2のテーブルのレコードの関係多重度がx(0以上の整数)乃至n(変数)であり且つ多重度上限m(xより大きい整数)が指定された場合、第1のテーブルの特定のレコードに対応して第2のテーブルのxレコードであり且つ第1のテーブルの特定のレコード以外のレコードに対応して第2のテーブルのレコードなしというバリエーションと、第1のテーブルの特定のレコードに対応して第2のテーブルのmレコードであり且つ第1のテーブルの特定のレコード以外のレコードに対応して第2のテーブルのレコードなしというバリエーションとを生成するステップを含むようにしてもよい。特定のレコード(区分や状態)についてのみ第2のテーブルのレコードが対応付けられるような場合もある。
また、上で述べた第1テーブル未生成レコード生成ステップが、第1のテーブルにおいて外部キーに相当するカラムの値のうち、上記バリエーションに基づき使用可能な値が存在するか否かを判断するステップを含むようにしてもよい。このようにすれば、上記バリエーションにおいて必要となる第1のテーブルのレコードであって未生成のレコードが存在するか否かを判断することができるようになる。
さらに、上で述べた第2テーブルレコード生成ステップが、第1のテーブルにおいて外部キーに相当するカラムの値のうち、上記バリエーションに基づき使用可能な値を、第2のテーブルにおける外部キーに相当するカラムの値として採用するステップを含むようにしてもよい。
また、上で述べた第2テーブルレコード生成ステップが、第1テーブル未生成レコード生成ステップにおいて新たにレコードが生成された場合には、当該新たなレコードにおける外部キーに相当するカラムの値を、第2のテーブルにおける外部キーに相当するカラムの値として採用するステップを含むようにしてもよい。
さらに、第1の態様に係るテストデータ生成方法において、設計情報格納部が、第1のテーブル又は第2のテーブルと第3のテーブルの関係付け及び関係多重度を表す第2のスキーマ関連情報と、第3のテーブルのスキーマ項目情報とをさらに格納している場合には、設計情報格納部に格納されている第2のスキーマ関連情報とユーザ指定の多重度上限とから、第1のテーブルのレコード又は第2のテーブルのレコードと第3のテーブルのレコードとの対応関係のバリエーションを特定するステップと、上記バリエーションにおいて必要となる第1のテーブルのレコード又は第2のテーブルのレコードであって未生成のレコードが存在する場合には、設計情報格納部に格納されている第1のテーブル又は第2のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されている第3のテーブルのスキーマ項目情報及び第2のスキーマ関連情報における第1のテーブル又は第2のテーブルと第3のテーブルとの関係付けに従って、バリエーションに応じて必要となる第3のテーブルのレコードを生成し、データベースに登録するステップとをさらに含むようにしても良い。複数の関連テーブルが存在する場合にも対処することができるようになる。
第2の態様に係るテストデータ生成方法は、第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されているスキーマ関連情報で指定される区分値のバリエーションを特定し、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って区分値のバリエーションに応じた第1のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報の区分値毎の関係多重度から、第1のテーブルのレコードと第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、バリエーションにおいて必要となる第1のテーブルのレコードであって未生成のレコードが存在する場合には、設計情報格納部に格納されている第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録する第1テーブル未生成レコード生成ステップと、設計情報格納部に格納されている第2のテーブルのスキーマ項目情報及びスキーマ関連情報における第1のテーブルと第2のテーブルとの関係付けに従って、バリエーションに応じて必要となる第2のテーブルのレコードを生成し、データベースに登録する第2テーブルレコード生成ステップとを含む。
このように区分状態情報が用意されない場合においても、業務アプリケーション・プログラムに対して正しいテストを行うために十分なテストデータを自動的に生成することができる。
第3の態様に係るテストデータ生成方法は、第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各テーブルのスキーマ項目情報とを格納する設計情報格納部と、各テーブルを格納するデータベースとにアクセス可能であるコンピュータにより実行される。そして、設計情報格納部に格納されているスキーマ関連情報で指定される区分値のバリエーションを特定し、設計情報格納部に格納されている前記スキーマ項目情報に従って区分値のバリエーションに応じた第1及び第2のテーブルのレコードを生成し、データベースに登録するステップと、設計情報格納部に格納されているスキーマ関連情報の関連データ項目間における区分値毎の関係多重度から、関連データ項目を含む、関係テーブルのレコードのバリエーションを特定するバリエーション特定ステップと、関係テーブルのレコードのバリエーションにおいて必要となる第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、設計情報格納部に格納されている第1及び第2のテーブルのスキーマ項目情報に従って第1及び第2のテーブルの、関連データ項目の値を含むレコードを新たに生成し、データベースに登録すると共に、データベースに登録されている第1及び第2のテーブルのレコードを用いて、関係テーブルのレコードを生成し、データベースに登録する関係テーブル生成ステップとを含む。
そして、上で述べたバリエーション特定ステップは、関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する展開ステップを含む。また、上で述べた関係テーブル生成ステップは、n:mのサブバリエーションのための関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、第1のテーブルの関連データ項目のn個の値と第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意するステップを含む。
このようにすれば、関係多重度がa乃至n:b乃至mの場合においても、テスト上十分な網羅性をもってテストデータを生成することができるようになる。また、業務アプリケーション・プログラムにおける業務上の整合性を担保しつつテストデータを生成することもできる。
なお、a=0且つb=0である場合には、展開ステップにおいて、0:0、1:1、1:m及びn:1のサブバリエーションに展開するようにしてもよい。これによって網羅性が担保される。
なお、本方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
なお、テストデータ生成装置100は、例えばコンピュータ装置であって、図66に示すように当該コンピュータ装置においては、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS)及びWebブラウザを含むアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。このようなコンピュータは、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
(付記1)
第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、前記第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータに、
前記設計情報格納部に格納されている区分状態情報から前記第1のテーブルにおける前記区分及び状態の業務上取り得る組み合わせを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記組み合わせに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
を実行させるためのテストデータ生成プログラム
(付記2)
前記バリエーション特定ステップが、
前記スキーマ関連情報における前記関係多重度がx(0以上の整数)乃至n(変数)であり且つユーザにより多重度上限m(xより大きい整数)が指定された場合、前記第1のテーブルの1レコードに対応して前記第2のテーブルのxレコードというバリエーションと、前記第1のテーブルの1レコードに対応して前記第2のテーブルのmレコードというバリエーションとを生成するステップ
を含む付記1記載のテストデータ生成プログラム
(付記3)
前記バリエーション特定ステップが、
前記スキーマ関連情報における前記関係多重度が0乃至n(変数)であり且つユーザにより多重度上限m(2以上の整数)が指定された場合、前記第1のテーブルの1レコードに対応して前記第2のテーブルのレコードなしというバリエーションと、前記第1のテーブルの1レコードに対応して前記第2のテーブルの1レコードというバリエーションと、前記第1のテーブルの1レコードに対応して前記第2のテーブルのmレコードというバリエーションとを生成するステップ
を含む付記1記載のテストデータ生成プログラム
(付記4)
前記バリエーション特定ステップが、
前記スキーマ関連情報における、前記第1のテーブルの特定のレコードと前記第2のテーブルのレコードの前記関係多重度がx(0以上の整数)乃至n(変数)であり且つユーザにより多重度上限m(xより大きい整数)が指定された場合、前記第1のテーブルの特定のレコードに対応して前記第2のテーブルのxレコードであり且つ前記第1のテーブルの特定のレコード以外のレコードに対応して前記第2のテーブルのレコードなしというバリエーションと、前記第1のテーブルの特定のレコードに対応して前記第2のテーブルのmレコードであり且つ前記第1のテーブルの特定のレコード以外のレコードに対応して前記第2のテーブルのレコードなしというバリエーションとを生成するステップ
を含む付記1記載のテストデータ生成プログラム
(付記5)
前記第1テーブル未生成レコード生成ステップが、
前記第1のテーブルにおいて外部キーに相当するカラムの値のうち、前記バリエーションに基づき使用可能な値が存在するか否かを判断するステップ
を含む付記1記載のテストデータ生成プログラム
(付記6)
前記第2テーブルレコード生成ステップが、
前記第1のテーブルにおいて外部キーに相当するカラムの値のうち、前記バリエーションに基づき使用可能な値を、前記第2のテーブルにおける外部キーに相当するカラムの値として採用するステップ
を含む付記1記載のテストデータ生成プログラム
(付記7)
前記第2テーブルレコード生成ステップが、
前記第1テーブル未生成レコード生成ステップにおいて新たにレコードが生成された場合には、当該新たなレコードにおける外部キーに相当するカラムの値を、前記第2のテーブルにおける外部キーに相当するカラムの値として採用するステップ
を含む付記1記載のテストデータ生成プログラム。
(付記8)
前記設計情報格納部が、第1のテーブル又は第2のテーブルと第3のテーブルの関係付け及び関係多重度を表す第2のスキーマ関連情報と、前記第3のテーブルのスキーマ項目情報とをさらに格納している場合には、
前記設計情報格納部に格納されている前記第2のスキーマ関連情報とユーザ指定の多重度上限とから、前記第1のテーブルのレコード又は前記第2のテーブルのレコードと前記第3のテーブルのレコードとの対応関係のバリエーションを特定するステップと、
前記バリエーションにおいて必要となる前記第1のテーブルのレコード又は前記第2のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブル又は前記第2のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記第3のテーブルのスキーマ項目情報及び前記第2のスキーマ関連情報における前記第1のテーブル又は前記第2のテーブルと前記第3のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第3のテーブルのレコードを生成し、前記データベースに登録するステップと、
をさらに前記コンピュータに実行させるための付記1記載のテストデータ生成プログラム。
(付記9)
第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、前記第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータに実行されるテストデータ生成方法であって、
前記設計情報格納部に格納されている区分状態情報から前記第1のテーブルにおける前記区分及び状態の業務上取り得る組み合わせを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記組み合わせに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
を含むテストデータ生成方法。
(付記10)
第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、前記第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、
前記設計情報格納部に格納されている区分状態情報から前記第1のテーブルにおける前記区分及び状態の業務上取り得る組み合わせを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記組み合わせに応じた前記第1のテーブルのレコードを生成し、データベースに登録する手段と、
前記設計情報格納部に格納されている前記スキーマ関連情報から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定手段と、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、データベースに登録する第1テーブル未生成レコード生成手段と、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、データベースに登録する第2テーブルレコード生成手段と、
を有するテストデータ生成装置。
(付記11)
第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータに、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記区分値毎の関係多重度から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
を実行させるためのテストデータ生成プログラム
(付記12)
第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び前記第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各前記テーブルのスキーマ項目情報とを格納する設計情報格納部と、各前記テーブルを格納するデータベースとにアクセス可能であるコンピュータに、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記スキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1及び第2のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記関連データ項目間における前記区分値毎の関係多重度から、前記関連データ項目を含む、前記関係テーブルのレコードのバリエーションを特定するバリエーション特定ステップと、
前記関係テーブルのレコードのバリエーションにおいて必要となる前記第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、前記設計情報格納部に格納されている前記第1及び第2のテーブルのスキーマ項目情報に従って前記第1及び第2のテーブルの、前記関連データ項目の値を含むレコードを新たに生成し、前記データベースに登録すると共に、前記データベースに登録されている前記第1及び第2のテーブルのレコードを用いて、前記関係テーブルのレコードを生成し、前記データベースに登録する関係テーブル生成ステップと、
をコンピュータに実行させ、
前記バリエーション特定ステップが、
前記関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する展開ステップ
を含み、
前記関係テーブル生成ステップが、
前記n:mのサブバリエーションのための前記関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、前記第1のテーブルの関連データ項目のn個の値と前記第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意するステップ
を含むテストデータ生成プログラム。
(付記13)
a=0且つb=0である場合
前記展開ステップにおいて、0:0、1:1、1:m及びn:1のサブバリエーションに展開する
付記12記載のテストデータ生成プログラム
(付記14)
第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータにより実行されるテストデータ生成方法であって、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記区分値毎の関係多重度から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
を含むテストデータ生成方法。
(付記15)
第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び前記第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各前記テーブルのスキーマ項目情報とを格納する設計情報格納部と、各前記テーブルを格納するデータベースとにアクセス可能であるコンピュータにより実行されるテストデータ生成方法であって、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記スキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1及び第2のテーブルのレコードを生成し、前記データベースに登録するステップと、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記関連データ項目間における前記区分値毎の関係多重度から、前記関連データ項目を含む、前記関係テーブルのレコードのバリエーションを特定するバリエーション特定ステップと、
前記関係テーブルのレコードのバリエーションにおいて必要となる前記第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、前記設計情報格納部に格納されている前記第1及び第2のテーブルのスキーマ項目情報に従って前記第1及び第2のテーブルの、前記関連データ項目の値を含むレコードを新たに生成し、前記データベースに登録すると共に、前記データベースに登録されている前記第1及び第2のテーブルのレコードを用いて、前記関係テーブルのレコードを生成し、前記データベースに登録する関係テーブル生成ステップと、
をコンピュータに実行させ、
前記バリエーション特定ステップが、
前記関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する展開ステップ
を含み、
前記関係テーブル生成ステップが、
前記n:mのサブバリエーションのための前記関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、前記第1のテーブルの関連データ項目のn個の値と前記第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意するステップ
を含むテストデータ生成方法。
(付記16)
第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1のテーブルのレコードを生成し、データベースに登録する手段と、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記区分値毎の関係多重度から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定手段と、
前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成手段と、
前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成手段と、
を有するテストデータ生成装置。
(付記17)
第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び前記第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各前記テーブルのスキーマ項目情報とを格納する設計情報格納部と、
前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記スキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1及び第2のテーブルのレコードを生成し、データベースに登録する手段と、
前記設計情報格納部に格納されている前記スキーマ関連情報の前記関連データ項目間における前記区分値毎の関係多重度から、前記関連データ項目を含む、前記関係テーブルのレコードのバリエーションを特定するバリエーション特定手段と、
前記関係テーブルのレコードのバリエーションにおいて必要となる前記第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、前記設計情報格納部に格納されている前記第1及び第2のテーブルのスキーマ項目情報に従って前記第1及び第2のテーブルの、前記関連データ項目の値を含むレコードを新たに生成し、前記データベースに登録すると共に、前記データベースに登録されている前記第1及び第2のテーブルのレコードを用いて、前記関係テーブルのレコードを生成し、データベースに登録する関係テーブル生成手段と、
を有し、
前記バリエーション特定手段が、
前記関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する手段
を有し、
前記関係テーブル生成手段が、
前記n:mのサブバリエーションのための前記関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、前記第1のテーブルの関連データ項目のn個の値と前記第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意する手段
を有するテストデータ生成装置。
従来技術の問題を説明するための図である。 第1の実施の形態に係るシステム概要を示す図である。 第1の例のクラス図を示す図である。 第1の例の別の観点からのクラス図である。 第1の実施の形態における処理フローを示す図である。 入力画面の一例を示す図である。 ユーザ履歴テーブルのスキーマ関連情報の一例を示す図である。 ユーザテーブルの区分・状態情報の一例を示す図である。 ユーザテーブルのスキーマ項目情報の一例を示す図である。 ユーザテーブルの第1の部分を示す図である。 出力画面の一例を示す図である。 第1の実施の形態における処理フローを示す図である。 第1の例におけるユーザテーブルとユーザ履歴テーブルとの対応関係のバリエーションを示す図である。 ユーザテーブルの第2の部分を示す図である。 ユーザ履歴テーブルのスキーマ項目情報の一例を示す図である。 ユーザ履歴テーブルの一例を示す図である。 ユーザテーブルの第3の部分を示す図である。 第2の例におけるクラス図である。 第2の例の区分・状態情報を示す図である。 第2の例におけるユーザテーブルとユーザ履歴テーブルとの対応関係のバリエーションを示す図である。 第2の例におけるユーザテーブルの追加分を示す図である。 第2の例におけるユーザ履歴テーブルを示す図である。 第3の例におけるクラス図である。 担当販売テーブルのスキーマ関連情報の一例を示す図である。 担当販売テーブルのスキーマ項目情報の一例を示す図である。 第3の例におけるユーザテーブルと担当販売テーブルとの対応関係におけるバリエーションを示す図である。 担当販売テーブルの一例を示す図である。 担当販売テーブルの一例を示す図である。 販売員テーブルのスキーマ関連情報の一例を示す図である。 販売員テーブルのスキーマ項目情報の一例を示す図である。 販売員テーブルの一例を示す図である。 第2の実施の形態の前提を説明するための図である。 第2の実施の形態の前提を説明するための図である。 第2の実施の形態の前提を説明するための図である。 第2の実施の形態を説明するための具体例のクラス図である。 テーブルAのスキーマ項目定義の一例を示す図である。 テーブルXのスキーマ項目定義の一例を示す図である。 テーブルZのスキーマ項目定義の一例を示す図である。 スキーマ関連情報の一例を示す図である。 第2の実施の形態における処理フローを示す図である。 設定情報入力画面の一例を示す図である。 第1段階におけるテーブルAの状態を示す図である。 第1段階におけるテーブルXの状態を示す図である。 第1段階におけるテーブルZの状態を示す図である。 第2の実施の形態における処理フローを示す図である。 レコード生成処理の処理フローを示す図である。 (a)乃至(c)は、レコード生成処理において最初に用意されるデータの一例を示す図である。 第2段階においてテーブルAに追加されるデータを示す図である。 第2段階においてテーブルXに追加されるデータを示す図である。 第2段階においてテーブルZに追加されるデータを示す図である。 n:mレコード生成処理の処理フローを示す図である。 第3段階において用意されるデータの一例を示す図である。 第3段階において追加されるデータの一例を示す図である。 第3段階において連結されたデータの一例を示す図である。 第3段階においてさらに連結されたデータの一例を示す図である。 第3段階においてテーブルAに追加されるデータの一例を示す図である。 第3段階においてテーブルXに追加されるデータの一例を示す図である。 第3段階においてテーブルZに追加されるデータの一例を示す図である。 (a)乃至(d)は、第4段階において用意されるデータの一例を示す図である。 第4段階においてテーブルAに追加されるデータの一例を示す図である。 第4段階においてテーブルXに追加されるデータの一例を示す図である。 第4段階においてテーブルZに追加されるデータの一例を示す図である。 処理結果の出力例を示す図である。 最終的にテーブルAに格納されるデータの一例を示す図である。 最終的にテーブルXに格納されるデータの一例を示す図である。 最終的にテーブルZに格納されるデータの一例を示す図である。 コンピュータの機能ブロック図である。
1 入力部
3 設計情報格納部
5 設計情報読み取り部
7 データ生成決定部
9 バリエーションデータ格納部
11 データ生成部
13 DB

Claims (7)

  1. 第1のテーブルと第2のテーブルとの関係付け及び関係多重度を表すスキーマ関連情報と、前記第1のテーブルの区分及び状態の業務上取り得る組み合わせに関する区分状態情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータに、
    前記設計情報格納部に格納されている区分状態情報から前記第1のテーブルにおける前記区分及び状態の業務上取り得る組み合わせを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記組み合わせに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
    前記設計情報格納部に格納されている前記スキーマ関連情報から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
    前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
    前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
    を実行させるためのテストデータ生成プログラム。
  2. 前記バリエーション特定ステップが、
    前記スキーマ関連情報における前記関係多重度が0乃至n(変数)であり且つユーザにより多重度上限m(2以上の整数)が指定された場合、前記第1のテーブルの1レコードに対応して前記第2のテーブルのレコードなしというバリエーションと、前記第1のテーブルの1レコードに対応して前記第2のテーブルの1レコードというバリエーションと、前記第1のテーブルの1レコードに対応して前記第2のテーブルのmレコードというバリエーションとを生成するステップ
    を含む請求項1記載のテストデータ生成プログラム。
  3. 前記バリエーション特定ステップが、
    前記スキーマ関連情報における、前記第1のテーブルの特定のレコードと前記第2のテーブルのレコードの関係多重度がx(0以上の整数)乃至n(変数)であり且つ重度上限m(xより大きい整数)が指定された場合、前記第1のテーブルの特定のレコードに対応して前記第2のテーブルのxレコードであるというバリエーションと、前記第1のテーブルの特定のレコードに対応して前記第2のテーブルのmレコードであるというバリエーションと、前記第1のテーブルの特定のレコードに対応して前記第2のテーブルのnレコードというバリエーションとを生成するステップ
    を含む請求項1記載のテストデータ生成プログラム。
  4. 前記第1テーブル未生成レコード生成ステップが、
    前記第1のテーブルにおいて外部キーに相当するカラムの値のうち、前記バリエーションに基づき使用可能な値が存在するか否かを判断するステップ
    を含む請求項1記載のテストデータ生成プログラム。
  5. 前記第2テーブルレコード生成ステップが、
    前記第1のテーブルにおいて外部キーに相当するカラムの値のうち、前記バリエーションに基づき使用可能な値を、前記第2のテーブルにおける外部キーに相当するカラムの値として採用するステップ
    を含む請求項1記載のテストデータ生成プログラム。
  6. 第1のテーブルと第2のテーブルとの関係付け及び区分値毎の関係多重度を表すスキーマ関連情報と、前記第1のテーブル及び前記第2のテーブルのスキーマ項目情報とを格納する設計情報格納部と、前記第1のテーブルのデータと前記第2のテーブルのデータとを格納するデータベースとにアクセス可能であるコンピュータに、
    前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1のテーブルのレコードを生成し、前記データベースに登録するステップと、
    前記設計情報格納部に格納されている前記スキーマ関連情報の前記区分値毎の関係多重度から、前記第1のテーブルのレコードと前記第2のテーブルのレコードとの対応関係のバリエーションを特定するバリエーション特定ステップと、
    前記バリエーションにおいて必要となる前記第1のテーブルのレコードであって未生成のレコードが存在する場合には、前記設計情報格納部に格納されている前記第1のテーブルのスキーマ項目情報に従って新たにレコードを生成し、前記データベースに登録する第1テーブル未生成レコード生成ステップと、
    前記設計情報格納部に格納されている前記第2のテーブルのスキーマ項目情報及び前記スキーマ関連情報における前記第1のテーブルと前記第2のテーブルとの関係付けに従って、前記バリエーションに応じて必要となる前記第2のテーブルのレコードを生成し、前記データベースに登録する第2テーブルレコード生成ステップと、
    を実行させるためのテストデータ生成プログラム。
  7. 第1及び第2のテーブル並びに当該第1及び第2のテーブルの関係テーブル間の関係付け及び前記第1及び第2のテーブルにおける関連データ項目間における区分値毎の関係多重度を表すスキーマ関連情報と、各前記テーブルのスキーマ項目情報とを格納する設計情報格納部と、各前記テーブルを格納するデータベースとにアクセス可能であるコンピュータに、
    前記設計情報格納部に格納されている前記スキーマ関連情報で指定される区分値のバリエーションを特定し、前記設計情報格納部に格納されている前記スキーマ項目情報に従って前記区分値のバリエーションに応じた前記第1及び第2のテーブルのレコードを生成し、前記データベースに登録するステップと、
    前記設計情報格納部に格納されている前記スキーマ関連情報の前記関連データ項目間における前記区分値毎の関係多重度から、前記関連データ項目を含む、前記関係テーブルのレコードのバリエーションを特定するバリエーション特定ステップと、
    前記関係テーブルのレコードのバリエーションにおいて必要となる前記第1及び第2のテーブルの関連データ項目の値であって未生成の値が存在する場合には、前記設計情報格納部に格納されている前記第1及び第2のテーブルのスキーマ項目情報に従って前記第1及び第2のテーブルの、前記関連データ項目の値を含むレコードを新たに生成し、前記データベースに登録すると共に、前記データベースに登録されている前記第1及び第2のテーブルのレコードを用いて、前記関係テーブルのレコードを生成し、前記データベースに登録する関係テーブル生成ステップと、
    をコンピュータに実行させ、
    前記バリエーション特定ステップが、
    前記関係多重度がa乃至n:b乃至m(n及びmは2以上の整数。aは0以上n未満の整数。bは0以上m未満の整数。)というバリエーションの場合に、n:mを含む複数のサブバリエーションに展開する展開ステップ
    を含み、
    前記関係テーブル生成ステップが、
    前記n:mのサブバリエーションのための前記関係テーブルのレコード群を生成する場合、当該レコード群における、データ項目変更時の影響波及範囲を表すレコード間関係数が、指定されたレコード間関係数上限値以下で最大となるように、前記第1のテーブルの関連データ項目のn個の値と前記第2のテーブルの関連データ項目のm個の値とを含むデータセットを1又は複数セット用意するステップ
    を含むテストデータ生成プログラム。
JP2008177573A 2007-09-27 2008-07-08 テストデータ生成プログラム Expired - Fee Related JP5292956B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008177573A JP5292956B2 (ja) 2007-09-27 2008-07-08 テストデータ生成プログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007250544 2007-09-27
JP2007250544 2007-09-27
JP2008177573A JP5292956B2 (ja) 2007-09-27 2008-07-08 テストデータ生成プログラム

Publications (2)

Publication Number Publication Date
JP2009099126A JP2009099126A (ja) 2009-05-07
JP5292956B2 true JP5292956B2 (ja) 2013-09-18

Family

ID=40702032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008177573A Expired - Fee Related JP5292956B2 (ja) 2007-09-27 2008-07-08 テストデータ生成プログラム

Country Status (1)

Country Link
JP (1) JP5292956B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626388B2 (en) * 2013-09-06 2017-04-18 TransMed Systems, Inc. Metadata automated system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3366257B2 (ja) * 1998-07-07 2003-01-14 エヌイーシーシステムテクノロジー株式会社 データウェアハウステストデータ作成装置
JP2004303115A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd ワークフローシステム構築方法
JP2006227958A (ja) * 2005-02-18 2006-08-31 Nomura Research Institute Ltd テストデータ生成システム及びテストデータ生成方法

Also Published As

Publication number Publication date
JP2009099126A (ja) 2009-05-07

Similar Documents

Publication Publication Date Title
US6944515B2 (en) Parts list system which generates and manages a parts list simply and effectively
CN104765745B (zh) 对数据库中的加载数据进行逻辑验证的方法和***
CN111736836B (zh) 基于关系图的组件配置方法、装置及计算机可读存储介质
JP7183592B2 (ja) 業務テンプレート変更装置及びプログラム
CN108304291B (zh) 测试输入信息检索装置和方法
US10303668B2 (en) Automatic screen generation device, automatic screen generation program, and automatic screen generation method
JP5292956B2 (ja) テストデータ生成プログラム
US6968518B2 (en) Method of resolving missing graphical symbols in computer-aided integrated circuit design
JPWO2017134800A1 (ja) 表形式データの解析方法、表形式データの解析プログラム及び情報処理装置
JP6948492B2 (ja) 情報管理装置並びにファイル管理方法
US20090119312A1 (en) Taxonomy tool
JP2018032113A (ja) 情報管理装置並びにファイル管理方法
JP2004046650A (ja) データ管理方法およびデータベース構造
JPWO2009008129A1 (ja) 開発書類データ管理装置、開発書類データ管理システム、開発書類データ管理方法及び、そのプログラム並びに記憶媒体
JP2007299093A (ja) 文書管理システム
JP2004199418A (ja) 設計思考支援方法
JP6361472B2 (ja) 対応情報生成プログラム、対応情報生成装置及び対応情報生成方法
JP6700452B2 (ja) データ集計装置、データ集計方法およびデータ集計プログラム
JP4663526B2 (ja) 帳票作成支援装置、帳票作成支援方法、および帳票作成支援プログラム
JP4756962B2 (ja) 製品構成管理プログラム、製品構成管理方法および製品構成管理装置
JP2017174087A (ja) 情報処理装置及び情報処理プログラム
JP2001014202A (ja) データ検索システム、当該システムで用いられるサーバ計算機およびコンピュータをデータ検索システムで用いられるサーバ計算機として機能させるためのプログラムを記録したコンピュータ読取可能な記録媒体
JP2005275597A (ja) 部品構成比較システム、部品構成比較方法およびプログラム
JP2009093574A (ja) ナレッジ・データ処理方法及び装置、並びにリンク生成方法及び装置
CN117076512A (zh) 数据查询方法、装置及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110418

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121011

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130527

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees