【文献】
小玉哲博 他,「効果的なテストのための思考法 テスト方法論 「STEM」のアプローチ」,ソフトウェア・テストPRESS,(株)技術評論社,2009年2月25日,第8巻,第74頁−第96頁
【文献】
土屋達弘 他,「ペアワイズテスト−ソフトウェアテストの効率化を求めて−」,電子情報通信学会論文誌,社団法人電子情報通信学会,2007年10月1日,第J90−D巻 第10号,第2663頁−第2674頁
(58)【調査した分野】(Int.Cl.,DB名)
内容を生成する工程が、前記データフィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含み、前記フォーマットの指定は、前記生成される内容についてのフォーマットの特性を示す、請求項1に記載の方法。
前記データフィールド各々に前記生成された内容を入れる工程が、前記データフィールドの1つまたは複数について、既に存在する内容に変更を加える工程を含む請求項1から6のいずれか一項に記載の方法。
前記データフィールド各々に内容を入れる工程が、1つまたは複数の既に存在するデータレコードに特定のデータフィールドを作成する工程を含む請求項1から7のいずれか一項に記載の方法。
前記基準が、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値のうちの1つまたは複数を特定する情報を含む請求項1から8のいずれか一項に記載の方法。
前記生成モードが、(i)複数のデータレコード各々の前記データフィールドの1つまたは複数について、ランダムな内容を生成すること、(ii)複数のデータレコード各々の前記データフィールドの1つまたは複数について、一意の内容を生成すること、および(iii)複数のデータレコード各々の前記データフィールドの1つまたは複数のデータフィールドの内容を、利用可能な内容のセットから選択することのうち、1つまたは複数を含む請求項13に記載の方法。
データ処理アプリケーションによる、1つまたは複数のデータレコードの第1のセットの処理中に、前記データ処理アプリケーションの処理規則が実行された第1の回数を示す情報を取得する手段であって、前記処理規則は、少なくとも1つの入力値で動作すると共に少なくとも1つの出力値を生成し、更に、前記処理規則が、特定のデータレコードの処理中に前記データ処理アプリケーションによって実行されるかどうかが、前記特定のデータレコードの1つまたは複数のデータフィールド各々における値に依存する、手段と、
前記処理規則が実行された前記第1の回数が閾値未満のときに、1つまたは複数のデータフィールド各々に関して生成される内容の特性を示す基準を決定する手段と、
前記基準に基づいて前記データフィールド各々の内容を生成する手段と、
1つまたは複数のデータレコードの第2のセットの1つまたは複数のデータフィールドに、前記生成された内容を入れる手段であって、データレコードの前記第2のセットの中の少なくとも一部の前記データレコードは、前記第1のセットの1つまたは複数のデータフィールドの少なくとも一部の内容を含む、手段とを備え、
前記データ処理アプリケーションによってデータレコードの前記第2のセットが処理されるときに、前記処理規則が、前記閾値以上である第2の回数実行される、
コンピューティングシステム。
前記データ処理アプリケーションが前記第2のデータレコードを処理する時に前記第2のデータレコードのデータが各処理規則の前記目標値を満たさせるように、前記基準を決定する工程を含む請求項21から25のいずれか一項に記載の方法。
前記第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程が、前記第1のデータレコードの1つまたは複数のフィールドの内容に変更を加える工程を含み、前記変更が加えられた第1のデータレコードが前記第2のデータレコードである請求項21から26のいずれか一項に記載の方法。
前記第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程が、新しいデータレコードを作成する工程を含む請求項21から27のいずれか一項に記載の方法。
前記データ処理アプリケーションを試験する工程が、前記データ処理アプリケーションを使用して前記第2のデータレコードを処理した結果に基づいて前記データ処理アプリケーションに変更を加える工程を含む請求項21から30のいずれか一項に記載の方法。
前記第2のデータレコードの前記データが、前記データ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように前記基準を決定する工程を含む請求項21から31のいずれか一項に記載の方法。
前記プロセッサが、ユーザインターフェースを通じて前記フォーマットの指定を受け取るように構成される、請求項33から35のいずれか一項に記載のコンピューティングシステム。
前記データフィールド各々に前記生成された内容を入れることが、前記データフィールドの1つまたは複数について、既に存在する内容に変更を加えることを含む請求項19に記載のコンピューティングシステム。
前記データフィールド各々に内容を入れることが、1つまたは複数の既に存在するデータレコードに特定のデータフィールドを作成することを含む請求項19に記載のコンピューティングシステム。
前記基準が、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値のうちの1つまたは複数を特定する情報を含む請求項19に記載のコンピューティングシステム。
前記生成モードが、(i)複数のデータレコード各々の前記データフィールドの1つまたは複数について、ランダムな内容を生成すること、(ii)複数のデータレコード各々の前記データフィールドの1つまたは複数について、一意の内容を生成すること、および(iii)複数のデータレコード各々の前記データフィールドの1つまたは複数のデータフィールドの内容を、利用可能な内容のセットから選択することのうち、1つまたは複数を含む請求項44に記載のコンピューティングシステム。
前記プロセッサが、前記生成された内容を含む1つまたは複数のデータレコードを前記データ処理アプリケーションに提供するように構成される、請求項19に記載のコンピューティングシステム。
【発明の概要】
【課題を解決するための手段】
【0004】
一般的な態様において、方法は、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数を示すデータを受け取る工程と、1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数の特定のフィールド各々の内容の基準を決定する工程と、内容の基準に基づいて特定のフィールド各々の内容を生成する工程と、特定のフィールド各々に、生成された内容を入れる工程とを含む。
【0005】
実施形態は、以下の特徴の1つまたは複数も含むことができる。
【0006】
内容を生成する工程は、特定のフィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含む。フォーマットの指定は、ストリング、小数、整数、日付、または日時、の1つまたは複数を含む内容の種類を指示する。上記方法は、ユーザインターフェースを通じてフォーマットの指定を受け取る工程を含む。
【0007】
上記方法は、特定のフィールドの1つまたは複数を含む新しいレコードを作成する工程と、新しいレコードの上記特定のフィールドに内容を入れる工程とを含む。
【0008】
特定のフィールド各々に生成された内容を入れる工程は、特定のフィールドの1つまたは複数について、既に存在する内容に変更を加える工程を含む。
【0009】
フィールド各々に内容を入れる工程は、1つまたは複数の既に存在するレコードに特定のフィールドを作成する工程を含む。
【0010】
内容の基準は、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値、の1つまたは複数を含む。
【0011】
内容の基準は、生成される内容について特定の値を含む。
【0012】
内容の基準は、1つまたは複数のフィールドの2つ以上に含める内容の組み合わせの目標を指示する。
【0013】
上記方法は、ユーザインターフェースを通じて内容の基準を受け取る工程を含む。
【0014】
内容を生成する工程は、生成モードに基づいて内容を生成する工程を含む。
【0015】
生成モードは、(i)複数のレコード各々のフィールドの1つまたは複数について、ランダムな内容を生成すること、(ii)複数のレコード各々のフィールドの1つまたは複数について、一意の内容を生成すること、および(iii)複数のレコード各々のフィールドの1つまたは複数のフィールドの内容を、利用可能な内容のセットから選択すること、の1つまたは複数を含む。
【0016】
上記方法は、生成された内容を含む1つまたは複数のレコードをデータ処理アプリケーションに提供する工程を含む。
【0017】
内容の基準は、特定の規則をデータ処理アプリケーションによって実行させるように決定される。
【0018】
内容の基準を決定する工程は、実行された回数が最小閾値回数よりも少なかった特定の規則を特定する工程と、その特定の規則を少なくとも最小閾値回数実行させるように内容の基準を決定する工程とを含む。
【0019】
フォーマットの指定は内容の種類を含む。
【0020】
一般的な態様において、方法は、ユーザインターフェースを通じてフォーマットの指定を受け取る工程と、ユーザインターフェースを通じて内容の基準を受け取る工程と、ユーザインターフェースを通じて、内容が生成されるモードの指示を受け取る工程と、指示されたモードに従って内容を生成する工程であって、生成される内容はフォーマットの指定と内容の基準とを満たす、工程と、レコード中にフィールドを作成する工程であって、フィールドは生成された内容を含む、工程とを含む。
【0021】
実施形態は、以下の特徴の1つまたは複数を含むことができる。
【0022】
上記モードは、(i)複数のレコード各々にランダムな内容を生成すること、(ii)複数のレコード各々に一意の内容を生成すること、および(iii)複数のレコード各々の内容を、利用可能な内容のセットから選択すること、の1つまたは複数を含む。
【0023】
内容の基準を受け取る工程は、ユーザインターフェースに表示された1つまたは複数の内容の基準からの内容の基準の選択を受け取ることを含む。
【0024】
フォーマットの指定を受け取る工程は、ユーザインターフェースに表示された1つまたは複数のフォーマットの指定からのフォーマットの指定の選択を受け取ることを含む。
【0025】
フォーマットの指定は、ストリング、小数、整数、日付、または日時、の1つまたは複数などの内容の種類を指示する。
【0026】
内容の基準は、内容の最大値、内容の最小値、および内容の値の範囲、の1つまたは複数を指示する。
【0027】
内容の基準は内容について特定の値を指示する。
【0028】
内容の基準は、内容の目標分布を指示する。
【0029】
内容の基準は、2つ以上のフィールドに含める内容の組み合わせの目標を指示する。
【0030】
内容生成モードの指示を受け取る工程は、ユーザインターフェースに表示された1つまたは複数の内容生成モードからの内容生成モードの選択を受け取ることを含む。
【0031】
上記方法は、新しいレコードを作成する工程を含む。レコードにフィールドを作成する工程は、新しいレコードにフィールドを作成する工程を含む。
【0032】
上記方法は、第2のフォーマットの指定、第2の内容の基準、および第2のモードの指示を受け取る工程と、指示された第2のモードに従って第2の内容を生成する工程であって、生成される内容は第2のフォーマットの指定と第2の内容の基準とを満たす、工程と、レコード中の既存のフィールドの内容を生成された第2の内容に置き換える工程とを含む。
【0033】
一般的な態様において、非一時的なコンピュータ読取り可能媒体は、コンピュータシステムに、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定させ、内容の基準に基づいてフィールド各々の内容を生成させ、1つまたは複数のレコードのフィールド各々に、生成された内容を入れさせる命令を記憶する。
【0034】
一般的な態様において、コンピューティングシステムは、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定し、内容の基準に基づいてフィールド各々の内容を生成し、1つまたは複数のレコードのフィールド各々に、生成された内容を入れるように構成された少なくとも1つのプロセッサを備える。
【0035】
一般的な態様において、コンピューティングシステムは、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定する手段と、内容の基準に基づいてフィールド各々の内容を生成する手段と、1つまたは複数のレコードのフィールド各々に、生成された内容を入れる手段とを備える。
【0036】
一般的な態様において、データ処理アプリケーションの開発中に前記データ処理アプリケーションを試験する方法は、データ処理アプリケーションを使用して第1のデータレコードを処理する工程であって、データ処理アプリケーションは1つまたは複数の規則を実装する、工程を含む。各第1のデータレコードは複数のフィールドを有する。上記方法は、第1のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較する工程を含む。上記方法は、比較の結果に基づいて、データ処理アプリケーションを使用して処理される第2のデータレコードのデータの目標とする特性を指示する内容の基準を決定する工程を含む。上記方法は、第1のデータレコードのフォーマットと内容の基準とに従って、第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程と、データ処理アプリケーションを使用して第2のデータレコードを処理する工程と、第2のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、前記規則の前記目標値と比較し、各規則の前記目標値が満たされることを判定する工程と、第2のデータレコードを使用してデータ処理アプリケーションを試験する工程とを含む。
【0037】
実施形態は、以下の特徴の1つまたは複数を含むことができる。
【0038】
上記方法は、第1のデータレコードをクライアント装置で受け取る工程を含み、データ処理アプリケーションはそのクライアント装置で実行される。クライアント装置はコンピューティング装置からなる。
【0039】
上記方法は、第1のデータレコードを遠隔のサーバから受け取る工程を含む。上記方法は、LANまたはWAN接続を介してサーバに通信的に結合されたクライアント装置で、第1のデータレコードを受け取る工程を含む。
【0040】
上記方法は、データ処理アプリケーションが第2のデータレコードを処理する時に第2のデータレコードのデータが各規則の前記目標値を満たさせるように、内容の基準を決定する工程を含む。
【0041】
第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程は、第1のデータレコードの1つまたは複数のフィールドの内容に変更を加える工程を含み、変更が加えられた第1のデータレコードが第2のデータレコードである。
【0042】
第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程は、新しいデータレコードを作成する工程を含む。
【0043】
上記方法は、第2のデータレコードを記憶装置に記憶する工程を含む。
【0044】
上記方法は、試験の結果に基づいて、データ処理アプリケーションに変更を加える工程を含む。
【0045】
データ処理アプリケーションを試験する工程が、データ処理アプリケーションを使用して第2のデータレコードを処理した結果に基づいてデータ処理アプリケーションに変更を加える工程を含む。
【0046】
上記方法は、第2のデータレコードのデータが、生産環境でデータ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように内容の基準を決定する工程を含む。
【0047】
態様は、以下の利点の1つまたは複数を含む可能性がある。例えば単純明快なユーザインターフェースを通じて、任意のフォーマットの指定および内容の基準に従ってデータを生成することができる。例えば既存のデータセットに十分なレコードがない場合や、要求される特性を持つレコードがない場合に、データの生成を使用して既存のデータを補うことができる。データの生成を使用して、例えばアプリケーションが、入手可能でないデータを必要とする場合などに、データを新規に生成することもできる。
【0048】
いくつかの例では、データ処理アプリケーションを試験するために実際的なデータを生成することができる。例えば、データ処理アプリケーションのすべての規則を少なくとも1回実行させる、例えばデータ処理アプリケーション中で発生し得るあらゆる動作をトリガーする試験データのセットを生成することができる。そのようなデータが存在しない場合は、そのデータを生成することができる。例えば、データの完全なセットが生成されると、生成されたデータのセットをデータ処理アプリケーションで処理して、データ処理アプリケーションの実行を試験することができる。生成されたデータのセットはデータ処理アプリケーション中で発生し得るあらゆる動作を実行させるので、データ処理アプリケーションを徹底的に試験することができる。データ処理アプリケーションが予想されるように機能しない場合(例えばデータ処理アプリケーションのある動作が予想されるように機能しない場合)は、データ処理アプリケーションに適宜変更を加え、満足の行く結果が達成されるまで試験することができる。
【0049】
本発明の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになろう。
【発明を実施するための形態】
【0051】
本明細書には、設定可能な様々なオプションに従ってデータを生成する一般的な手法を記載する。例えば、生成されるデータのデータ型をユーザが指定することができる。データ型には、例えば、ストリング、小数、整数、日付、および日時がある。生成されるデータは、生成されるデータの特性に制限を加える1つまたは複数の設定可能な内容の基準を満たすことができ、そのような基準には、例えば、生成される小数データや整数データに許容される値の範囲、生成されるストリングデータの平均ストリング長、生成されるデータで使用できる値または文字のセット、および他の特性などがある。データの生成は、既存のソースレコードの1つまたは複数のフィールドの値の変更、レコードに新しいフィールドを作成して内容を入れることによるソースレコードの増補、または全く新しいレコードの作成が含まれる可能性がある。いくつかの例では、設定可能なオプションを、ユーザインターフェースを通じてユーザが指定することができる。
【0052】
いくつかの例では、レコードのセットがデータ処理アプリケーションによって処理することができる。データ処理アプリケーションは、実行が入力レコードに依存するなど、実行が1つまたは複数の変数の値に依存する規則を実装することがある。いくつかの例では、レコードのセットにデータを生成して、データ処理アプリケーションがそのレコードのセットを処理した時に、要求される実行結果を生じさせることができる。例えば、データ処理アプリケーション内で特定の規則を実行させる、または特定の規則をより多くの回数、もしくは少ない回数実行させる、または別の要求される実行結果を生じさせるデータをレコードのセットに生成することができる。アプリケーションを実行した結果に基づき、例えば要求される実行結果をより良好に達成するためにどのようなデータを生成すべきかを決定することができる。例えば、そのデータ処理アプリケーションで処理されることが予想される生産データとほぼ同様の実際的なデータのセットを生成することができる。生成された実際的なデータのセットを使用してデータ処理アプリケーションを試験することができ、例えば、データ処理アプリケーションのすべての側面が正しく動作することを保証することができる。試験の結果に基づいて、生産環境で使用する前に適宜データ処理アプリケーションに変更を加えることができる。
【0053】
図1は、本データ生成技術を使用することができる例示的なデータ処理システム100を示す。システム100は、記憶装置やオンラインデータストリームへの接続など、1つまたは複数のデータソースを含むソース102を含み、それぞれのデータソースは、各種フォーマットのデータを記憶または提供することができる(例えばデータベーステーブル、表計算ファイル、フラットテキストファイル、メインフレームで使用される固有フォーマット等)。実行環境104は実行モジュール112を備える。実行環境104は、例えば、任意バージョンのUNIX(登録商標)オペレーティングシステムなど、適切なオペレーティングシステムの制御下で1つまたは複数の汎用コンピュータにホストすることができる。例えば、実行環境104は、コンピュータシステムが複数の中央処理処理(CPU)またはプロセッサコアを使用する構成の多ノードの並列コンピューティング環境を含む可能性があり、中央処理処理(CPU)またはプロセッサコアは、ローカルである(例えば対称型マルチ処理(SMP)コンピュータなどのマルチプロセッサシステム)か、またはローカルで分散されるか(例えばクラスタや超並列処理(MPP)システムとして結合された複数のプロセッサ)、または遠隔にあるか、または遠隔で分散されるか(例えば、ローカルエリアネットワーク(LAN)および/もしくはワイドエリアネットワーク(WAN)を介して結合された複数のプロセッサ)、またはそれらの組み合わせである。
【0054】
ソース102は記憶装置を含み、この記憶装置は、例えば実行環境104をホストするコンピュータに接続された記憶媒体(例えばハードドライブ108)など、実行環境104のローカルにあるか、または実行環境104から遠隔にあり、例えば、遠隔への接続(例えばクラウドコンピューティングインフラストラクチャにより提供される)を通じて、実行環境104をホストするコンピュータと通信する遠隔のシステム(例えばメインフレーム110)にホストされる。
【0055】
実行モジュール112は、ソース102からデータを読み出し、処理する。実行モジュール112は、データに演算などの処理を実行する1つまたは複数のデータ処理アプリケーションを含む。出力データ114は、ソース102に戻して記憶されるか、実行環境104からアクセスすることができるデータ記憶システム116に記憶されるか、またはその他の形で使用される場合がある。
【0056】
データ記憶システム116には、開発者120がデータ処理アプリケーション、ソース102、またはその両方を設定することができる開発環境118からもアクセスすることができる。開発環境118は、実装によっては、頂点(データ処理コンポーネントまたはデータセットを表す)間の有向リンク(作業要素、すなわちデータの流れを表す)で接続された頂点を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境については、「Managing Parameters for Graph−Based Applications」という名称の米国公開第2007/0011668号に詳細に記載され、同公開は参照により本明細書に組み込まれる。そのようなグラフを用いた演算を実行するためのシステムが「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」という名称の米国特許第5,966,072号に記載される。システム100に従って作成されたデータフローグラフは、グラフの構成要素で表される個々のプロセスに情報を出し入れし、プロセス間で情報を移動し、プロセスに実行の順序を定義する手段をもたらす。システム100は、利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む(例えばグラフのリンクに従う通信経路にはTCP/IPもしくはUNIX(登録商標)のドメインソケットを使用することができ、または共有メモリを使用してプロセス間でデータを渡すことができる)。
【0057】
データ生成モジュール150は、実行モジュールで処理するデータを生成することができる。データ生成モジュール150は、ソース102にあるデータなど、既存のデータに変更を加えるか、または増補することができる。例えば、データ生成モジュール150は、ソースデータレコードの1つまたは複数のフィールドの値に変更を加えたり、ソースデータレコードに1つまたは複数の新しいフィールドを作成して内容を入れることができる。データ生成モジュール150は、例えばソースデータレコードのフォーマットや指定されたフォーマットに基づいて、全く新しいデータレコードを生成することもできる。
【0058】
図2を参照すると、データ生成モジュール150は、ターゲット24に記憶されるデータを生成するデータ生成エンジン20を含む。いくつかの例では、データ生成エンジン20は、データソース22のデータに基づいてデータを生成することができる。いくつかの例では、データ生成エンジン20は、新規に、すなわちソースデータを使用せずにデータを生成することができる。データソース22は、ファイル、データベース、パラメータセット、別のデータソース等である。データソース22は、それぞれが1つまたは複数のデータフィールドを持つ1つまたは複数のレコードを含むことができる。例えば、例示的なデータソースは、小売店の顧客の顧客レコードを記憶したデータベースである(本明細書では「顧客データベース」と呼ぶ)。データベースの各レコードは個々の顧客を表す。各レコードは複数のフィールドを有することができる。データソース22は、フィールドの数、各フィールドのデータの型(例えばストリング、整数、小数、日付、または日時)、および各フィールドのデータの特性(例えば許可される値の範囲、最大許可値、許可される文字のリスト、または他の制限)など、レコードのフォーマットを指定するレコードフォーマットを有することができる。いくつかの例では、新規にデータが生成され、データソースは提供されない。
【0059】
例えば、
図3Aを参照すると、例示的なソースファイル200の一部は6つのレコード202を含み、各レコードは、cust_IDフィールド204、nameフィールド206、cust_ageフィールド208、およびstateフィールド210、のフィールドを持つ。
【0060】
再度
図2を参照すると、いくつかの例では、データソース22はユーザ26によって特定することができる。例えば、データ生成モジュール150のユーザインターフェースエンジン28が、例えばパーソナルコンピュータやモバイルコンピューティング装置などのコンピューティング装置32のディスプレイインターフェースで、ユーザインターフェース30をユーザ26に表示させることができる。ユーザ26は、ユーザインターフェース30を通じてデータソース22を特定することができる。生成されたデータは、ファイル、データベース、パラメータセット、または別のデータ構造などのターゲット24に記憶することができる。いくつかの例では、ターゲットファイル24は、例えばユーザインターフェース30を通じてユーザ26によって特定することができる。いくつかの例では、ターゲットのレコードフォーマットがソースのレコードフォーマットと一致する場合がある。すなわち、ターゲットに指定されるレコードフォーマットは、ソースにある既存レコードのレコードフォーマットと同じである場合がある。いくつかの例では、ターゲットのレコードフォーマットがソースのレコードフォーマットと異なり、ソースのレコードフォーマットの一部またはすべてをターゲットにマッピングすることができる。例えば、ソースの1つまたは複数のフィールドのフォーマットを、ターゲットのレコードフォーマットに含めることができる。
【0061】
データ生成モジュール150は、例えばデータベース36、ファイル、または別のデータ構造に記憶された構成データ34に基づいて、ターゲット24のデータを生成することができる。構成データ34は、ターゲット24に使用するデータ生成手法、ターゲット24の内容生成モード、ターゲット24に生成するデータのデータ型、ターゲットに生成するデータの内容の基準、およびターゲット24に生成するデータについての他の構成情報を指定することができる。これらの構成データ34については下記で詳細に説明する。いくつかの例では、ターゲット24のデータを生成するために使用される構成データ34の一部またはすべてが、例えばユーザインターフェース30を通じてユーザ26によって指定される場合がある。いくつかの例では、構成データ34の一部またはすべてが、例えばデータソース22の分析や要求されるターゲットの属性についての情報に基づいて、構成エンジン39によって決定される場合もある。
【0062】
いくつかの例では、データ生成エンジン20は、構成データ34に従って、データソース22にある既存のソースレコードのフィールドの1つまたは複数の値を変更することにより、ターゲット24のデータを生成することができる。変更されたレコードはターゲット24に記憶することができる。いくつかの例では、所与のフィールドに対応するすべての値を変更する場合もある。例えば、すべてのレコードにわたる任意のフィールドの値の分布が、構成データ34で示される目標の分布と一致するように、各レコードの当該フィールドに値を割り当てることができる。例えば、その分布は、ユーザ26によって指定される場合も、構成エンジン39によって決定される場合もある。いくつかの例では、構成データ34で示される指定の基準を満たさない値だけを変更するなど、所与のフィールドに対応するすべての値よりも少ない値を変更する場合もある。例えば、任意のフィールドについて、そのフィールドに許可される特定範囲の値の外側にある対応する値が変更される場合がある。
【0063】
例えば、
図3Bを参照すると、例示的なターゲットファイル220の一部は、ソースファイル200に基づいて生成されたレコード222を含んでいる。この例では、構成データ34(
図2)は、cust_ageフィールド208は40の最大値を持ち得ることを示している。構成データ34で指定されるこの基準を満たすために、cust_ageフィールドの最大値が40になるように、ソースファイル200のcust_ageフィールド208の値がデータ生成エンジン20によって変更されている。すなわち、特定のレコード222aのcust_ageフィールド208の値が、45(ソースファイル200)から25(ターゲットファイル220)に変更されている。生成されたターゲットファイルのレコード222の他のフィールドの値は、ソースレコード202の値に対応する。
【0064】
再度
図2を参照すると、いくつかの例では、データ生成エンジン20は、構成データ34に従ってデータソース22の既存のソースレコードを1つまたは複数の新しいフィールドで増補することによりデータを生成することができる。増補されたレコード(すなわち1つまたは複数の新しいフィールドを持つレコード)はターゲット24に記憶することができる。構成データ34は、新しいフィールドの数、新しいフィールドのデータ型と値、および新しいフィールドの他の特性を決定する命令を提供することができる。いくつかの例では、構成データ34は、新しいフィールドの値を、データソース22のソースデータにある既存フィールドに対応するデータに基づいて生成することを指定することができる。いくつかの例では、構成データ34は、既存のソースデータではなく例えば指定された特性(例えば構成データ34で指定される特性)に従って、新規に新しいフィールドの値を生成することを指定する場合がある。
【0065】
例えば、
図3Cを参照すると、例示的なターゲットファイル230の一部は、ソースファイル200に基づいて生成されたレコード232を含んでいる。この例では、構成データ34(
図2)は、cust_ageフィールド208の値を5つの利用可能なage_rangeの値域(bucket)の1つに分類することによって生成された値を持つ新しいage_rangeフィールド234を作成するよう指定する。構成データ34はさらに、ソースファイル200にあるデータとの関係は一切なしに、指定された最大値および最小値を条件とする値を使用して新しいcust_incomeフィールド236を作成するよう指定する。
【0066】
再度
図2を参照すると、いくつかの例では、データ生成エンジンは、構成データ34に従って、データソース22の既存のソースレコードを1つまたは複数の新しいレコードで増補することによりデータを生成することができる。増補されたレコード(すなわち既存のソースレコードと新しいレコードの両方)はターゲット24に記憶することができる。新しいレコードは、ソースレコードと同じレコードフォーマットを持つことができる。構成データ34は、新しいレコードの数、新しいレコードのフィールドの値、および新しいレコードの他の特性を決定する命令を提供することができる。いくつかの例では、構成データ34は、新しいレコードの1つまたは複数のフィールドの値を、データソース22の既存のソースデータには一切基づかずに、例えば指定された特性に従って新規に生成するように指定する。いくつかの例では、構成データ34は、新しいレコードの1つまたは複数のフィールドの値を、構成データ34で指定される概要を満たすように生成することを指定する。例えば、概要は、すべてのレコードの特定のフィールドの値が平均や分布などの特性を満たすことを指定する。例えば、顧客データベースのソースでは、すべてのレコードにわたるcust_ageフィールドの値が、構成データ34で指定される特定の分布を満たすように新しいレコードを生成することができる。
【0067】
例えば、
図3Dを参照すると、例示的なターゲットファイル240の一部は、ソースファイル200に基づいて生成されたレコード202、242を含んでいる。この例では、構成データ34(
図2)は、すべてのレコードにわたるcust_ageフィールド208の値が、当該フィールドの「60」の最大値を条件として40〜45の間の平均値を持つように、4つの新しいレコード242を作成することを指定する。この例では、構成データ34は、他のフィールドそれぞれの値は、例えばそのフィールドに指定される特性に従って、無作為に生成することを指定する。元のソースレコード202もターゲットファイル240に含められる。
【0068】
いくつかの例では、データ生成エンジン20は、構成データ34に従って2つ以上の手法をデータ生成に適用することができる。例えば、データ生成エンジン20は、1つまたは複数のフィールドの値に変更を加えることができる手法、ソースレコードを1つまたは複数の新しいフィールドで増補することができる手法、およびソースレコードを1つまたは複数の新しいレコードで増補することができる手法などの手法の組み合わせを適用することができる。
【0069】
いくつかの例では、ファイル、データベース、またはパラメータセットなどの生成されたレコードだけがターゲットに記憶され、ソースレコード(存在する場合)はターゲットに記憶されない。いくつかの例では、ソースが例えばユーザによって指定され、生成されるレコードは、ソースのレコードフォーマット、ソースの1つまたは複数のフィールドの概要、またはソースの別の特性に基づいて、データ生成エンジン20モジュールによって生成されることがある。いくつかの例では、ソースは指定されず、レコードは、構成データ34に従って、新規にデータ生成エンジン20によって自動的に生成される。例えば、1つまたは複数のフィールドのレコードフォーマットおよび特性が、構成データ34で指定される場合がある。
【0070】
いくつかの例では、ソースのレコードフォーマットをターゲットにマッピングすることができる。例えば、構成データ34は、ソースのレコードフォーマットをターゲットで採用することを指示する場合がある。例えば、構成データ34に従ってソースのレコードフォーマットをターゲットに適用することができ、ソースのレコードフォーマットに従って、データ生成エンジン20で新規に新しいレコードを生成することができる。いくつかの例では、複数のソースからデータが生成されることがあり、各ソースのレコードフォーマットを、部分的または完全にターゲットにマッピングすることができる。例えば、各ソースにある対象フィールドのフォーマットをターゲットにマッピングすることができる。
【0071】
いくつかの例では、ソースのレコードフォーマットをターゲットにマッピングし、変更を加えることもある。例えば、構成データ34は、フィールドの名前をソースからターゲットで変更する、またはソースにあるフィールドを削除することを指定する場合がある。
【0072】
図4を参照すると、データ生成モジュール150は、ユーザがデータソースを特定できるソースウィンドウ300を提供するユーザインターフェース(例えば
図2のユーザインターフェース30)を提供する。ソースウィンドウ300はソースタイプメニュー302を含み、このメニューでユーザはファイルやデータベースなどのソースのタイプを指定することができる。
図4の例では、ソースはファイルである。ソースウィンドウ300で、ユーザは、ソースまでのパス(例えばファイルソースまでのパスや、データベースソースの構成ファイルまでのパス)などのソースの識別子304、およびソースレコードのレコードフォーマットの識別子(例えばレコードフォーマットファイルまでのパス)を指定することができる。いくつかの例では、ソースがデータベースである場合、ユーザは、データベースからソースデータを取得するために使用されるクエリ(例えばSQLクエリ)を指定することができる。ソースウィンドウ300は、新しいレコード306を生成するかどうか、および生成する場合は生成する新しいレコードの数をユーザが指示できるオプションを提供する。ソースウィンドウ300で、ユーザはソースに関する他の情報308を見ることができる。例えば、ユーザは、ソースのレコードフォーマット、ソースデータ、またはソースデータの概要を見ることができる。いくつかの例では、データフローグラフなどの実行可能アプリケーションを使用してソースデータを生成することができる。
【0073】
図5Aおよび
図5Bを参照すると、いくつかの例ではユーザインターフェース30のソースウィンドウ300で、ユーザは、ソースを指定せずに、新規にデータを生成することを指定することができる。詳細には、ソースウィンドウ300で、ユーザは、ソースタイプメニュー302で、生成されるデータをソースタイプとして選択することができる。ユーザが生成されるデータをソースタイプとして選択すると、データ生成ウィンドウ400がユーザインターフェース30に表示される。データ生成ウィンドウ400で、ユーザは、データを生成するために使用する方法402(下記で説明する)を指示し、生成する新しいレコードの数404を指示することができる。いくつかの例では、ユーザがデフォルトの指定を変更しない限り、ターゲットのレコードフォーマットで指定されるデフォルトのデータ生成モードやデフォルトの値などのデフォルトのデータ生成特性を使用して、新規にデータを生成することができる。例えば、フィールド生成指定変更のオプション406で、ユーザは、ターゲットの1つまたは複数のフィールドについてデータ生成特性を指定することができる。いくつかの例では、規則のオプション408で、ユーザは、個々のフィールドに、より複雑なデータ生成規則を作成することができる。
【0074】
図6を参照すると、ユーザインターフェース30は、ユーザがターゲットを特定することができるターゲットウィンドウ500を提供する。ターゲットウィンドウ500のターゲットタイプメニュー502で、ユーザはファイルやデータベースなどターゲットの種類を指定することができる。ターゲットウィンドウ500で、ユーザは、ターゲットの識別子504(例えばターゲットファイルまでのパスや、ターゲットデータベースの構成ファイルまでのパス)を指定することもできる。いくつかの例では、例えばターゲットウィンドウ500を通じて異なるレコードフォーマットが指定されない限り、ソースのレコードフォーマットがターゲットのレコードフォーマットとして使用される。例えば、ソースを使用せずに新規にデータを生成する場合、ターゲットのレコードフォーマットを指定するレコードフォーマットファイルを、ターゲットウィンドウを通じて特定することができる。いくつかの例では、データフローグラフなどの実行可能アプリケーションを使用して、生成されたデータをターゲットに書き込むことができる。ターゲットウィンドウ500は、ソースとターゲットが特定されると、データ生成のための各種の設定可能なオプションをユーザが利用できるようにする実行ボタン506を備える。ターゲットウィンドウ500で、ユーザはソースに関する他の情報508も見ることができる。例えば、ユーザは、ターゲットデータセットを見る、ターゲットデータセットの概要を見る、またはターゲットのレコードフォーマットを見ることができる。いくつかの例では、ターゲットウィンドウは、ソースから読み出されたレコードおよび/またはターゲットに書き込まれたレコードの数、生成されたレコードの数、他の統計など、ターゲットのデータの生成に関する統計データへのアクセスを提供する。
【0075】
データ生成エンジン20は、データを生成するいくつかの手法を提供する。ユーザインターフェース30のデータ生成ウィンドウで、ユーザは所望のデータ生成手法を指定することができる。例えば、フィールドの変更、フィールドの作成、レコードの作成、既存のソース、および親データセットの手法を使用してデータを生成することができる。
【0076】
フィールドの変更:フィールド変更の手法では、ターゲットデータレコードがソースデータレコードと同じフォーマットを持つが、内容は異なるように、ソースレコードの1つまたは複数のフィールドに対応する値に変更を加えることができる。いくつかの例では、所与のフィールドに対応するすべての値が変更される場合もある。例えば、すべてのレコードにわたる所与のフィールドの値の分布が目標分布と一致するように値を割り当てることができる。いくつかの例では、指定された基準を満たさない値だけなど、所与のフィールドに対応するすべての値よりも少ない値を変更する場合もある。例えば、特定のフィールドに許可される特定範囲の値の外側にある値を変更することができる。
【0077】
フィールドの作成:フィールド作成の手法では、既存のレコードに1つまたは複数の新しいフィールドを作成することができる。いくつかの例では、ソースデータ中の既存フィールドについてのデータに基づいて、新しいフィールドの値を生成することができる。いくつかの例では、既存のソースデータには一切基づかずに、例えば指定された特性に従って、新しいフィールドの値を新規に生成することができる。
【0078】
レコードの作成:レコード作成の手法では、新しいレコードを生成することができる。新しいレコードを生成する場合、生成するレコードの数を指定することができる(例えば
図5B)。いくつかの例では、新しいレコードのレコードフォーマットを指定することができる。例えば、ターゲットに既存のソースレコードと新たに生成されたレコードの両方を入れる場合は、新しいレコードのレコードフォーマットは、ソースレコードのレコードフォーマットと同じにすることができる。新たに生成されたレコードだけをターゲットに入れる場合は、ユーザは、フィールドの数、各フィールドのデータの型、各フィールドのデータの特性(例えば最大値、最小値、許可される文字のセット、他の特性)、レコードフォーマットの他の特徴など、生成されるレコードに適用するレコードフォーマットを指定することができる。
【0079】
既存データセット:既存データセットの手法では、新たに作成される子データセットにデータを生成する。例えば、既存の顧客データセットに基づいて、トランザクションレコードを含む新しいデータセットを生成することができる。既存データセットの手法では、指定された数の新しいレコードが、既存のソースレコードそれぞれに生成される。例えば、
図7を参照すると、既存データセットウィンドウ600で、ユーザは、ソースデータセットのパス602またはデータ操作言語(DML)604、既存のソースデータセットにあるデータレコードごとに生成するターゲットレコードの数606、および、ターゲットにレコードを生成する際に使用されないソースレコードの割合を指定することができる。いくつかの例では、補助的なソースが、ターゲットレコードの特定のフィールドに入れるために使用するデータを保持する場合があるが、ソースまたはターゲットいずれかのレコードフォーマットと一致しないレコードフォーマットを持つ可能性がある。そのような場合、補助的なソースにある1つまたは複数の対象フィールドをターゲットレコードにマッピングすることができる。
【0080】
サブジェクト領域の手法:サブジェクト領域の手法では、既存のソースデータセットをサブジェクト領域の階層内で親データセットとすることができ、データの生成は、その親データセットに関係する子データセットの作成を含む場合がある。例えば、親データセット(すなわちソース)が顧客レコードのセットで、子データセット(すなわちターゲット)が顧客ごとの1つまたは複数のトランザクションレコードのセットである場合がある。子データセットのレコードを親セットの対応するレコードに結び付けるキーフィールドを指定することができ、親データレコードの1つまたは複数のキーフィールドを、生成された子データレコードの対応するフィールドにマッピングする。例えば、cust_IDフィールドを、顧客レコードとトランザクションレコードとを結び付けるキーフィールドとすることができる。キーフィールドごとに生成する子レコードの数を指定することができる。いくつかの例では、子レコードを生成する際に使用されない親レコードの割合を指定することができる。いくつかの例では、子レコードのレコードフォーマットを指定することができる。
【0081】
いくつかの例では、フォーマットの指定、内容の基準、またはその両方に従ってデータを生成することができる。フォーマットの指定は、生成されるデータのフォーマットの指定である。例えば、フォーマットの指定で、生成されるデータのデータ型(例えばストリング、小数、整数、日付、または日時)を指示することができる。内容の基準は、生成されるデータの特性を限定する基準である。内容の基準の例には、例えば、許可される値の範囲、最大許可値、許可される文字のリスト、または他の内容の基準が含まれる。いくつかの例では、フォーマットの指定および内容の基準が、ターゲットレコードのレコードフォーマットで指定される。いくつかの例では、ユーザインターフェース30が、ユーザがフィールドのフォーマットの指定や内容の基準などのフィールドの特性を指定できるフィールドウィンドウを提供することができる。
【0082】
図8を参照すると、ユーザインターフェースのレコードフォーマットウィンドウ700で、ユーザは、ターゲットの1つまたは複数のフィールドについてのデータ型およびデータ特性を含むターゲットレコードフォーマットを編集することができる。レコードフォーマットウィンドウ700は、ターゲットのレコードフォーマットにあるフィールドのリスト702を表示する。リスト702は、各フィールドのデータ型も示す。いくつかの例では、ターゲットのレコードフォーマットにあるフィールドが、データソースのレコードフォーマットにも出現する。ターゲットレコードフォーマットとソースレコードフォーマットの両方に出現するそれらのフィールドは、リスト702中で例えばアスタリスク(すなわち**)で印を付けることができる。例えば、
図8の例では、last_transactionおよびcustomer_sinceのフィールドは、ターゲットレコードフォーマットとソースレコードフォーマットの両方に出現する。印が付けられていないフィールドは、ターゲットレコードフォーマットにのみ出現する。いくつかの例では、ソースレコードフォーマットに出現するがターゲットレコードフォーマットには出現しないフィールドはリスト702に表示されない。
【0083】
レコードフォーマットウィンドウ700で、ユーザは、例えば所望のフィールドの名前をクリック、タップ、またはドラッグすることにより、データ生成特性を指定するターゲットレコードフォーマットの1つまたは複数のフィールドを選択することができる。ターゲットレコードフォーマットの選択されたフィールドのリスト704が表示される。すなわち、リスト704にあるフィールドは、ユーザがデータ生成特性を指定しようとするターゲットレコードフォーマットのそれらのフィールドである。いくつかの例では、例えばユーザがターゲットレコードフォーマットのフィールドの一部だけにデータ生成特性を指定したい場合には、リスト704は、ターゲットレコードフォーマットにあるすべてのフィールドのリスト702のサブセットである場合もある。例えば、
図8の例では、custid、fname、Iname、およびbuilding_numのフィールドが選択されている。
【0084】
ユーザインターフェース30で、ユーザは、リスト704に表示された選択フィールドそれぞれのレコードフォーマットを編集することができる。例えば、選択されたフィールドごとに、ユーザは、そのフィールドのデータ型の選定、そのフィールドへの内容生成モードの割り当て、およびそのフィールドのデータ特性の指定、の任意の組み合わせを行うことができる。ユーザインターフェースは、選択されたフィールドごとに、データ型ウィンドウ、内容生成ウィンドウ、およびデータ特性ウィンドウの1つまたは複数を順次表示することができ、それにより、ユーザは選択されたフィールドそれぞれに各種の特徴を指定することができる。
【0085】
ユーザインターフェース30で、ユーザはフィールドのデータ型を選定することができる。データ型ウィンドウは、ユーザがリスト704から特定のフィールドを選択するのに応答してユーザインターフェース30に表示することができ、それによりユーザはそのフィールドにデータ型を選定することができる。ユーザは、ストリング、小数、整数、日付、日時(すなわち日付と時間)など、データ生成モジュール150で対応可能な任意のデータ型を選定することができる。フィールドごとに1つのデータ型を選定することができる。いくつかの例では、フィールドにデータ型が選定されない場合は、そのフィールドのレコードフォーマットで指示されるデータ型が保持される。例えば、
図8の例では、各フィールドのレコードフォーマットで指示されるそのフィールドのデータ型が、フィールド名の隣に括弧に入れて表示される。ターゲットレコードフォーマットの各フィールドに選定されたデータ型は構成データ34として記憶することができる。
【0086】
ユーザインターフェース30で、ユーザは選択されたフィールドの1つまたは複数に内容生成モードを割り当てることができる。ユーザがリスト704から特定のフィールドを選択するのに応答して、ユーザインターフェース30に内容生成ウィンドウが表示され、ユーザはそのフィールドに内容生成モードを割り当てられることができる。フィールドの内容生成モードは、そのフィールドにデータ生成エンジン20によってデータが生成される方式を指示する。例えば、例示的な内容生成モードには、ユニークモード、ランダムモード、デフォルトモード、およびリストモードがある。ユニークモードでは、各レコードの選択されたフィールドに一意の値を生成することができる。例えば、一意の小数値、ストリング値、または整数値の昇順のセットを生成することができる。「19000101」や別の日付のベースなど、デフォルトの日付または指定された日付のベースから、日に基づく昇順で日付値を生成することができる。現在の日付および時刻など、デフォルトの日時または指定された日時のベースから、分に基づく昇順で日時値を生成することができる。ランダムモードでは、各レコードの選択されたフィールドにランダムな値を生成することができる。デフォルトモードでは、ターゲットのレコードフォーマットで指定されるデフォルトの特性またはデフォルトの値を使用して値を生成することができる。例えば、いくつかの例では、デフォルトのデータ生成モードをランダムモードとし、デフォルトの値範囲および特性を各データ型に適用することができる。リストモードでは、許可値のリストから値が選択される。いくつかの例では、あるフィールドに内容生成モードが割り当てられない場合は、デフォルトモードを使用してそのフィールドのデータを生成するか、デフォルト値(例えばターゲットレコードのレコードフォーマットで指定される)をそのフィールドの値として使用することができる。いくつかの例では、1つまたは複数のフィールドの内容生成モードが、ターゲットレコードのレコードフォーマットで指定される場合がある。ターゲットレコードフォーマットの各フィールドの内容生成モードは、構成データ34として記憶することができる。
【0087】
ユニークモード、ランダムモード、またはデフォルトモードのデータ生成をフィールドに割り当てる場合、ユーザインターフェース30で、ユーザは選択されたフィールドの1つまたは複数にデータ特性を指定することができる。データ特性は、そのフィールドのデータ型に依存する可能性があり、そのフィールドに生成できる許容値を制限することができる。例えば、小数フィールドや整数フィールドなどの数値フィールドのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたるそのフィールドの平均値を指示する場合がある。下記で説明するように、他のデータ特性も適用することができる。いくつかの例では、フィールドエラー率(すなわちレコードが誤りを含んでいる数または割合)も1つまたは複数のフィールドに指定することができる。特定のフィールドにデータ特性を指定することができるように、ユーザがリスト704からそのフィールドを選択するのに応答して、そのフィールドのデータ型に固有の特性ウィンドウがユーザインターフェース30に表示される。例えば、ストリング特性ウィンドウ、小数特性ウィンドウ、整数特性ウィンドウ、日付特性ウィンドウ、または日時特性ウィンドウ、または別のデータ型に対応するウィンドウをユーザインターフェース30に表示することができる。ターゲットレコードフォーマットの各フィールドのデータ特性は構成データ34として記憶することができる。
【0088】
図9を参照すると、ストリング特性ウィンドウ800で、ユーザはストリングフィールドのデータ特性を指定することができる。
図9の例では、データ特性は、特定のストリングフィールドの平均ストリング長802、最大ストリング長804、および許容文字のセット806を含む。ユーザは、その特定のストリングフィールドにNULL値808の割合も指定することができる。いくつかの例では、他のデータ特性も指定することができる。いくつかの例では、ユーザがストリングフィールドに対してデータ特性の1つまたは複数を指定しない場合には、データ特性のデフォルト値を適用することができる。例えば、デフォルトの平均ストリング長802が「8」、デフォルトの最大ストリング長804が「16」であり、デフォルトの許容文字のセット806は文字{a−z,A−Z,0−9,およびスペース}を含み、NULL値のデフォルトの割合808はゼロとすることができる。
【0089】
特定の一例では、ユーザが、特定のフィールドについて、平均ストリング長802を4文字に、最大ストリング長804を8文字に、許可される文字のセット806を{a−z,A−Z}に、NULL値の割合808をゼロに指定している。この例で、ユーザがその特定のフィールドにランダムモードのデータ生成を割り当てた場合には、許容文字のセットから、指定された平均長および最大長を条件として、レコードごとにそのフィールドにランダムなストリングが生成される。ユーザがその特定のフィールドにユニークモードのデータ生成を割り当てた場合、レコードごとにそのフィールドに一意のストリングが生成される(すなわち、その特定のフィールドに2つのレコードが同じ生成ストリングを持つことはない)。
【0090】
図10を参照すると、小数特性ウィンドウ900で、ユーザは小数フィールドのデータ特性を指定することができる。
図10の例では、データ特性は、特定の小数フィールドについての許可される値の範囲902およびNULL値の割合904を含む。いくつかの例では、許可される最大の小数位数、生成されるすべてのレコードの小数フィールドの平均値、または他の特性などの他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の1つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの範囲902は0〜1000とし、NULL値のデフォルトの割合904は0とすることができる。
【0091】
特定の一例では、ユーザが特定のフィールドに対して、許可される値の範囲902を0〜10、NULL値の割合904を10%と指定している。この例では、ユーザがこの特定のフィールドにランダムモードのデータ生成を割り当てた場合には、許可される値の範囲902に該当するランダムな小数が各レコードのそのフィールドに生成される。レコードの10%にNULL値が与えられる。ユーザがこの特定のフィールドにユニークモードのデータ生成を割り当てた場合には、許可される値の範囲902に該当する一意の小数が各レコードのそのフィールドに生成される(すなわち、その特定のフィールドに2つのレコードが同じ値を持つことはない)。
【0092】
図11を参照すると、整数特性ウィンドウ180でユーザは整数フィールドのデータ特性を指定することができる。
図11の例では、データ特性は許可される値の範囲182を含む。いくつかの例では、特定の整数フィールドのNULL値の割合184や、生成されるすべてのレコードの整数フィールドの平均値など、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の1つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの範囲182は0〜127とすることができる。
【0093】
図12を参照すると、日付特性ウィンドウ190でユーザは日付フィールドのデータ特性を指定することができる。
図12の例では、データ特性は、年、月、または日などの日付範囲の単位192を含む。データ特性は日付のベース194も含み、これは、日付範囲が計算される際の基準として使用する日付(例えば「YYYYMMDD」と表記される)であり、「YYYY」は年を意味し、「MM」は月を意味し、「DD」は日を意味する。データ特性は、特定の日付フィールドについて、日付のベース194を基準とする許可される日付の範囲196、およびNULL値または空白値の割合198も含む。いくつかの例では、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の1つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの日付範囲の単位192を年とし、デフォルトの日付ベース194を今日にし、許可される日付の範囲196を−7〜0年(デフォルトの日付ベースを基準として)、NULL値のデフォルトの割合198を1%とすることができる。
【0094】
特定の一例では、ユーザが、特定のフィールドについて、日付範囲の単位192を日とし、日付のベース194を2013年1月1日とし、許可される日付の範囲196を365(すなわち2013年1月1日の日付のベース以後365日)とし、NULL値の割合198をゼロと指定している。この例では、ユーザがこの特定のフィールドにランダムモードのデータ生成を割り当てた場合は、2013年1月1日〜2014年1月1日の間で無作為に選択された日付が各レコードのそのフィールドに割り当てられる。ユーザがこの特定のフィールドにユニークモードのデータ生成を割り当てた場合は、2013年1月1日〜2014年1月1日の間の一意の日付が各レコードのそのフィールドに割り当てられる(すなわち、その特定のフィールドに2つのレコードが同じ日付を持つことはない)。
【0095】
図13を参照すると、日時特性ウィンドウ250で、ユーザは日時フィールドのデータ特性を指定することができる。
図13の例では、データ特性は、年、月、日など、日時範囲の単位252を含む。データ特性は日時ベース254も含み、これは、日時範囲を計算する際の基準として使用する日付および時間であり(例えば「YYYYMMDD HH24MISS.NNN」と表記される)、「YYYY」は年を意味し、「MM」は月を意味し、「DD」は日を意味し、「HH24」は24時間制の計時における時間を意味し、「MI」は分を意味し、「SS」は秒を意味し、「NNN」は1000分の1秒を意味する。データ特性は、特定の日時フィールドについての日時ベース254を基準とした許可される日時の範囲256およびNULL値の割合258も含む。いくつかの例では、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の1つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの日時範囲の単位252は日とし、デフォルトの日時ベース254は現在とし、許可される日時のデフォルトの範囲256は−7〜0日とし、NULL値のデフォルトの割合258は0とすることができる。
【0096】
いくつかの例では、特性ウィンドウの1つまたは複数(例えばストリング特性ウィンドウ800、小数特性ウィンドウ900、整数特性ウィンドウ180、日付特性ウィンドウ190、または日時特性ウィンドウ250)で、ユーザは例えば当該フィールドのフィールドエラー率の値を選択または指定することにより、フィールドのデフォルトエラー率の指定を変更することができる。例えば、ユーザは次のエラー率、すなわち、誤りなし、2つのフィールドにつき1つのフィールドに誤りがある、10個のフィールドにつき1つのフィールド、100個のフィールドにつき1つのフィールド、1000個のフィールドにつき1つのフィールド、10000個のフィールドにつき1つのフィールド、および100000個のフィールドにつき1つのフィールド、から選択することができる。いくつかの例では、ユーザは割合のエラー率を選択または指定することができる。
【0097】
いくつかの例では、ユーザインターフェース30は、ユーザが1つまたは複数のデータ型についてデフォルトのデータ特性の指定を変更する機構を提供する。例えば、ユーザは、すべてのストリングデータについて平均ストリング長の指定を変更することができる。ユーザが特定のデータ型についてデフォルトの特性の指定を変更すると、その指定変更後の特性は、ユーザがデータ特性を指定しない、そのデータ型をとるすべてのデータ生成に適用される。
【0098】
リストモードのデータ生成がフィールドに割り当てられた場合、そのフィールドに許可される値のリストを提供できるリストウィンドウをユーザインターフェース30に表示することができる。例えば、リストモードのデータ生成をbuilding_numフィールドに割り当てた場合、ユーザは、building_numフィールドの値として使用できるビルディング番号のリスト(例えば{10,20,30,40,50})を提供することができる。データ生成エンジン150によりbuilding_numフィールドのデータが生成される時に、各レコードのフィールドの値は、そのビルディング番号のリストから無作為に選択することができる。いくつかの例では、他の制約を適用することができる。例えば、リストの各項目を等しい回数ずつ選択するという制約を条件として、フィールドの値をリストから選択することができる。
【0099】
いくつかの例では、データ生成やソースからターゲットフォーマットへのマッピングに高度な規則を作成することができる。例えば、高度な規則は、あるフィールドの値を別のフィールドにマッピングさせる規則、あるフィールドの値を別のフィールドの値の計算に使用させる規則、ソースの2つ以上のフィールドを使用してターゲットの1つのフィールドを作成させる規則を含むことができる。いくつかの例では、高度な規則は、データソースのフィールドの値を、ターゲットのフィールドに生成される値に関係付けることができる。いくつかの例では、高度な規則は、ターゲットの第1のフィールドの値を、ターゲットの第2のフィールドに生成される値に関係付けることができる。ユーザインターフェース30は、
図14A〜
図14C、
図15A〜
図15C、および
図16に示す設定画面や規則エディタなど、ユーザが1つまたは複数のターゲットフィールドのデータ生成に高度な規則を生成することができる規則エディタ機能を提供することができる。例えば、ユーザインターフェース30は、ユーザがフィールドに関連する規則を指定できる規則ウィンドウを提供することができ、その規則を使用してそのフィールドに入れるデータを生成することができる。ユーザインターフェース30は、ユーザが規則を定義できる規則エディタを提供することができる。
【0100】
例えば、
図14A〜
図14Cを参照すると、ユーザインターフェース30の規則エディタ機能で、ユーザは、あるフィールドの値を別のフィールドにマッピングさせる高度な規則を作成することができる。この例では、ユーザは、state_cdフィールドとstate_nameフィールド両方の生成を可能にする規則を作成しようとしており、state_cdフィールドの値は、それに対応する正式な州名を値とするstate_nameフィールドに基づいてニューイングランド地域の州の2文字の省略形のリストから選択される。この規則を作成するために、ユーザは、state_cdフィールドの構成ウィンドウ350(
図14A)を通じてstate_cdフィールドにリスト生成モードを割り当て、リスト352(この場合は、ニューイングランド地域の州の2文字の省略形のリスト:MA、CT、RI、VT、ME、NH)を指定することができ、リスト352からstate_cdフィールドの値を選択することができる。規則ウィンドウ354(
図14B)で、ユーザは、state_nameフィールド356を、state_nameフィールド356に内容を入れるために使用できる規則「Compute state_name」358に関連付けるよう指示することができる。ユーザは、規則エディタ360(
図14C)でstate_nameフィールドに「Compute state_name」の規則を定義することができる。この例では、「Compute state_name」の規則は、state_cdフィールドの値ごとにstate_nameフィールドに割り当てられる値を指定する。
【0101】
例えば、
図15A〜
図15Cを参照すると、ユーザインターフェース30の規則エディタ機能で、ユーザは、ターゲットの第1のフィールドに対応する値を使用してターゲットの第2のフィールドの値を計算させる高度な規則を作成することができる。この例では、ユーザは、incomeフィールドの値を使用してtax_rateフィールドの値を計算する規則を作成したい。この規則を作成するために、ユーザはincomeフィールドの内容生成ウィンドウ450(
図15A)を通じて、incomeフィールドにランダム生成モードを割り当て、incomeフィールドに許可される値の範囲や空白値の割合などのデータ特性452を指定することができる。規則ウィンドウ454(
図15B)で、ユーザは、tax_rateフィールド456を、tax_rateフィールド456にデータを入れるために使用できる規則「Compute tax_rate」458に関連付けるよう指示することができる。ユーザは、規則エディタ460(
図15C)でtax_rateフィールドの規則を定義することができる。この例では、「Compute tax_rate」の規則458が、incomeフィールドの値ごとにtax_rateフィールドに割り当てられる値を指定する。「Compute tax_rate」の規則は、例えばincomeフィールドが空白であるか、NULLであるか、または誤りがある場合にtax_rateフィールドに割り当てるデフォルトの値462も指定する。
【0102】
例えば、
図16を参照すると、ユーザインターフェース30の規則エディタ機能で、ユーザは、複数のソースフィールドを1つのターゲットフィールドにマッピングさせる高度な規則を作成することができる。いくつかの例では、ソースフィールドの1つまたは複数のレコードフォーマットが、ターゲットフィールドのレコードフォーマットと異なる場合がある。この例では、ユーザは、fullnameフィールドのデータを生成する際にfirstnameフィールドとlastnameフィールド両方の値を使用する式を指定する規則を作成したい。その規則を作成するために、規則ウィンドウ550で、ユーザは、ソースにあるfirstnameフィールド556と、スペースと、ソースにあるlastnameフィールド558との組み合わせ(「firstname」+「 」+「lastname」)として、fullnameフィールド554の規則552を定義することができる。
【0103】
フォーマットの指定、1つまたは複数の内容基準、データ生成モード、および高度な規則の1つまたは複数に基づいて、データを生成することができる。例えば、ソースレコードのデータに変更を加える、1つまたは複数の新しいフィールドを作成してデータを入れる、かつ/または、新しいレコードを作成してデータを入れることができる。
【0104】
いくつかの例では、サブジェクト領域を作成することができる。サブジェクト領域は、少なくとも1つのフィールドでキー関係を通じて階層中で互いと関係するデータセットの集まりである。例えば、既存の親データセットが顧客レコードのセットで、子データセットが、既存の顧客それぞれに生成された1つまたは複数のトランザクションレコードのセットである。
【0105】
図17Aを参照すると、一例では、結合ウィンドウ70で、ユーザは、生成される子データセットとのキーフィールドとして使用する既存の親データセットの1つまたは複数のフィールドを指定することができる。
図17Aの例では、既存の親データセットは顧客データセットであり、custidを結合キーフィールドとしてトランザクションデータセットが子として生成される。
図17Bを参照すると、結合ウィンドウ75で、ユーザは、子データセットに1つまたは複数の結合キーフィールドを指定することができる。この例では、枠76で、custidフィールドが親データセットから結合キーフィールドとして既に指定されている。枠78で、子データセットから結合キーフィールドとしてフィールドを指定することができる。いくつかの例では、対応する子レコードを持たない親レコードや対応する親レコードを持たない子レコードなどの非結合レコードをサブジェクト領域のデータセットから除外することができる。いくつかの例では、非結合レコードであってもサブジェクト領域のデータセットに含めることができる。
【0106】
いくつかの例では、参照の完全性のためにサブジェクト領域を作成することができ、すなわち、サブジェクト領域は、サブジェクト領域の階層的データセットの参照の完全性を保証するデータレコードのみを提供する。「参照の完全性」とは、サブジェクト領域の各レコードが、サブジェクト領域の少なくとも1つの他のレコードと結合されていることを意味する。例えば、例示的なサブジェクト領域は、アカウント識別子を各トランザクションレコードと関連付ける第1のデータセットを含む。サブジェクト領域の別のデータセットでは、各顧客識別子を、複数のアカウント識別子および複数の製品識別子に関連付けることができる。サブジェクト領域の参照の完全性を保証することは、サブジェクト領域のデータセットに含まれるすべてのレコードが、サブジェクト領域データセットにある1つまたは複数の他のレコードと有効に結合されることを保証することを意味する。いくつかの例では、適用可能なサブセット作成規則の結果生じたデータレコードと、参照の完全性を保証するデータレコードの両方を含むようにサブジェクト領域を作成することができる。すなわち、例えば、参照の完全性の基準を満たさないレコードでも、サブセット作成規則を満たすサブジェクト領域に含めることができる。サブセット作成規則についてのさらなる記載が「Data Records Selection」という名称の米国特許出願第13/827,558号に提供され、同出願の内容は参照により本明細書に組み込まれる。
【0107】
いくつかの例では、1つまたは複数の既存のデータセットに基づいて仮想のデータセットを作成することができる。例えば、顧客データセットおよびトランザクションデータセットに基づいて、顧客ごとのトランザクションの回数や顧客ごとに費やされたドル額などの値を持つ1つまたは複数のフィールドを含む新しいロールアップデータセットを生成することができる。そのようなロールアップデータセットは、例えば多数または少数の顧客に動作するデータ処理アプリケーションで有用である可能性がある。
【0108】
再度
図2を参照すると、いくつかの例では、解析エンジン38が自動化された解析を行って、フォーマットの指定、1つまたは複数の内容基準、データ生成モード、および高度な規則の1つまたは複数を、生成されるデータに実装することができる。例えば、基本的な例として、ユーザが日付のベースを2000年5月1日と指定し、許可される日付範囲を10年と指定すると、ユーザが正確な日付を指定することなく、解析エンジン38が2000年5月1日から2010年5月1日を、許可される日付の範囲として特定することができる。
【0109】
別の例では、解析エンジン38は、ユーザから指定された平均ストリング長および最大ストリング長を達成する、複数のレコードにわたるストリング長の分布を求めることができる。例えば、解析エンジンは、デフォルトの最大ストリング長とデフォルトの平均ストリング長とのデフォルトの目標比に基づいてストリング長の分布を求めることができる。デフォルトの目標比を最大ストリング長に適用して、ガウス分布などのストリング長の分布におけるピークストリング長を特定することができる。例えば、一例では、デフォルトの最大ストリング長は16、デフォルトの平均ストリング長は8であり、デフォルトの目標比は0.5になる。このデフォルトの目標比をストリングの生成、例えばストリングのランダムな生成に適用することができる。例えば、「6」の最大ストリング長に制限されるフィールドでは、デフォルトの目標比を適用して「3」のピークストリング長を求める。したがって、ストリングは「3」のピークストリング長を中心とするガウス分布で生成される。別の例では、「25」の最大ストリング長に制限されるフィールドでは、デフォルトの目標比を適用して12〜13のピークストリング長を求める。したがって、ストリングは12〜13のピークストリング長を中心とするガウス分布で生成される。
【0110】
いくつかの例では、解析エンジン38は、フォーマットの指定、1つまたは複数の内容基準、データ生成モード、および高度な規則の1つまたは複数を、例えばソースレコードの自動化された分析により、自動的に決定することができる。例えば、解析エンジン38は、どのようにして特定のフィールドについて既存のデータに変更を加える、かつ/または新しいデータを生成して、そのフィールドに目標の値分布を達成するかを決定することができる。
【0111】
図18を参照すると、一般的なデータ生成の手法650では、あるフィールドについてフォーマットの指定が受け取られる(652)。フォーマットの指定は、例えばストリング、小数、整数、日付、または日時など、そのフィールドに生成するデータのデータ型である。例えば、システム100は、一般的なデータ生成の手法650に従ってデータを生成することができる。いくつかの例では、フォーマットの指定は、ユーザインターフェース30などのユーザインターフェース(例えばユーザインターフェース30を通じて提供されるデータ型ウィンドウ)を通じてユーザから受け取ることができる。
【0112】
当該フィールドについて内容の基準が受け取られる(654)。内容の基準は、例えば、そのフィールドに生成されるデータのデータ特性である。例えば、小数フィールドや整数フィールドなどの数値フィールドについてのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたる当該フィールドの平均値を指示する場合がある。ストリングフィールドのデータ特性は、最大の許可文字数、最小の許可文字数、平均文字数、または許可される文字のセットを指示する場合がある。日付フィールドや日時フィールドなど時間に関するフィールドのデータ特性は、日付もしくは日時の単位、日付もしくは日時のベース、または日付もしくは日時の範囲を指示する場合がある。いくつかの例では、フィールドエラー率(すなわちレコードが誤りを含む件数または割合)も1つまたは複数のフィールドに指定することができる。いくつかの例では、内容の基準は、ユーザインターフェース30(例えばストリング特性ウィンドウ800、小数特性ウィンドウ900、整数特性ウィンドウ180、日付特性ウィンドウ190、または日時特性ウィンドウ250)などのユーザインターフェースを通じてユーザから受け取られる場合がある。
【0113】
フィールドの内容生成モードの指示が受け取られる(656)。内容生成モードは、そのフィールドに内容が生成されるモードである。例えば、内容生成モードは、ユニークモード、ランダムモード、デフォルトモード、およびリストモード、のモードから選択される場合がある。ユニークモードでは、選択されたフィールドに一意の値を生成することができる。ランダムモードでは、選択されたフィールドにランダムな値を生成することができる。デフォルトモードでは、例えばターゲットのレコードフォーマットで指定されるデフォルトの特性またはデフォルトの値を使用して値を生成することができる。リストモードでは、許可される値のリストから値が選択される。いくつかの例では、所与のフィールドに内容生成モードが割り当てられない場合には、デフォルトモードを使用してそのフィールドのデータを生成する場合がある。いくつかの例では、内容生成モードの指示は、ユーザインターフェース30(例えばユーザインターフェースを通じて提供される内容生成ウィンドウ)などのユーザインターフェースを通じてユーザから受け取られる。
【0114】
指示された内容生成モードに従って、複数のレコードそれぞれにフィールドの内容が生成される(658)。フィールドに生成される内容は、そのフィールドのフォーマットの指定および内容基準を満たす。いくつかの例では、複数の既存レコードそれぞれに新しいフィールドを作成することができ、指示された内容生成モードに従って、その新しいフィールドに内容を生成することができる。いくつかの例では、複数の新しいレコードが作成される場合があり、各レコードは、指示された内容生成モードに従って内容を生成することができる1つまたは複数のフィールドを持つ。例えば、各既存レコードに基づいて複数の新しいレコードを作成することができる。
【0115】
いくつかの例では、データ生成を使用して、1つまたは複数の所望の特徴を持つレコードのセットを作成することができる。例えば、データ生成を使用して、データ処理アプリケーションで処理するために、フィールド中に所望のレコード数および/または所望の値分布を持つレコードのセットを作成することができる。データ処理アプリケーションの例には、例えば、顧客に請求書を発行するデータ処理アプリケーション(例えば電話の顧客の料金請求)、顧客レコードを処理するデータ処理アプリケーション(例えば顧客の購買パターンの人口統計学的傾向を特定する)、および他の種類のデータ処理アプリケーションが含まれる。
【0116】
データ処理アプリケーションはしばしば、実行が1つまたは複数の変数の値に依存する(例えば変数の値で実行がトリガーされる)規則を実装する。例えば、変数は入力データに対応する入力変数や、1つまたは複数の入力変数に依存する導出された変数である。データ処理アプリケーションを効果的に試験するために、あらゆる規則が少なくとも対応する最小回数実行されるように、かつ/またはあらゆる規則が対応する最大回数よりも少ない回数実行されるように、アプリケーション中のあらゆる規則を実行させる(例えばアプリケーション中で完全なコードの網羅が実現される)のに十分な入力データを提供することができる。
【0117】
図19を参照すると、いくつかの例では、データ処理アプリケーション52への入力データとして入力データレコード50を提供することができる。データ処理アプリケーション52は1つまたは複数の規則54を実装する。規則は、例えば、データをあるフォーマットから別のフォーマットに変換したり、データに関する判定を行ったり、入力データのセットに基づいて新しいデータを生成するために使用することができる基準のセットである。規則についてのさらなる記載が、2007年4月10日に出願された米国特許出願第11/733,434号で得られ、同出願はすべての内容が参照により本明細書に組み込まれる。
【0118】
データ処理アプリケーション52で実装される各規則54は、その規則に対応する条件式が満たされる時に実行することができ、対応する条件式が満たされない場合にはデータ処理アプリケーション52で実行されない。規則54は、少なくとも条件式および実行式を含む指定によって指定することができる。条件式が満たされる(例えば条件式を評価した結果「真」になる)と、実行式を評価することができる。条件式は、1つまたは複数の変数の値に依存する(例えば変数の値でトリガーされる)可能性があり、変数は、例えば入力データ50に対応する入力変数や、1つまたは複数の入力変数に依存する導出された変数である。いくつかの例では、アプリケーションは、トリガーされるすべての規則54を実行する。いくつかの例では、アプリケーションは、規則54の一部や規則54のうち1つのみ(例えばトリガーされた最初の規則54)など、トリガーされるすべての規則54よりも少ない規則を実行する。そのようなデータ処理アプリケーションの実行についてのさらなる記載が、「Data Records Selection」という名称の米国特許出願第13/827,558号に提供され、同出願の内容は参照により本明細書に組み込まれる。
【0119】
規則は、対応する条件式が満たされる時に実行することができる任意の規則であってよい。一例では、小売店の顧客に対する販売の売り込みを特定するデータ処理アプリケーションの規則は、収入が20,000ドル未満の顧客に対する特定の販売の売り込みを特定する規則とすることができる。一例では、電話会社の顧客に請求書を生成するデータ処理アプリケーションの規則は、過去1か月の携帯電話の利用時間がその顧客のサービスプランに許可される携帯電話の利用時間を超えている顧客の請求に追加料金を適用する規則とすることができる。
【0120】
データ処理アプリケーション52によって生成された実行データ56は、実行された、もしくは実行されなかったアプリケーション52の規則54、アプリケーション52の各規則54が実行された回数、または他の情報など、データ処理アプリケーション52の実行に関する情報を提供することができる。実行データ56はデータ生成モジュール150に提供することができる。実行データ56に基づいて、データ生成モジュール150の結果エンジン40(
図2)は、実行されなかった規則54を実行させたであろう入力データ、特定の規則54を指定回数実行させたであろう入力データ、または別の要求される実行結果を生じたであろう入力データなど、データ処理アプリケーション52に要求される入力データまたは入力データ基準を特定することができる。例えば、要求される実行結果は例えばユーザインターフェース30を通じてユーザによって指定される場合がある。
【0121】
データ生成モジュール150のデータ生成エンジン20は、要求される入力データ基準を満たすデータ58を生成することができる。生成されたデータ58は、入力データとしてデータ処理アプリケーション52に提供することができる。すなわち、例えば、データ生成エンジン20は、データ処理アプリケーション中の以前に実行されなかった規則を実行させるデータ、または特定の規則をより多くの回数もしくは少ない回数実行させるデータ、または別の要求される実行結果を生じさせるデータを生成することができる。一例では、incomeフィールドに1,000,000ドルよりも大きい値を持つレコードを生成して、1,000,000より大きいincomeを持つ入力データだけに実行される規則を実行させることができる。一例では、第1の規則はgenderフィールドの値が「F」である場合に実行され、第2の規則はgenderフィールドの値が「M」である場合に実行される。データ処理アプリケーションの初回の実行時に、実行データ56が、第1の規則が1回しか実行されないのに対して第2の規則は50回実行されることを示す場合、第1の規則と第2の規則をほぼ同じ回数ずつ実行させるという例えばユーザから指定された要求実行結果を満たすデータを、データ生成エンジン20が生成することができる。例えば、データ生成エンジン20は、gender=「F」の追加的なレコードを作成するか、または既存レコードの一部についてgenderフィールドの値を変更することができる。
【0122】
図20を参照すると、データ生成モジュール150によって実装される一般的な手法750は、データ処理アプリケーションに適した試験データのセットを生成する。例えば、データ処理アプリケーションでその試験データのセットを処理して、データ処理アプリケーションの各規則を要求される回数ずつ実行させるなどの要求される実行結果を得ることができる。手法750では、1つまたは複数のレコードが、1つまたは複数の規則を実装するデータ処理アプリケーションで処理するために提供される(752)。各レコードは1つまたは複数のフィールドを持つことができる。データ処理アプリケーションを実行することができる(754)。
【0123】
各規則がデータ処理アプリケーションで実行された回数に基づいて、データ生成モジュール150の結果エンジン40により、1つまたは複数のレコードの特定のフィールドに内容の基準を決定することができる(756)。いくつかの例では、特定のフィールドの内容の基準は、その内容の基準に従って生成されるデータがデータ処理アプリケーションに処理された時に、以前に実行されなかった規則を実行させる、または特定の規則をより多くの回数もしくは少ない回数実行させるなどの要求される実行結果を実現することができるように決定することができる。内容の基準は、例えば、そのフィールドに生成されるデータのデータ特性である。例えば、小数フィールドや整数フィールドなどの数値フィールドのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたるそのフィールドの平均値を指示する場合がある。ストリングフィールドのデータ特性は、最大の許可文字数、最小の許可文字数、平均文字数、または許可される文字のセットを指示する場合がある。日付フィールドや日時フィールドなどの時間に関するフィールドのデータ特性は、日付もしくは日時の単位、日付もしくは日時のベース、または日付もしくは日時の範囲を指示する場合がある。
【0124】
特定のフィールドについての内容の基準とフォーマットの指定とに基づいて、特定のフィールドに内容を生成することができる(758)。いくつかの例では、既存のレコードの特定のフィールドの内容に変更を加えることができる。いくつかの例では、新しいレコードを作成し、その新しいレコードの特定のフィールドの内容を生成することができる。
【0125】
少なくとも新たに生成された内容を入力データとして使用して、データ処理アプリケーションを実行することができる(760)。いくつかの例では、特定のフィールドに変更された値を含む既存のレコードを、データ処理アプリケーションに提供することができる。いくつかの例では、既存のレコードを、新たに作成されたレコードと共にデータ処理アプリケーションに提供することができる。いくつかの例では、新たに作成されたレコードだけをデータ処理アプリケーションに提供することができる。
【0126】
少なくとも新たに生成された内容を入力データとして使用した、データ処理アプリケーションの実行の結果を分析することができる(762)。データ処理アプリケーション中の規則が要求する回数実行されるなどの要求される実行結果が達成されると(764)、データ生成プロセスが完了する(766)。要求される実行結果が達成されなかった場合(764)は、さらなる内容の基準を決定し(757)、データ処理アプリケーションへの入力データとして使用される新しい内容を再度生成することができる(758)。
【0127】
いくつかの例では、手法750を実装して、データ処理アプリケーションのすべての規則を少なくとも1回実行させる試験データのセットをデータ処理アプリケーションに生成することができる。すなわち、データ処理アプリケーションを徹底的に試験するために、データ処理アプリケーション中で発生し得るあらゆる動作をトリガーするデータを提供することができる。そのようなデータが存在しない場合は、そのデータを生成することができる。例えば、データ生成プロセスが一旦完了すると(766)、生成されたデータのセットをデータ処理アプリケーションで処理して、データ処理アプリケーションの実行を試験することができる(768)。生成されたデータのセットはデータ処理アプリケーション中で発生し得るあらゆる動作を実行させるので、データ処理アプリケーションを徹底的に試験することができる。データ処理アプリケーションが予想されるように機能しない場合(例えばデータ処理アプリケーションのある動作が予想されるように機能しない場合)は、データ処理アプリケーションに適宜変更を加え(770)、満足の行く結果が達成されるまで試験することができる。
【0128】
いくつかの例では、手法750を実装して、データ処理アプリケーションで処理するための実際的なデータのセットを生成することができる。例えば、小売り企業向けのデータ処理アプリケーションは、顧客の購入パターンを示す動向レポートを生成する場合がある。顧客のプライバシーを守るために、実際的であるが架空のデータレコードのセットをデータ処理アプリケーションで処理するために生成することができる。いくつかの例では、生成されるデータは、扱いに注意を要する個人情報を明かすことなく、データセットのレコードにわたる値の分布(例えば顧客の収入分布)など、実際の顧客データと共通する特性を持つことができる。いくつかの例では、実際的なデータのセットは、物理的なプロセスを示すデータ、金融取引を示すデータ、人間もしくは動物の挙動を示すデータ、または他のデータなどである。
【0129】
実施形態1は、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定する工程と、内容の基準に基づいてフィールド各々の内容を生成する工程と、1つまたは複数のレコードのフィールド各々に、生成された内容を入れる工程とを含む方法を対象とする。
【0130】
実施形態2は実施形態1を対象とし、内容を生成する工程は、フィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含む。
【0131】
実施形態3は実施形態1または2を対象とし、フォーマットの指定は内容の種類を指示する。
【0132】
実施形態4は実施形態3を対象とし、内容の種類は、ストリング、小数、整数、日付、または日時、の1つまたは複数を含む。
【0133】
実施形態5は実施形態2から4のいずれかを対象とし、ユーザインターフェースを通じてフォーマットの指定を受け取る工程を含む。
【0134】
実施形態6は実施形態1から5のいずれかを対象とし、上記フィールドの1つまたは複数を含む新しいレコードを作成する工程と、新しいレコードの上記フィールドに内容を入れる工程とを含む。
【0135】
実施形態7は実施形態1から6のいずれかを対象とし、フィールド各々に生成された内容を入れる工程は、フィールドの1つまたは複数について、既に存在する内容に変更を加える工程を含む。
【0136】
実施形態8は実施形態1から7のいずれかを対象とし、フィールド各々に内容を入れる工程は、1つまたは複数の既に存在するレコードに特定のフィールドを作成する工程を含む。
【0137】
実施形態9は実施形態1から8のいずれかを対象とし、内容の基準は、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値、の1つまたは複数を含む。
【0138】
実施形態10は実施形態1から9のいずれかを対象とし、内容の基準は、生成される内容について特定の値を含む。
【0139】
実施形態11は実施形態1から10のいずれかを対象とし、内容の基準は、1つまたは複数のフィールドの2つ以上に含める内容の組み合わせの目標を指示する。
【0140】
実施形態12は実施形態1から11のいずれかを対象とし、ユーザインターフェースを通じて内容の基準を受け取る工程を含む。
【0141】
実施形態13は実施形態1から12のいずれかを対象とし、内容を生成する工程は、生成モードに基づいて内容を生成する工程を含む。
【0142】
実施形態14は実施形態13を対象とし、生成モードは、(i)複数のレコード各々のフィールドの1つまたは複数について、ランダムな内容を生成すること、(ii)複数のレコード各々のフィールドの1つまたは複数について、一意の内容を生成すること、および(iii)複数のレコード各々のフィールドの1つまたは複数のフィールドの内容を、利用可能な内容のセットから選択すること、の1つまたは複数を含む。
【0143】
実施形態15は実施形態1から14のいずれかを対象とし、生成された内容を含む1つまたは複数のレコードをデータ処理アプリケーションに提供する工程を含む。
【0144】
実施形態16は実施形態1から15のいずれかを対象とし、特定の規則をデータ処理アプリケーションによって実行させるように内容の基準が決定される。
【0145】
実施形態17は実施形態1から16のいずれかを対象とし、内容の基準を決定する工程は、実行された回数が最小閾値回数よりも少なかった特定の規則を特定する工程と、その特定の規則を少なくとも最小閾値回数実行させるように内容の基準を決定する工程とを含む。
【0146】
実施形態18は非一時的なコンピュータ読取り可能媒体を対象とし、媒体は、コンピュータシステムに、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定させ、内容の基準に基づいてフィールド各々の内容を生成させ、1つまたは複数のレコードの各上記フィールドに、生成された内容を入れさせる命令を記憶している。
【0147】
実施形態19はコンピューティングシステムを対象とし、コンピューティングシステムは、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定し、内容の基準に基づいてフィールド各々の内容を生成し、1つまたは複数のレコードの各上記フィールドに、生成された内容を入れるように構成された少なくとも1つのプロセッサを備える。
【0148】
実施形態20はコンピューティングシステムを対象とし、コンピューティングシステムは、1つまたは複数のレコードの処理中に1つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、1つまたは複数のフィールド各々の内容の基準を決定する手段と、内容の基準に基づいてフィールド各々の内容を生成する手段と、1つまたは複数のレコードの各上記フィールドに、生成された内容を入れる手段とを備える。
【0149】
実施形態21は、データ処理アプリケーションの開発中にデータ処理アプリケーションを試験する方法を対象とし、この方法は、データ処理アプリケーションを使用して第1のデータレコードを処理する工程であって、データ処理アプリケーションは1つまたは複数の規則を実装し、各第1のデータレコードは複数のフィールドを有する、工程と、第1のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較する工程と、比較の結果に基づいて、データ処理アプリケーションを使用して処理される第2のデータレコードのデータの目標とする特性を指示する内容の基準を決定する工程と、第1のデータレコードのフォーマットと内容の基準とに従って、第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程と、データ処理アプリケーションを使用して第2のデータレコードを処理する工程と、第2のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較し、各規則の目標値が満たされることを判定する工程と、第2のデータレコードを使用してデータ処理アプリケーションを試験する工程とを含む。
【0150】
実施形態22は実施形態21を対象とし、第1のデータレコードをクライアント装置で受け取る工程を含み、データ処理アプリケーションはそのクライアント装置で実行される。
【0151】
実施形態23は実施形態22を対象とし、クライアント装置はコンピューティング装置からなる。
【0152】
実施形態24は実施形態21または22を対象とし、第1のデータレコードを遠隔のサーバから受け取る工程を含む。
【0153】
実施形態25は実施形態24を対象とし、LANまたはWAN接続を介してサーバに通信的に結合されたクライアント装置で、第1のデータレコードを受け取る工程を含む。
【0154】
実施形態26は実施形態21から25のいずれかを対象とし、データ処理アプリケーションが第2のデータレコードを処理する時に第2のデータレコードのデータが各規則の目標値を満たさせるように、内容の基準を決定する工程を含む。
【0155】
実施形態27は実施形態21から26のいずれかを対象とし、第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程が、第1のデータレコードの1つまたは複数のフィールドの内容に変更を加える工程を含み、変更が加えられた第1のデータレコードが第2のデータレコードである。
【0156】
実施形態28は実施形態21から27のいずれかを対象とし、第2のデータレコードの1つまたは複数のフィールドの内容を生成する工程が、新しいデータレコードを作成する工程を含む。
【0157】
実施形態29は実施形態21から28のいずれかを対象とし、第2のデータレコードを記憶装置に記憶する工程を含む。
【0158】
実施形態30は実施形態21から29のいずれかを対象とし、試験の結果に基づいて、データ処理アプリケーションに変更を加える工程を含む。
【0159】
実施形態31は実施形態21から30のいずれかを対象とし、データ処理アプリケーションを試験する工程は、データ処理アプリケーションを使用して第2のデータレコードを処理した結果に基づいてデータ処理アプリケーションに変更を加える工程を含む。
【0160】
実施形態32は実施形態21から31のいずれかを対象とし、第2のデータレコードのデータが、生産環境でデータ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように内容の基準を決定する工程を含む。
【0161】
上記のデータ生成技術は、適切なソフトウェアを実行するコンピューティングシステムを使用して実装することができる。例えば、コンピューティングシステムは、システム100、開発環境118、データ生成モジュール150、および他のコンピューティングシステムを含むことができる。例えば、ソフトウェアは、プログラムされた、またはプログラム可能な1つまたは複数のコンピューティングシステム(分散、クライアント/サーバ、グリッドなどの各種アーキテクチャをとる可能性がある)で実行される1つまたは複数のコンピュータプログラム中のプロシージャを含む場合があり、コンピューティングシステムはそれぞれ、少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性メモリおよび/もしくは不揮発性メモリ、ならびに/または記憶素子を含む)、少なくとも1つのユーザインターフェース(少なくとも1つの入力装置またはポートを使用して入力を受け取り、少なくとも1つの出力装置またはポートを使用して出力を提供する)を備える。ソフトウェアは、例えばデータフローグラフの設計、構成、および実行に関係するサービスを提供する、より大きなプログラムの1つまたは複数のモジュールを含む場合もある。プログラムのモジュール(例えばデータフローグラフの要素)は、データリポジトリに記憶されたデータモデルに沿ったデータ構造または他の編成データとして実装することができる。
【0162】
ソフトウェアは、CD−ROMや他のコンピュータ可読媒体(例えば汎用または特殊目的のコンピューティングシステムまたは装置で読取り可能)などの有形の非一時的媒体で提供される場合も、ネットワークの通信媒体を通じて、実行先のコンピューティングシステムの有形の非一時的媒体に送付される(例えば伝搬信号に符号化される)場合もある。処理の一部またはすべては、特殊目的コンピュータで行われるか、またはコプロセッサ、フィールドプログラム可能ゲートアレイ(FPGA)、もしくは専用の特定用途集積回路(ASIC)などの特殊目的ハードウェアを使用して行うことができる。処理は、ソフトウェアで指定される演算の異なる部分が異なるコンピューティング要素によって行われる分散方式で実装される場合もある。そのようなコンピュータプログラムはそれぞれ、好ましくは、汎用または特殊目的のプログラム可能コンピュータからアクセスできる記憶装置のコンピュータ読取り可能記憶媒体(例えば固体状態メモリもしくは媒体、または磁気もしくは光学媒体)に記憶またはダウンロードされ、記憶装置媒体がコンピュータによって読み取られた時にコンピュータを構成および操作して、本明細書に記載される処理を行わせる。本発明のシステムは、コンピュータプログラムを備えて構成された有形の非一時的媒体として実装することも考えられ、その場合、そのように構成された媒体は、コンピュータを特定の事前定義された方式で動作させて、本明細書に記載される処理工程の1つまたは複数を行わせる。
【0163】
本発明のいくつかの実施形態を説明した。ただし、前述の説明は、本発明の範囲を説明することを意図し、制限することを意図しないことを理解されたい。本発明の範囲は下記の特許請求の範囲によって定義される。
【0164】
したがって、他の実施形態も下記の特許請求の範囲にある。例えば、本発明の範囲から逸脱することなく様々な変更を加えることができる。また、上記の工程の一部は順序に依存しない場合があり、したがって記載される順序とは異なる順序で行うことができる。