(57)【特許請求の範囲】
【請求項１】
既存のデータベースを擬似したテスト用のデータベースを生成するテストDBデータ生成装置であって、
前記既存のデータベースの各カラムの値の分布情報を抽出するカラム分布抽出手段と、
前記既存データベースのカラム間依存関係情報を抽出するカラム間依存関係抽出手段と、
前記既存のデータベースの各カラムの値の分布情報と前記カラム間依存関係情報からテストDBデータを生成するデータ生成手段とを有することを特徴とするテストDBデータ生成装置。
【請求項２】
請求項１に記載のテストDBデータ生成装置であって、
前記既存データベースのカラムごとにルールを設けてデータをグループ化し、当該グループ化されたそれぞれのグループのグループ名でデータを置き換え、２つのカラムの組合せについてデータの共起の強さを定量化するカラム間依存関係抽出手段をさらに有することを特徴とするテストDBデータ生成装置。
【請求項３】
請求項１に記載のテストDBデータ生成装置であって、
前記既存データベースのカラム間の依存関係の強弱を測定するカラム間依存関係強度算出手段と、
前記カラム間依存関係強度算出手段で算出したカラム間依存関係強度値に基づいてカラムごとにカラム間依存関係情報を利用してテストDBデータを生成するかを判断するデータ生成手段とをさらに有することを特徴とするテストDBデータ生成装置。
【請求項４】
請求項１に記載のテストDBデータ生成装置であって、
テストDBデータを生成するテーブルの生成順序の制約を抽出するテーブル生成順序制約抽出手段をさらに有することを特徴とするテストDBデータ生成装置。
【請求項５】
請求項１に記載のテストDBデータ生成装置であって、
前記カラム間依存関係情報を利用してテストDBデータを生成したカラムのカラム分布情報を抽出し、既存のデータベースの各カラムの値の分布情報との差分を測定するデータ検証手段をさらに有することを特徴とするテストDBデータ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンタープライズシステムのリプレースを行う際のテスト工程におけるデータ生成に関する。
【背景技術】
【０００２】
エンタープライズシステムのリプレースでは、既存システムのDBに格納している実データを移行して新システムで利用する。そのため、テスト工程では、既存システムの実データを対象にテストを実施する必要がある。しかし、近年、セキュリティ要件の高度化から、移行本番まで実データを使用できない事例が多い。このような事例では、既存の仕様書からSEがテスト用データを作成し、テストを実施している。しかし、既存の仕様書がメンテされておらず実データの仕様と乖離が発生していたり、SEによるテスト用データ作成の設計ミスなどにより、実データの特性と異なるテスト用データを作成してしまう可能性がある。そのため、テスト用データと実データの特性の違いにより、テスト段階では不良を検出できず、移行本番後に事故が発生してしまう場合がある。
【０００３】
本技術分野の背景技術として、特開２００１−２５６０７６号（特許文献１）がある。この公報には、「実DBデータの統計解析により各カラムのデータ特徴を抽出し、抽出したデータ特徴に従いテストDBデータを生成する。」と記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２５６０７６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１には、各カラムのデータ特徴からテーブル単位にテストDBデータを生成可能となる。しかし、実際のエンタープライズシステムでは、カラム間やテーブル間の依存関係が多数存在しており、各カラムのデータ特徴だけではその特徴を把握できない。
特に、エンタープライズシステムでは、複数のテーブルやカラムを対象とした検索や更新のDBアクセスが数多く実行されるため、カラム間やテーブル間の依存関係を反映したテストDBデータで性能テストを実施する必要がある。これらの依存関係を反映するため、生成したテストDBデータをユーザが直接修正、カラム間依存関係をテストDBデータに反映する個別プログラムを開発、などのアプローチもある。しかし、これらはユーザの作業工数が高く、また、ユーザ修正や個別プログラムにより各カラムのデータ特徴が実DBと異なってしまう可能性がある。
【０００６】
そこで、本発明は、カラム間やテーブル間の依存関係を反映したテストDBデータを生成することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明ではカラム間やテーブル間の依存関係を反映したテストDBデータを生成するものである。より詳細には、実DBデータとDB定義からカラム間やテーブル間の依存関係に関する情報を解析し、その解析結果に基づいたテストDBデータを生成する。
【０００８】
さらに、本発明では、以下の態様も含まれる。既存のデータベースを擬似したテスト用のデータベースを生成するテストDBデータ生成方法であって、既存のデータベースの各カラムの値の分布情報を抽出するカラム分布抽出手段と、既存データベースのカラム間依存関係情報を抽出するカラム間依存関係抽出手段と、カラム分布状況とカラム間依存関係情報からテストDBデータを生成するデータ生成手段とを有する。
【発明の効果】
【０００９】
本発明によれば、既存DBのカラム間やテーブル間の依存関係を反映したテストDBデータを生成可能となる。これにより、実データと類似したテストDBデータにてテストを実施できる。そのため、カラム間やテーブル間の依存関係の見落としを原因とした障害もテスト工程の早期に検出することが出来る。
【００１０】
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態におけるテストDBデータ生成装置の構成図の例である。
【図２】本発明の一実施形態におけるテストDBデータ生成装置の処理を説明するフローチャートの例である。
【図３】本発明の一実施形態における既存DBデータ１１１を説明するテーブルの例である。
【図４】本発明の一実施形態におけるデータベース定義１１２を説明するテーブルの例である。
【図５】本発明の一実施形態におけるカラム分布情報１１３を説明するテーブルの例である。
【図６】本発明の一実施形態におけるカラム間依存関係情報１１４を説明するテーブルの例である。
【図７】本発明の一実施形態におけるカラム間依存関係強度情報１１５を説明するテーブルの例である。
【図８】本発明の一実施形態におけるテストDBデータ１１７を説明するテーブルの例である。
【発明を実施するための形態】
【００１２】
以下に本発明の一実施形態について図面を用いて詳細に説明する。図１は、本実施形態の既存データベース分析装置１とテストDBデータ生成装置２の構成図の例である。既存データベース分析装置１は、ＣＰＵ１０、メインメモリ１１、記憶装置１２、入力装置１３、出力装置１４、及び通信インタフェース１５とからなる計算機であり、これらは内部バス等により接続される。ＣＰＵ１０は、記憶装置１２に格納されている部をメインメモリ１１に読み込み、実行することにより、種々の処理を行う。記憶装置１２は、既存データベースの各カラムの値の分布状況を抽出するカラム分布抽出部１０１、既存データベースのカラム間の依存関係を抽出するカラム間依存関係抽出部１０２、カラム間の依存関係の強弱を測定するカラム間依存関係強度算出部１０３、既存データベースのデータを格納している既存DBデータ１１１、既存データベースの定義情報を格納しているデータベース定義１１２を格納している。
【００１３】
テストDBデータ生成装置２は、ＣＰＵ２０、メインメモリ２１、記憶装置２２、入力装置２３、出力装置２４、及び通信インタフェース２５とからなる計算機であり、これらは内部バス等により接続される。ＣＰＵ２０は、記憶装置２２に格納されている部をメインメモリ２１に読み込み、実行することにより、種々の処理を行う。記憶装置２２は、テストDBデータを生成するテーブルの生成順序の制約を抽出するテーブル生成順序制約抽出部１０４、データを生成するポリシーをカラムごとに決定し、その生成ポリシーに従いテストDBデータを生成するデータ生成部１０５、生成したテストDBデータと既存DBデータのカラム分布情報を比較し差分を測定するデータ検証部１０６、カラムの分布情報を格納したカラム分布情報１１３、カラム間の依存関係に関する情報を格納したカラム依存関係情報１１４、カラム間の依存関係の強弱に関する情報を格納したカラム間依存関係強度情報１１５、各テーブルで生成すべきレコード数を格納したデータ生成定義情報１１６、生成したテストDBデータを格納したテストDBデータ１１７、生成したテストDBデータのカラムの分布情報を格納したテストDBデータカラム分布情報１１８を格納している。
図２は、本実施例の既存データベース分析装置１とテストDBデータ生成装置２の処理を説明するフローチャートの例である。以降、図２のフローチャートに基づいて、図１の各部の動作を説明する。
【００１４】
S１１では、分析対象とするデータベースのテーブルを選択する。
S１２では、カラム分布抽出部１０１が既存DBデータ１１１とデータベース定義１１２を入力情報として、カラムの値をグループ化し、そのグループごとの出現頻度を格納したカラム分布情報１１３を抽出する。図３は、本実施例で対象とする既存DBデータ１１１の例である。図３は、システムを利用するユーザのユーザＩＤ、ユーザ名、システムへの登録日、ユーザの所属部署などを格納したユーザテーブル１１１１とシステムで受け付けた申請処理情報である申請ＩＤ、申請を行ったユーザＩＤ、ユーザの所属部署に対応する所属コードなどを格納した申請テーブル１１１２である。図４は、データベース定義１１２の例である。ユーザテーブル１１１１と申請テーブル１１１２のカラム名、型、サイズ、主キーを判定するPK、外部キーの判定及び関連する主キーの名称を格納するFKを格納している。本例では、ユーザテーブルとユーザIDと申請テーブルの申請IDがPKとなっており、申請テーブルのユーザIDがFKとなっている。本実施例では、この２テーブルを対象とし、詳細を説明する。図５は、カラム分布情報１１３の例である。分布情報を抽出したテーブル名１１３１、カラム名１１３２、カラムごとのグループ１１３３、グループごとの出現頻度１１３４で構成されている。
【００１５】
本例では、ユーザテーブルのユーザＩＤカラムに関して、Ａ０００１からＡ９９９９の値が出現する確率が５０％であることを示している。グループ化方法は、SQL文でヒットするデータ件数が、実DBとなるべく同じとするため、文字型の場合は前方一致によるグループ化、数値の場合は桁数によるグループ化、日付(年月日)の場合は年月によるグループ化を行っている。また、ユーザがシステムで使用するSQL文を解析し、グループ化のルールを定義してもよい。
【００１６】
S１３では、カラム間依存関係抽出部１０２がデータベース定義１１２のFKの情報から分析対象のテーブルを結合する。本実施形態では、申請テーブルを分析対象としている場合、ユーザIDがFKとなっているため、申請テーブルとユーザテーブルを結合する。
S１４では、カラム間依存関係抽出部１０２が結合したテーブルに対し、カラム分布情報１１３のグループに基づいてカラム間の依存関係を抽出し、その結果をカラム間依存関係情報１１４に格納する。本実施形態では、相関ルール分析により依存関係を抽出している。
【００１７】
図６は、カラム間依存関係情報１１４の例である。抽出したカラム間の依存関係を格納しており、ルール元となるルール元テーブル１１４１、ルール元カラム１１４２、ルール元カラム値１１４３、ルール先となるルール先テーブル１１４４、ルール先カラム１１４５、ルール先カラム値１１４６、ルールの出現頻度を示す支持度１１４７、ルール元が成立した際にルール先が成立する確率を示す確信度１１４８、ルール元とルール先の両方が成立する頻度とルール先が成立する頻度を倍率で示したLIFT値１１４９を格納している。１行目の場合、ユーザテーブルのユーザIDカラムがA０００１からA９９９９の値をとる場合、所属カラムが営業部という値をとるというルールが格納されている。このルールがテーブル上で出現する確率が５０%、ユーザIDカラムがA０００１からA９９９９の値をとっている際に所属カラムが営業部という値をとる確率が１００%、所属カラムが営業部という値をとる確率(７０%)と確信度の倍率が１.４２(１００/７０)となる。
【００１８】
なお、本実施形態では相関ルール分析によりカラム依存関係情報を抽出しているが、各カラムのグループが同じレコードに出現する頻度を算出する手法など、複数のカラムの依存関係を把握する他の既存手法を用いてもよい。
【００１９】
S１５では、カラム間依存関係強度算出部１０３がカラム間依存関係情報１１４からカラムの依存関係の強度を算出し、カラム間依存関係情報１１５に格納する。本実施例では、抽出したカラム間依存関係のLift値１１４９の調和平均により、強度を算出している。
【００２０】
図７は、カラム間依存関係強度値１１５の例である。横軸に縦軸にルール元のカラム名、縦軸がルール先のカラム名となっており、各ルールの強度値が格納されている。例えば、ルール元がユーザIDカラム、ルール先が所属カラムの強度値は２．４３となっている。この値が高いほど、カラム間の依存関係が強いことを示している。なお、本実施例では、Lift値の調和平均により強度を算出しているが、カラム分布情報１１３から算出した期待値と各カラムのグループが同じレコードに出現する頻度のギャップをカイ二乗検定等で算出し、その統計値を強度値としてもよい。S１１からS１５を全てのテーブルとカラムを対象に実行した後、S１６に進む。
【００２１】
S１６では、テーブル生成順序制約抽出部１０４がデータベース定義１１２のPKとFKの情報からテーブル生成順序の制約情報を抽出する。具体的には、FKのカラムを含むテーブルを子テーブル、FKの参照先となっているカラムを含むテーブルを親テーブルとし、テーブルの親子関係を抽出する。
【００２２】
S１７では、データ生成部１０５がテーブル生成順序制約抽出部１０４にて抽出したテーブルの親子関係からデータ生成対象とするデータベースのテーブルを選択する。選択するテーブルは、親テーブルが存在しない、もしくは存在する全ての親テーブルのデータが生成済みのテーブルとする。さらに、データ生成部１０５はデータ生成定義情報１１６から各テーブルで生成すべきレコード数の情報を取得する。
【００２３】
S１８では、データ生成部１０５がカラム間依存関係強度情報１１５に基づき各カラムのデータ生成方針を決定する。具体的には、カラム間依存関係の強度値が一定の閾値を超えている場合、そのカラム間依存関係情報に基づいて値を生成する。ひとつのカラムに対し、閾値を超えているカラム間依存関係の強度値が複数存在した場合、強度値が最も高いカラム間依存関係情報に基づいて値を生成する。例えば、ユーザテーブルの所属カラムの場合、ユーザテーブルのユーザIDとの強度値が２．４３と最も高いため、ユーザIDと所属のカラム間依存関係情報１１４に基づいて値を生成する方針とし、S１９に進む。一方、ユーザテーブルのユーザIDカラム、ユーザ名カラム、登録日カラムは、強度値が高い他カラムが存在しないため、カラム分布情報１１３にもとづいて値を生成する方針とし、S２１に進む。
【００２４】
S１９では、データ生成部１０５がカラム間依存関係情報１１４の情報に基づき値を生成する。ルール元で指定されているカラムの値がどのグループに属しているかを判定し、そのグループに属しているルールの出現頻度に基づきルール先の値を生成する。図８はユーザIDと所属のカラム間依存関係情報１１４に基づきユーザテーブルの所属カラムの値を生成した場合の例である。１、２行目では、ユーザIDカラムがA０００１からA９９９９のグループに該当するため、所属カラムには営業部の値が割り当てられる。３、４行目では、ユーザIDカラムがD０００１からD９９９９のグループに該当するため、所属カラムの値は８０%の割合で営業部、２０%の割合で営業部以外の値が割り当てられる。
【００２５】
なお、本実施形態では、ユーザIDカラムの値が既に生成済の場合を例としている。もし、ユーザIDカラムの値がまだ生成できていない場合、所属カラムの値を生成する処理を保留とし、先にユーザIDカラムの値を生成する。
【００２６】
S２０では、データ検証部１０６が生成したテストDBデータの各カラムの分布情報を算出し、テストDBデータカラム分布情報１１８に登録する。さらに、カラム分布情報１１３とどの程度違いがあるかを算出し、出現頻度が大きく異なっている場合、テストDBデータカラム分布情報１１８に差分が大きいことを登録する。なお、ここで、出願頻度が大きく異なっているとは、予め定めた値（差）より大きな場合とする。
【００２７】
S２１では、カラム分布情報１１３の情報に基づき値を生成する。グループごとの出現頻度に従い、値を生成する。ユーザテーブルのユーザIDの場合、A０００１からA９９９９の値を各データ中の５０%生成する。テーブルそれぞれとカラムのそれぞれに対し、S１７からS２１を繰り返す。以上で、本実施形態の処理の内容の説明を終了する。なお。本実施形態によれば、テスト工程の早期の段階で、インデックス設計の不備やカラム依存関係の見落としを原因とした障害を検出することが出来る。
【符号の説明】
【００２８】
１０１    カラム分布抽出部
１０２    カラム間依存関係抽出部
１０３    カラム間依存関係強度算出部
１０４    テーブル生成順序制約抽出部
１０５    データ生成部
１０６    データ検証部
１１１    既存DBデータ
１１２    データベース定義
１１３    カラム分布情報
１１４    カラム間依存関係情報
１１５    カラム間依存関係強度情報
１１６    データ生成定義情報
１１７    テストDBデータ
１１８    テストDBデータカラム分布情報
【図１】
0006419667.tif 000002
【図２】
0006419667.tif 000003
【図３】
0006419667.tif 000004
【図４】
0006419667.tif 000005
【図５】
0006419667.tif 000006
【図６】
0006419667.tif 000007
【図７】
0006419667.tif 000008
【図８】
0006419667.tif 000009