以下に添付図面を参照して、本願の開示するデータ生成装置及びデータ生成プログラムの実施例を詳細に説明する。なお、本願の開示するデータ生成装置及びデータ生成プログラムは、以下の実施例により限定されるものではない。
実施例1に係るテストデータ生成装置は、業務アプリケーションの開発に際して実行されるプログラムテストに用いられるテストデータを生成する。具体的には、実施例1に係るテストデータ生成装置は、テスト対象の業務アプリケーションによって用いられるデータの項目ごとに、当該データの属性を示すデータ項目の情報を取得する。そして、実施例1に係るテストデータ生成装置は、業務アプリケーションによって用いられるデータに関するデータ間の参照関係を示す参照情報を取得する。そして、実施例1に係るテストデータ生成装置は、データの項目ごとに、データの属性及び参照情報の参照関係のうち少なくとも一方に応じたテストデータを生成する。
例えば、実施例1に係るテストデータ生成装置は、データベースの定義又は画面処理を実装するソースコードから、テストデータを生成するデータ項目ごとにデータの属性を示すデータ項目の情報を取得する。そして、実施例1に係るテストデータ生成装置は、データ項目ごとに、テーブルの対応関係、或いは、ユーザによって設定されたSQL(Structured Query Language)文からデータ間の参照関係を取得する。そして、実施例1に係るテストデータ生成装置は、データ項目ごとに、データの属性に応じたテストデータや、参照関係に応じたテストデータなどを生成する。従って、実施例1に係るテストデータ生成装置は、例えば、既存のテストデータとは類似しないテストデータを作成することができる。また、実施例1に係るテストデータ生成装置は、データに関する定義情報やキー情報、或いはテーブル間の対応関係に関する情報がない場合であっても、SQL文を用いることでテストデータを作成することができる。その結果、実施例1に係るテストデータ生成装置は、データ間の整合性が維持されたテストデータを容易に作成することを可能にする。
ここで、まず、実施例1に係るテストデータ生成装置の構成を説明する。図1は、実施例1に係るテストデータ生成装置100の構成の一例を示す図である。図1に示すように、テストデータ生成装置100は、入力装置110と、表示装置120と、テストデータ構造作成制御部130と、データ情報取得部140と、テストデータ構造入力受付部150と、テストデータ作成制御部160と、データベースデータ取得部170と、テストデータ生成部180と、関連データ生成部190とを有する。そして、テストデータ生成装置100は、図1に示すように、業務アプリケーションが実行される端末200及び各種データが記憶されたデータベース300に接続される。そして、テストデータ生成装置100は、図1に示すように、データベース300によって記憶された各種データ及び端末200によって記憶された業務アプリケーションのソースファイル/データの定義ファイル201などを用いて、負荷テスト用テストデータ181、表示テスト用テストデータ182、入力テスト用テストデータ183及び関連データ191などを生成する。
端末200は、例えば、開発フレームワークを用いて作成された業務アプリケーションのソースファイル及び開発フレームワークの定義ファイルなどを記憶する。そして、端末200は、記憶した業務アプリケーションに係る各種処理を実行する。データベース300は、例えば、端末200によって実行される業務アプリケーションに用いられる各種データ及びテーブル間の参照関係などを示すリレーショナルデータベースなどを記憶する。
負荷テスト用テストデータ181は、業務アプリケーションの処理が遅滞することなく実行されるか否かをテストするためのテストデータである。表示テスト用テストデータ182は、業務アプリケーションの画面に表示される値が想定通りであるか否かをテストするためのテストデータである。入力テスト用テストデータ183は、業務アプリケーションの画面から入力された入力値に対して業務アプリケーションが想定通りに動作するか否かをテストするためのテストデータである。なお、関連データ191については後述する。
入力装置110は、例えば、キーボード、マウスなどであり、ユーザによる種々の情報の入力処理を受付ける。一例を挙げると、入力装置110は、テスト内容を示す情報や、テストデータを生成する際の参照先を示すSQL文などの入力処理を受付ける。表示装置120は、例えば、ディスプレイなどであり、後述するテストデータ構造作成制御部130による制御の元、ユーザに対して処理結果を表示出力する。一例を挙げると、表示装置120は、ユーザに対してGUIを介してテストデータの生成過程を表示出力する。
図2は、実施例1に係る表示装置120によって表示出力されるGUIの第1の例を示す図である。例えば、表示装置120は、図2に示すように、「PT(Program Test)データ生成ツール」ウィンドウを表示出力する。表示装置120によって表示出力される「PT(Program Test)データ生成ツール」ウィンドウは、図2に示すように、「生成データ設定」タブと「DB接続設定」タブとを有する。「生成データ設定」タブは、テストデータを生成する際の設定事項が表示されるタブであり、テストデータの生成対象となるデータに関する情報が表示される。
「生成データ設定」タブは、図2に示すように、「生成対象」、「テーブル名」、「日本語名」及び「生成データ件数」が対応付けられた上側のウィンドウと、「カラムNo」、「項目名」、「タイプ」、「桁数」、「日本語名」、「データ生成方法」、「データ桁数」及び「データ生成パターン」が対応付けられた下側のウィンドウとを有する。上側のウィンドウにおいては、テストデータの生成対象となるデータが含まれるテーブルに関する情報が表示される。例えば、上側のウィンドウにおいては、図2に示すように、「テーブル名:M_SHAIN、日本語名:社員マスタ(共通)」が表示される。また、上側のウィンドウにおける「生成対象」は、ユーザがテストデータの生成対象となるテーブルを選択する領域である。また、「生成データ件数」は、生成するテストデータの件数がユーザによって入力される領域である。
下側のウィンドウにおいては、上側のウィンドウにおいて選択されたテーブルに含まれるデータの項目ごとの情報が表示される。例えば、下側のウィンドウにおいては、図2に示すように、「カラムNo:1、項目名:SOSHIKIZU_CD、タイプ:varchar、桁数:6、日本語名:組織図コード、データ生成方法:全角日本語、データ桁数:6」などが表示される。上記した情報は、上側のウィンドウの「テーブル名:M_SEDAI、日本語名:世代管理マスタ(共通)」がユーザによって選択された場合に、選択されたテーブルに含まれるデータの項目について下側のウィンドウに表示される。なお、下側のウィンドウにおける項目ごとの情報の詳細については、後述する。また、「DB接続設定」タブは、テストデータ生成装置100とデータベース300との接続設定が表示されるタブである。
図1に戻って、テストデータ構造作成制御部130は、作成するテストデータの構造決定に係る各種処理を制御する。具体的には、テストデータ構造作成制御部130は、まず、ユーザによって指定されたテスト内容に基づいて、データの項目ごとの情報の取得先を選択する。より具体的には、テストデータ構造作成制御部130は、入力装置110を介して入力されたテスト内容の情報に基づいて、データの項目ごとの情報の取得先としてデータベース300又は端末200のどちらか一方を選択する。
例えば、テストデータ構造作成制御部130は、テスト内容が負荷テストである旨の情報を受付けると、取得先としてデータベース300を選択し、データベース300よって記憶されたテーブルの情報からデータの項目ごとの情報を取得するように後述するデータ情報取得部140のデータベース情報取得部141を制御する。また、テストデータ構造作成制御部130は、テスト内容が表示テスト又は入力テストである旨の情報を受付けると、取得先として端末200を選択し、端末200よって記憶された業務アプリケーションのソースコード又はフレームワークの定義ファイルからデータの項目ごとの情報を取得するように後述するデータ情報取得部140の画面情報取得部142を制御する。
そして、テストデータ構造作成制御部130は、データ情報取得部140のデータベース情報取得部141又は画面情報取得部142によって取得されたデータの項目ごとの情報を反映させた情報を内部メモリに記憶して、記憶した情報に基づいてウィンドウを表示装置120に表示させるように制御する。以下では、まず、データベース300からデータ項目の情報を取得して、負荷テスト用テストデータを生成する場合について説明した後に、端末200からデータ項目の情報を取得して、入力テスト用テストデータを生成する場合について説明する。
データ情報取得部140は、図1に示すように、データベース情報取得部141と、画面情報取得部142とを有し、テスト対象の業務アプリケーションによって用いられるデータの項目ごとに、当該データの属性を示すデータ項目の情報と、前記業務アプリケーションによって用いられるデータに関するデータ間の参照関係を示す参照情報を取得する。データベース情報取得部141は、テスト対象の業務アプリケーションによって用いられるデータの項目ごとに、当該データの属性を示すデータ項目の情報を取得する。具体的には、データベース情報取得部141は、テストデータ構造作成制御部130の制御の元、テスト対象の業務アプリケーションによって用いられるデータに関する情報を記憶するデータベース300から、当該データのテーブル情報を取得する。そして、データベース情報取得部141は、テストデータの生成対象となるテーブルがユーザによって選択されると、選択されたテーブルに含まれるデータの項目ごとの情報を取得する。
図3は、実施例1に係るデータベース情報取得部141によって取得される情報を説明するための図である。図3においては、データベース情報取得部141によってデータの項目ごとの情報が取得された後の状態について示す。例えば、データベース情報取得部141は、まず、図3の領域(2)に示す「テーブル名:M_SHAIN、日本語名:社員マスタ(共通)」などのテーブル情報をデータベース300から取得する。そして、図3の領域(1)に示すように、ユーザによってテーブル情報から「テーブル名:M_SEDAI、日本語名:世代管理マスタ(共通)」のテーブルが選択されると、データベース情報取得部141は、図3の領域(3)及び(4)に示すように、選択された「テーブル名:M_SEDAI、日本語名:世代管理マスタ(共通)」のテーブルに含まれるデータの項目ごとに、当該データの属性を示すデータ項目の情報をデータベース300から取得する。例えば、データベース情報取得部141は、「項目名:SOSHIKIZU_CD」のデータ種別「タイプ:varchar、桁数:6、日本語名:組織図コード」を取得する。さらに、データベース情報取得部141は、項目ごとにデータの参照関係をデータベース300から取得する。図3の領域(5)にプルダウン方式で示されたデータ生成方法は、データベース情報取得部141によって取得されたデータ項目の情報及びデータの参照関係に基づいて、テストデータ構造作成制御部130によって表示する内容が決定される。また、図3の領域(6)に示すデータ生成パターンは、図3の領域(5)に示すプルダウンからユーザによって選択されたデータ生成方法に基づいて、参照先の情報が表示される。
ここで、図3の領域(4)〜(6)に設定される内容の詳細について説明する。図3の領域(4)に示す「タイプ」とは、データ項目のタイプを意味し、例えば、数値、文字、日付などがある。すなわち、図3の「タイプ」は、各項目のデータがどのような文字列で作成されるかを示したものであり、例えば、「varchar」は、データが日本語などの文字によって生成されることを示す。また、図3の「int」は、データが数値によって生成されることを示し、「datetime」はデータが日付形式によって生成されることを示す。次に「桁数」とは、データ項目の最大の桁数を意味する。例えば、桁数「8」は8桁以下のデータで作成される文字列であることを示す。次に「日本語名」とはデータ項目の名称を日本語で表した名称を示す。これらの文字列の情報は、データベース300に記憶される定義情報から取得される。
図3の領域(5)に示すデータ生成方法は、タイプの情報及びデータベース情報取得部141によって取得された情報に基づいて、すなわち、図3の領域(4)に示された情報に基づいて、テストデータ構造作成制御部130によってデータ種別が設定される。図4は、実施例1に係るデータ種別の一例を示す図である。例えば、データ生成方法には、データ項目の情報に基づいて、図4に示されるデータ種別の何れかが自動選択されて設定される。例えば、「タイプ」が「datatime」で、桁数が「8」の場合には、データ種別として「日付型_日付(YYYYMMDD形式)」が選択される。別の例として、「タイプ」が「varchar」で、桁数が「6」の場合、データ種別として「文字型_半角&数字」が選択される。ここで、データ種別を選択する基準として、データタイプの日本語名がどの様な文字列で表現されているかによって判断してもよい。例えば、データタイプの日本語名が「〜コード」の文字列で表される場合は、必要とされるテストデータが数値コードであると判断して「文字型_半角&数字」を選択する。
一方、参照関係を示す参照情報がデータベース300に記憶されている場合には、テストデータ構造作成制御部130は、以下に記載するように、データ生成方法とデータ生成パターンとを設定する。図5Aは、実施例1に係る参照情報の一例を示す図である。図5Aにおいては、主キー(PK:Primary Key)と外部キー(FK:Foreign Key)とにより参照関係が示された参照情報を示す。例えば、図5Aに示す商品データを対象としたテストデータを生成する際に、「項目:カテゴリコード」のデータは、参照先のカテゴリデータにおけるカテゴリコードを利用するようにデータ生成方法及びデータ生成パターンが設定される。
図5Bは、実施例1に係るテストデータ構造作成制御部130による処理の一例を説明するための図である。図5においては、「項目:カテゴリコード(CATEGORY_CD)」を対象とした場合のウィンドウの一部を示す。図5Aに示す参照情報がデータベース300に記憶されており、データベース情報取得部141によって取得されると、テストデータ構造作成制御部130は、図5Bに示すように、データ生成方法を「外部参照」と設定する。そして、テストデータ構造作成制御部130は、図5Bに示すように、カテゴリデータのカテゴリコードが参照先である旨の情報である「M_CATEGORY.CATEGORY_CD」をデータ生成パターンに設定する。また、データ生成方法としてユーザの選択により「ランダム生成」又は「SQL設定」を設定することも可能である。データ生成方法が「ランダム生成」の場合は、データタイプの「タイプ」及び「桁数」に整合性が合う形式にデータを生成する方法となる。データ生成方法が「SQL設定」の場合は、データ生成パターンにSQL文を設定して、設定されたSQLに応じてデータを生成する方法となる。この場合、SQL文はデータ生成パターンに設定する。なお、データ生成方法は、図3及び図5Bに示すように、プルダウンである。すなわち、データ生成方法として設定される内容は、複数設定することが可能であり、最終的なデータ生成方法はユーザによって選択されるようにすることが可能である。
図1に戻って、テストデータ構造入力受付部150は、入力装置110を介してユーザから入力された設定を図3に示すウィンドウに反映する。例えば、テストデータ構造入力受付部150は、テストデータの生成対象となるテーブル選択や、プルダウンによるデータ生成方法の選択を受付けて、各設定項目に反映させる。また、テストデータ構造入力受付部150は、データの項目ごとに生成するデータ件数を受付けて、ウィンドウ内の「生成データ件数」に反映する。
さらに、テストデータ構造入力受付部150は、データ生成方法に「SQL設定」が設定された場合には、参照情報としてSQL文を受付けて、ウィンドウ内のデータ生成パターンに反映させる。図5Cは、実施例1に係るテストデータ構造入力受付部150によって受付けられるSQL文の一例を示す図である。例えば、テストデータ構造入力受付部150は、図5Cに示すように、「部門マスタから部門コードのデータを選択する」旨のSQL文「SELECT BUMON_CD FROM M_BUMON」を入力装置110を介して受付け、データ生成パターンに設定する。同様に、テストデータ構造入力受付部150は、図5Cに示すように、「部門マスタから部門コードのデータを選択する際に、部門コードが010から250までのデータを選択する」旨のSQL文「SELECT BUMON_CD FROM M_BUMON WHERE BUMON_CD BETWEEN ‘010’AND‘250’」を入力装置110を介して受付け、データ生成パターンに設定する。
図1に戻って、テストデータ作成制御部160は、テストデータ構造作成制御部130及びテストデータ構造入力受付部によって設定されたウィンドウの情報に基づいたテストデータの生成に係る各種処理を制御する。具体的には、テストデータ作成制御部160は、後述するデータベースデータ取得部170、テストデータ生成部180、関連データ生成部190による処理を制御する。
データベースデータ取得部170は、テストデータ構造作成制御部130及びテストデータ構造入力受付部150によって設定されたウィンドウの情報に基づいて、テストデータの生成に用いられるデータをデータベース300から取得する。例えば、データ生成方法に「外部参照」が設定されている場合に、データベースデータ取得部170は、図5Aに示す「カテゴリデータ」から「カテゴリコード」のデータをデータベース300から取得する。
テストデータ生成部180は、データの項目ごとに、データベース情報取得部141によって取得されたデータタイプの情報に基づいて設定されたデータ種別の属性又は参照情報又はSQL設定又はランダム生成のうち少なくとも1つに応じたテストデータを生成する。具体的には、テストデータ生成部180は、ウィンドウの情報に含まれるデータ生成方法及びデータ生成パターンに基づいてテストデータを生成する。
例えば、テストデータ生成部180は、データ生成パターンが設定されていない場合には、データ生成方法の設定内容に応じたテストデータを、設定された件数生成する。一例を挙げると、図3の「SOSHIKIZU_CD」のテストデータを生成する場合には、データ生成パターンが設定されておらず、データ生成方法が、データ種別である「データ生成方法:全角日本語」であることから、テストデータ生成部180は、6文字の全角日本語のランダムな文字列をテストデータとして生成する。同様に、データ生成方法が「ランダム生成」の場合は、データタイプの「タイプ」及び「桁数」に整合性が合う形式にデータがランダムに生成される。例えば、タイプが「int」で桁数が「3」の場合には、テストデータ生成部180は、ランダムな3桁の数字をテストデータとして生成する。
一方、データ生成パターンが設定されている場合には、テストデータ生成部180は、データ生成方法及びデータ生成パターンの設定内容に応じたテストデータを、設定された件数生成する。一例を挙げると、図5Bの「CATEGORY_CD」のテストデータを生成する場合には、データ生成方法が「外部参照」であり、データ生成パターンに参照先として「M_CATEGORY.CATEGORY_CD」が設定されていることから、テストデータ生成部180は、外部参照の参照先として「M_CATEGORY.CATEGORY_CD」を参照して、「CATEGORY_CD」のテストデータを生成する。具体的には、データベースデータ取得部170がデータベース300より「M_CATEGORY」テーブルに登録されている「CATEGORY_CD」の値を複数取得する。そして、テストデータ生成部180は、取得された複数データから任意にデータ選択してテストデータとして生成する。同様に、データ生成方法が「SQL設定」であり、データ生成パターンにSQL文が設定されていた場合には、テストデータ生成部180は、SQL文に記載された参照先のデータをテストデータとして生成する。具体的には、データベースデータ取得部170は、設定されたSQL文をデータベース300で実行し、実行結果として複数データを取得する。テストデータ生成部180は、データベースデータ取得部170が実行結果として取得した複数データから任意にデータを選択し、当該項目のテストデータとして生成する。
図6は、実施例1に係るテストデータ生成部180によって生成されるテストデータの第1の例を示す図である。図6においては、図3に示すウィンドウに設定された情報に基づいて生成されたテストデータを示す。例えば、テストデータ生成部180は、図6に示すように、「組織図コード:組織1−1、世代コード:20、利用開始年月日:21年4月1日、利用終了年月日:22年3月31日、カレント区分:1111、登録日付:20090331、登録社員コード:社員ID0111、更新日付:20091211、更新社員コード:社員ID0222」とするテストデータを生成してデータベース300に格納させる。同様に、テストデータ生成部180は、図6に示すように、世代管理データのテストデータを生成する。
図1に戻って、関連データ生成部190は、参照関係を示す参照情報が設定されたデータ間のテストデータを生成する際に、参照先にデータが登録されていない場合に、参照先のデータを関連データとして生成する。具体的には、データ生成方法として外部参照が設定されており、データ生成パターンに設定された参照先にデータが登録されていない場合に、データ種別に応じたデータを関連データ191として生成して、生成したデータをデータベース300に登録する。
例えば、関連データ生成部190は、図5Bのデータ生成パターンに示す参照先「M_CATEGORY.CATEGORY_CD」にデータが登録されていない場合に、同一カラム内の「タイプ」、「桁数」を参照する。そして、「タイプ」が「varchar」であり。「桁数」が「6」であることから、関連データ生成部190は、6文字の文字データを生成する。そして、関連データ生成部は、生成したデータを「M_CATEGORY.CATEGORY_CD」に登録する。
上述したように、実施例1に係るテストデータ生成装置100は、負荷テスト用テストデータを生成する場合に、データベース300からデータ項目の情報を取得してテストデータを生成する。続いて、端末200からデータ項目の情報を取得して、入力テスト用テストデータを生成する場合について説明する。
図1に戻って、画面情報取得部142は、テスト対象の業務アプリケーションによって用いられるデータの項目ごとに、当該データの属性を示すデータ項目の情報を取得する。具体的には、画面情報取得部142は、テストデータ構造作成制御部130の制御の元、テスト対象の業務アプリケーションの画面処理が実装されたソースコード又はフレームワーク定義を端末200から取得する。図7は、実施例1に係る業務アプリケーションの画面の一例を説明するための図である。例えば、実施例1に係る業務アプリケーションの画面としては、図7に示すように、「商品コード」、「メーカーコード」、「メーカー商品コード」、「商品名」、「カテゴリコード」、「商品説明」及び「単価」の入力項目が設定された商品情報編集の画面がある。以下では、画面処理が実装されたソースコードからデータ項目の情報を取得する場合について説明した後、フレームワーク定義からデータ項目の情報を取得する場合について説明する。
画面処理が実装されたソースコードからデータ項目の情報を取得する場合には、画面情報取得部142は、フレームワークの画面共通処理クラスを継承するソースコードの一覧を取得することにより、図7に示すような画面処理が実装されたプログラムの一覧を取得する。そして、画面情報取得部142は、テストデータを生成するデータ項目を取得したソースコードの入力チェック実装箇所から取得する。
図8は、実施例1に係る画面処理のソースコードの一例を示す図である。図8においては、図7に示す画面の入力チェック処理が実装されたソースコードについて示す。例えば、画面情報取得部142は、まず、フレームワークの入力チェック処理メソッドの一覧から対象となる変数名を取得する。一例を挙げると、画面情報取得部142は、図8に示すソースコードから「Set Default Validation」メソッドの一覧を取得する。そして、画面情報取得部142は、取得したメソッドの引数からテストデータの生成対象となる項目を取得する。一例を挙げると、画面情報取得部142は、図8に示す「validator.Set Default Validation(Me.SearchShohinCd,“商品コード(検索)”,InputValidator.CheckType.LengthCheck,0,4)」から、「SearchShohinCd」を項目名、「“商品コード(検索)”」を日本語名として取得する。
フレームワーク定義からデータ項目の情報を取得する場合には、画面情報取得部142は、フレームワークの入力チェック定義より、入力チェックが定義されている画面一覧を取得する。図9は、実施例1に係る入力チェックの外部定義の一例を示す図である。例えば、画面情報取得部142は、図9に示すように、<Screen id=・・・>〜</Screen>となっているScreenタグの項目を画面一覧として取得する。そして、画面情報取得部142は、画面の入力チェック定義より入力チェックの定義タグを取得する。例えば、画面情報取得部142は、図9に示す「Check」タグを入力チェックの定義タグとして取得する。
そして、画面情報取得部142は、取得したCheckタグからテストデータの生成対象となる項目を取得する。例えば、画面情報取得部142は、図9に示す<Check DisplayName=“商品コード”ControlId=“ShohinCd”Name=“商品コード”>から、「ShohinCd」を項目名、「“商品コード”」を日本語名として取得する。
ここで、画面情報取得部142は、フレームワークのチェック定義を参照して、取得したデータの項目ごとにタイプなどのデータタイプを設定する。図10は、実施例1に係るフレームワークのチェック定義の一例を示す図である。図10に示すように、フレームワークのチェック定義には、入力チェック種類(Check Type)ごとに、入力チェックの内容と、チェックの概要と、入力チェックの条件1及び2が対応付けられている。
例えば、図8に示す「日本語名:商品コード」についてデータ種別を設定する場合には、「日本語名:商品コード」に係る入力チェック処理メソッドが「validator.Set Default Validation(Me.ShohinCd,“商品コード”,InputValidator.CheckType.NullCheck,,,)」、「validator.Set Default Validation(Me.ShohinCd,“商品コード”,InputValidator.CheckType.LengthCheck,0,4)」、「validator.Set Default Validation(Me.ShohinCd,“商品コード”,InputValidator.CheckType.Natural Number Check,,,)」であることから「タイプ:数値」、「桁数:4桁」、「日本語名:商品コード」、「データ生成方法:数値」、「データ桁数:4桁」とするデータ種別が設定される。
また、例えば、図9に示す「日本語名:伝票番号」についてデータタイプを設定する場合には、「日本語名:伝票番号」に係るCheckタグが、<Check CheckType=“Natural Number Check”>、<Check Arg1=“10000”Arg2=“99999”CheckType=“Range Check”/>、<Check Arg1=“0”Arg2=“5”CheckType=“Length Check”/>であり、チェック定義として「Natural Number Check」及び「Range Check」で10000〜99999、「Length Check」で0〜5文字が定義されていることから、「タイプ:数値」、「桁数:5桁」、「日本語名:伝票番号」、「データ生成パターン:10000〜99999が、異常値、正常値、閾値として設定される」が設定される。
上述した画面情報取得部142によるデータ項目の情報の取得においても、テストデータ構造作成制御部130によってウィンドウが表示出力される。図11は、実施例1に係る表示装置によって表示出力されるGUIの第2の例を示す図である。例えば、図11に示すように、画面情報取得部142によってソースコードから画面名が取得され、「商品情報編集マスタ」がテストデータ生成の対象として選択されると、商品情報編集マスタに含まれる入力項目が展開され、項目ごとに「タイプ」、「桁数」、「日本語名」、「データ生成方法」、「データ桁数」及び「データ生成パターン」が設定される。ここで、図11の領域(5)に示すデータ生成パターンには、外部参照としてSQL文が設定される。
テストデータ生成部180は、上記したウィンドウに設定された情報に基づいてテストデータを生成する。図12Aは、実施例1に係るテストデータ生成部によって生成されるテストデータの第2の例を示す図である。図12Aにおいては、図11に示すウィンドウに設定された情報に基づいて生成されたテストデータを示す。
例えば、テストデータ生成部180は、図12Aに示すように、端末200の業務アプリケーションに入力するためのテストデータとして、「商品コード:S0002、メーカーコード:F001、メーカー商品コード:28475684、商品名:えんぴつX、カテゴリコード:01、商品説明:文房具、単価:200」とするテストデータを生成して入力用テストデータ183として出力する。同様に、テストデータ生成部180は、図12Aに示すように、端末200の業務アプリケーションで表示するためにデータベース300に登録するテストデータとして、商品データのテストデータとして表示用テストデータ182を出力する。また、関連データ生成部190は、参照先のテストデータを生成する。図12Bは、実施例1に係るテストデータ生成部によって生成されるテストデータの第3の例を示す図である。例えば、データ生成方法が「外部参照」、データ生成パターンが「CATEGORY.CATEGORY_CD」と設定されている場合に、関連データ生成部190は、図12Bに示すように、「カテゴリコード:01、カテゴリ名:文具」とする関連データ191を生成してデータベース300に格納させる。
上述したように、実施例1に係るテストデータ生成装置100は、データベースの定義や、画面処理が実装されたソースコード、フレームワークの定義を用いて、業務アプリケーションのテストデータを生成する。そして、実施例1に係るテストデータ生成装置100は、生成したテストデータをデータベース300又は端末200に格納させる。実施例1に係るテストデータ生成装置100は、このようにして生成したテストデータの検索を実行させることも可能である。図13は実施例1に係るテストデータ生成装置100によって表示されるテストデータ検索画面の一例を示す図である。
例えば、実施例1に係るテストデータ生成装置100は、図13に示すように、「商品コード」、「メーカーコード」及び「メーカー商品コード」などの複数の検索条件を受付けて、受け付けた検索結果の論理積の検索結果を表示させることも可能である。
次に、図14〜図21を用いて、実施例1に係るテストデータ生成装置100の処理の手順を説明する。図14は、実施例1に係るテストデータ生成装置100によるデータベースからのデータ種別の取得処理の手順を説明するためのフローチャートである。なお、図14においては、テスト内容に応じたデータ種別の取得先が決定された後の処理について示す。
図14に示すように、実施例1に係るテストデータ生成装置100においては、データベース情報取得部141が、データベース300よりテーブル一覧を取得する(ステップS101)。そして、テストデータ構造入力受付部150が、テストデータを作成する対象テーブルの選択を受け付ける(ステップS102)。その後、データベース情報取得部141が、テストデータを作成するデータ項目を選択されたテーブルより取得する(ステップS103)。
そして、テストデータ構造入力受付部150が、テストデータを作成するデータ項目の変更/入力を受け付ける(ステップS104)。その後、データベース情報取得部141が、データベース300より対象テーブルのデータ項目の情報を取得する(ステップS105)。そして、テストデータ構造入力受付部150が、データ項目の情報の変更/入力を受付ける(ステップS106)。続いて、テストデータ構造作成制御部130が、データ項目ごとにデータ種別を決定する(ステップS107)。そして、テストデータ構造入力受付部150が、データ項目ごとにデータ種別の変更を受付け(ステップS108)、データ生成パターンの入力を受け付けて(ステップS109)、処理を終了する。
図15は、実施例1に係るテストデータ生成装置100によるデータ項目の参照関係の決定処理の手順を説明するためのフローチャートである。なお、図15においては、データ項目が決定された後の処理について示す。
図15に示すように、実施例1に係るテストデータ生成装置100においては、データベース情報取得部141が、データベース300よりテーブルの関連情報を取得する(ステップS201)。そして、テストデータ構造作成制御部130が、データベース情報取得部141によって取得されたテーブルの関連情報よりデータ項目ごとの関連を決定する(ステップS202)。その後、テストデータ構造入力受付部150が、データ項目の関連の入力を受け付けて(ステップS203)、処理を終了する。
図16は、実施例1に係るテストデータ生成装置100によるテストデータ生成処理の第1の手順を説明するためのフローチャートである。なお、図16においては、データ項目ごとの情報がデータベース300より取得された場合のテストデータ生成処理について示す。また、図16においては、データ項目ごとのデータ生成方法及びデータ生成パターンが設定された後の処理について示す。
図16に示すように、実施例1に係るテストデータ生成装置100においては、テストデータ生成部180が、データ項目のデータ生成パターンを取得し(ステップS301)、データ生成パターンにデータ種別が設定されているか否かを判定する(ステップS302)。ここで、データ生成パターンにデータ種別が設定されている場合には(ステップS302肯定)、テストデータ生成部180が、データ種別に応じたテストデータを作成して(ステップS303)、設定された件数を生成したか否かを判定する(ステップS304)。
ここで、設定された件数を生成していない場合には(ステップS304否定)、テストデータ生成部180が、ステップS303に戻って、データ種別に応じたテストデータを作成する。一方、設定された件数を生成した場合には(ステップS304肯定)、テストデータ生成部180が、ステップS310の判定を実行する。
ステップS302において、データ生成パターンにデータ種別が設定されていない場合には(ステップS302否定)、テストデータ生成部180が、データ生成パターンに応じたテストデータを生成する。データ生成パターンがランダム生成設定の場合には(ステップS305)、テストデータ生成部180が、データタイプに応じたテストデータをランダムに生成して(ステップS306)、設定された件数を生成したか否かを判定する(ステップS307)。
ここで、設定された件数を生成していない場合には(ステップS307否定)、テストデータ生成部180が、ステップS306に戻って、ランダム生成設定の場合の処理を実行する。一方、設定された件数を生成した場合には(ステップS307肯定)、テストデータ生成部180が、ステップS310の判定を実行する。同様に、データ生成パターンが外部参照設定の場合(ステップS308)及びSQL設定の場合(ステップS309)についても、各設定でテストデータを生成して設定された件数を生成したか否かを判定する(ステップS307)。なお、データ生成パターンが外部参照設定の場合のテストデータ生成処理の手順及びSQL設定の場合のテストデータ生成処理の手順については、それぞれ図17及び18において説明する。
各設定におけるテストデータを設定された件数生成した場合には(ステップS304肯定、ステップS307肯定)、テストデータ生成部180が、全てのデータ項目について処理したか否かを判定する(ステップS310)。ここで、全てのデータ項目について処理していない場合には(ステップS310否定)、テストデータ生成部180は、ステップS301に戻って、未処理のデータ項目のデータ生成パターンを取得する。一方、全てのデータ項目について処理した場合には(ステップS310肯定)、テストデータ生成部180は、処理を終了する。
図17は、実施例1に係るテストデータ生成装置100によるテストデータ生成処理の第2の手順として関連データの作成を説明するためのフローチャートである。なお、図17においては、図16におけるステップS308とステップS307との間の処理について示す。
図17に示すように、実施例1に係るテストデータ生成装置100においては、データ生成パターンが外部参照設定の場合には(図16、ステップS308)、データベース情報取得部141が、参照先のテーブルに登録データがあるか否かを判定する(ステップS311)。ここで、参照先のテーブルに登録データがある場合には(ステップS311肯定)、データベースデータ取得部170は、参照先テーブルより登録データの一覧を取得する(ステップS312)。
そして、テストデータ生成部180が、取得したデータよりランダムに値を1つ選択して(ステップS313)、選択したデータをテストデータとして生成して(ステップS314)、処理を終了する。一方、ステップS312の判定において、参照先のテーブルに登録データがない場合には(ステップS311否定)、関連データ生成部190が、データタイプに応じてテストデータを生成して(ステップS315)、生成したデータが参照先のテーブルにあるか否かを判定する(ステップS316)。
ここで、生成したデータが参照先のテーブルにある場合には(ステップS316肯定)、関連データ生成部が処理を終了する。一方、生成したデータが参照先のテーブルにない場合には(ステップS316否定)、関連データ生成部190が、参照先テーブルにキーデータを関連データ191として作成して(ステップS318)、処理を終了する。なお、図17に示す処理が終了すると、図16に示すステップS307の判定処理が実行される。
図18は、実施例1に係るテストデータ生成装置100によるテストデータ生成処理の第3の手順を説明するためのフローチャートである。なお、図18においては、図16におけるステップS310とステップS308との間の処理について示す。
図18に示すように、実施例1に係るテストデータ生成装置100においては、データ生成パターンがSQL設定の場合には(図16、ステップS309)、テストデータ生成部180が、SQLのチェックが設定されているか否かをデータ生成パターンの設定から判定する(ステップS318)。ここで、SQLのチェックが設定されていない場合には(ステップS318否定)、テストデータ生成部180が、SQLの実行結果の一覧を取得する(ステップS319)。
そして、テストデータ生成部180が、取得したデータよりランダムに値を1つ選択して(ステップS320)、選択したデータをテストデータとして生成して(ステップS321)、処理を終了する。一方、SQLのチェックが設定されている場合には(ステップS318肯定)、テストデータ生成部180が、データタイプに応じてテストデータを生成して(ステップS322)、データ生成パターンに設定されているSQLをデータベースデータ取得部170で実行する。そして、データベースデータ取得部170が、SQLの実行結果に生成したデータが含まれるか否かを判定する(ステップS323)。
ここで、SQLの実行結果に生成したデータが含まれない場合には(ステップS323否定)、テストデータ生成部180が、データ参照エラーであると判定して、データを生成せずに(ステップS324)、処理を終了する。一方、SQLの実行結果に生成したデータが含まれる場合には(ステップS323肯定)、テストデータ生成部180が、処理を終了する。なお、図18に示す処理が終了すると、図16に示すステップS307の判定処理が実行される。
図19は、実施例1に係るテストデータ生成装置100による画面処理実装のソースコードからのデータ種別の取得処理の手順を説明するためのフローチャートである。なお、図19においては、テスト内容に応じたデータ種別の取得先が決定された後の処理について示す。
図19に示すように、実施例1に係るテストデータ生成装置100においては、画面情報取得部142が、端末200より画面処理実装のソース一覧を取得する(ステップS401)。そして、テストデータ構造入力受付部150が、テストデータを作成する画面の選択を受け付ける(ステップS402)。その後、画面情報取得部142が、テストデータを作成するデータ項目を画面ソースの入力チェック実装箇所より取得する(ステップS403)。
そして、テストデータ構造入力受付部150が、テストデータを作成するデータ項目の変更/入力を受け付ける(ステップS404)。その後、画面情報取得部142が、入力チェック実装より対象画面のチェック定義情報を取得して、テストデータ作成項目とする(ステップS405)。そして、テストデータ構造入力受付部150が、データ項目の情報の変更/入力を受付ける(ステップS406)。続いて、テストデータ構造作成制御部130が、データ生成パターンの入力を受け付けて(ステップS407)、処理を終了する。
図20は、実施例1に係るテストデータ生成装置100によるフレームワーク入力チェック定義からのデータ項目ごとの情報の取得処理の手順を説明するためのフローチャートである。なお、図20においては、テスト内容に応じたデータ項目ごとの情報の取得先が決定された後の処理について示す。
図20に示すように、実施例1に係るテストデータ生成装置100においては、画面情報取得部142が、端末200より入力チェック定義が定義されている画面一覧を取得する(ステップS501)。そして、テストデータ構造入力受付部150が、テストデータを作成する画面の選択を受け付ける(ステップS502)。その後、画面情報取得部142が、テストデータを作成するデータ項目を画面の入力チェック定義より取得する(ステップS503)。
そして、テストデータ構造入力受付部150が、テストデータを作成するデータ項目の変更/入力を受け付ける(ステップS504)。その後、画面情報取得部142が、入力チェック定義より対象画面のチェック定義情報を取得して、テストデータ作成項目とする(ステップS505)。そして、テストデータ構造入力受付部150が、データ項目の情報の変更/入力を受付ける(ステップS506)。続いて、テストデータ構造作成制御部130が、データ生成パターンの入力を受け付けて(ステップS507)、処理を終了する。
図21は、実施例1に係るテストデータ生成装置によるテストデータ生成処理の第4の手順を説明するためのフローチャートである。なお、図21においては、データ項目ごとのデータ種別が画面処理を実装するソースコード又はフレームワークの入力チェック定義より取得された場合のテストデータ生成処理について示す。また、図21においては、データ項目ごとのデータタイプ、データ生成方法及びデータ生成パターンが設定された後の処理について示す。
図21に示すように、実施例1に係るテストデータ生成装置100においては、テストデータ生成部180が、データ項目のデータ生成パターンを取得し(ステップS601)、データ生成パターンにデータ種別が設定されているか否かを判定する(ステップS602)。ここで、データ生成パターンにデータ種別が設定されている場合には(ステップS602肯定)、テストデータ生成部180が、データ種別に応じたテストデータを作成して(ステップS603)、設定された件数を生成したか否かを判定する(ステップS604)。
ここで、設定された件数を生成していない場合には(ステップS604否定)、テストデータ生成部180が、ステップS603に戻って、データ種別に応じたテストデータを作成する。一方、設定された件数を生成した場合には(ステップS604肯定)、テストデータ生成部180が、ステップS609の判定を実行する。
ステップS602において、データ生成パターンにデータ種別が設定されていない場合には(ステップS602否定)、テストデータ生成部180が、データ生成パターンに応じたテストデータを生成する。データ生成パターンがランダム生成設定の場合には(ステップS605)、テストデータ生成部180が、データタイプに応じてテストデータをランダムに生成して(ステップS606)、設定された件数を生成したか否かを判定する(ステップS607)。
ここで、設定された件数を生成していない場合には(ステップS607否定)、テストデータ生成部180が、ステップS605に戻って、ランダム生成設定の場合の処理を実行する。一方、設定された件数を生成した場合には(ステップS607肯定)、テストデータ生成部180が、ステップS609の判定を実行する。同様に、データ生成パターンがSQL設定の場合(ステップS608)についても、各設定でテストデータを作成して設定された件数を生成したか否かを判定する(ステップS607)。なお、データ生成パターンがSQL設定の場合のテストデータ生成処理の手順については、図18と同様である。
各設定におけるテストデータを設定された件数生成した場合には(ステップS604肯定、ステップS607肯定)、テストデータ生成部180が、全てのデータ項目について処理したか否かを判定する(ステップS609)。ここで、全てのデータ項目について処理していない場合には(ステップS609否定)、テストデータ生成部180は、ステップS601に戻って、未処理のデータ項目のデータ生成パターンを取得する。一方、全てのデータ項目について処理した場合には(ステップS609肯定)、テストデータ生成部180は、処理を終了する。
上述したように、実施例1によれば、データベース情報取得部141又は画面情報取得部142が、テスト対象の業務アプリケーションによって用いられるデータの項目ごとに、当該データの属性を示すデータ項目の情報を取得し、テストデータ構造作成制御部130がデータ種別を設定する。また、データベース情報取得部141又は画面情報取得部142が、業務アプリケーションによって用いられるデータに関するデータ間の参照関係を示す参照情報を取得する。そして、テストデータ生成部180が、データの項目ごとに、テストデータ構造作成制御部130によって設定されたデータ種別の属性及び参照情報の参照関係のうち少なくとも一方に応じたテストデータを生成する。従って、実施例1に係るテストデータ生成装置100は、例えば、既存のテストデータとは類似しないテストデータを作成したり、データに関する定義情報やキー情報、或いはテーブル間の対応関係に関する情報がない場合にテストデータを作成したりすることができ、データ間の参照関係の整合性が維持されたテストデータを容易に作成することを可能にする。
また、実施例1によれば、データベース情報取得部141は、テスト対象の業務アプリケーションによって用いられるデータに関する情報を記憶するデータベース300から当該データのデータ項目の情報を取得する。また、データベース情報取得部141は、データベース300によって記憶されたテーブル定義又は利用者によって設定されたSQL文により参照情報を取得する。そして、テストデータ生成部180は、テーブル定義によって参照関係が定義されたテーブル間において、参照情報が含まれていない場合に、当該参照関係が定義されたテーブル間の参照情報として、データベース情報取得部141によって取得されたデータ種別に応じたデータを生成する。従って、実施例1に係るテストデータ生成装置100は、データ間の整合性を維持したテストデータを利用者が所望する分量だけ生成することを可能にする。
また、実施例1によれば、画面情報取得部142は、テスト対象の業務アプリケーションにおける画面のソースコードから当該画面に入力されるデータのデータ項目の情報を取得する。また、画面情報取得部142は、利用者によって設定されたSQL文により参照情報を取得する。従って、実施例1に係るテストデータ生成装置100は、データ間の整合性を確実に維持したテストデータを生成することを可能にする。
また、実施例1によれば、テストデータ構造入力受付部150がテスト内容を受け付ける。そして、データベース情報取得部141は、テストデータ構造入力受付部150によって受付けられたテスト内容が負荷テストであった場合に、テスト対象の業務アプリケーションによって用いられるデータに関する情報を記憶するデータベース300から当該データのデータ項目の情報を取得する。画面情報取得部142は、テストデータ構造入力受付部150によって受付けられたテスト内容が入力テスト又は表示テストであった場合に、テスト対象の業務アプリケーションにおける画面のソースコードから当該画面に入力されるデータのデータ項目の情報を取得する。また、データベース情報取得部141は、テストデータ構造入力受付部150によって受付けられたテスト内容が負荷テストであった場合に、データベース300によって記憶されたテーブル定義又は利用者によって設定されたSQL文により参照情報を取得する。そして、画面情報取得部142は、テストデータ構造入力受付部150によって受付けられたテスト内容が入力テスト又は表示テストであった場合に、利用者によって設定されたSQL文により参照情報を取得する。従って、実施例1に係るテストデータ生成装置100は、テスト内容に応じたテストデータを自動で生成することを可能にする。
例えば、従来技術では、データ項目の情報等に応じて、ランダムに大量のテストデータを生成することが可能であるが、データ間の整合性が確保されていない場合が多い。その結果、データ間に整合性が維持されていないテストデータを用いて業務アプリケーションのテストを行うこととなり、テスト時に問題が発生した際に、テストデータの問題なのか、業務アプリケーションの問題なのか判別することが困難になる場合があった。さらに、従来技術では、データ間の整合性が維持されていないために、作成されたテストデータを画面から登録する場合において、例えば、画面からの入力をプルダウンにより選択する必要があるにも関わらず、作成されたテストデータの入力がプルダウンでは選択できないという問題が発生する場合があった。
本実施例に係るテストデータ生成装置100では、データ間の整合性が維持されたテストデータを大量に生成することを可能にするとともに、テスト特性に合わせたテストデータを容易に生成することを可能する。その結果、本実施例に係るテストデータ生成装置100は、業務アプリケーションのテストを正確に行うことも可能にする。