(57)【要約】【課題】従来、スキーマ情報に依存せずに、かつパターンに沿ったデータを作成できる方法は存在するが、そのデータ生成方法において全ての市販のデータベース製品に汎用的に対応できる方法は存在せず、製品が異なる場合には、都度ツールを開発する必要が発生していた。【解決手段】前記課題を解決するため、本発明では、性能テストに使用する大量データを、その入力ファイルを出力するプログラムを自動生成することにより、汎用的かつ効率的に作成する。【選択図】図１
2009134662.tif 000002
【特許請求の範囲】
【請求項１】
性能テストで使用されるデータを、市販のデータベース製品への入力ファイルに着目す
ることにより、汎用的なデータ入力ファイルを出力するプログラムを自動生成することを
特徴とする性能テストデータ構築ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの性能テストの準備を効率化する技術である。その中でも、大量の
データの入力ファイルを出力するプログラミングソースを自動的に生成する技術である。
【背景技術】
【０００２】
システムの性能テストの準備を効率化する技術として、特許文献１が存在する。特許文
献１では、スキーマ情報を取得し、それを元にしてデータを作成する方法が開示されてい
る。より具体的には、スキーマ情報として、表名、列名、属性、桁数、制約の情報を抽出
し、それに加え、作成するデータパターンを入力することにより、そのパターンに沿った
データを作成することが記載されている。
【０００３】
【特許文献１】特開２０００−２０５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
性能テストで利用するデータの準備方法は、一般的に以下に２通りに分けられる。１点
目は、そのシステムが本番稼働しているシステムで既にデータが存在する場合には、その
本番データを使用する方法。但し、本番データが存在しないシステムについてはこの方法
は適用できない。２点目は、アプリケーション開発者が、データ要件に合わせデータを出
力するプログラムを開発する方法である。但しこの方法はアプリケーション開発者に想定
外の負担を与えてきた。
【０００５】
特許文献１では、この課題を解決すべく、スキーマ情報に依存せずに、かつパターンに
沿ったデータを作成できる方法を提示している。しかし、そのデータ生成方法は全ての市
販のデータベース製品に汎用的に対応できる方法は記載されておらず、製品が異なる場合
には、都度ツールを開発する必要が発生すると考えられる。
【課題を解決するための手段】
【０００６】
本発明では、性能テストで使用されるデータを、市販のデータベース製品への入力ファ
イルに着目することにより、汎用的なデータ入力ファイルを出力するプログラムを自動生
成する方法を提示する。
【発明の効果】
【０００７】
本発明により、汎用的なデータベース入力データファイルを作成することが可能となり
、市販のデータベース製品に依存することなく性能テストで必要となるデータを容易に作
成することが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態を詳細に説明する。図１は本発明を示すシステム構成図であ
り、図２は、入力データ項目ファイルを示すデータ図である。
【０００９】
図３、４、５は処理手順の実施の形態を示すフローチャートである。まず、図１の構成
図について説明する。構成図では、本発明を実装した際の処理の手順を説明する。本発明
の主要な機能は図１の３に示す「データベース格納プログラム（図１−１０）への入力フ
ァイル出力プログラム自動生成アプリケーション」である。このアプリケーションに性能
テストで使用するためのデータに関する要件情報を入力することにより、その要件を充足
する形式のデータを出力するプログラミングソースを自動的に生成することができる。以
下、使用する流れに従って説明する。使用者は、ハードウェア１（図１−１）上に保存さ
れている入力データ項目ファイル（図１−２）に、増幅するパターンを入力する。増幅す
るパターンは、以下５種類の中から選択する。一般的なデータアクセスソフトのデータへ
のアクセス方法は、データの種類の数、そして、データの値の拡散率に影響を受ける。下
記パターンによりその内容をほぼ網羅することが可能となる。つまり、このパターンを設
けることにより作成するデータ内容を本番データの内容へ近づけることが可能となり、性
能テストの信頼性の向上にも繋がる。例えば、日付などは、通常ある一定の日付が何万件
も存在する可能性は少ない。インターネットバンキングのデータベースで格納されている
利用者が入金した日付情報は、一定であるはずがなく、多くの種類の日付が存在するはず
である。この点は、下記のパターン（３）に該当する。また、入金した額もその都度異な
るはずであるが、インターネットバンキングで入金できる金額には上限があるため、その
上限以下の値を多く保存していることが予想することができる。これについては下記パタ
ーン（５）にて実現する。このような本番データ近いにデータの多様性を持たせることが
可能となる。
（１）一定値を設定する。
（２）数値をインクリメント設定する。
（３）日付をインクリメント設定する。
（４）指定した特定の数値を繰り返し設定する。
（５）指定した下限から上限までの間の数値をインクリメント設定する。
【００１０】
入力ファイル出力プログラム自動生成アプリケーション（図１−３）を実行することに
より、入力ファイル出力プログラムのソースファイル（図１−４）が、ハードウェア１（
図１−１）上に自動生成される。このソースファイルのアルゴリズムは図３に示すフロー
チャートの内容となる。これについては後述する。
【００１１】
このプロセスは、従来はアプリケーション開発者が手動で開発していた箇所となる。こ
のプログラムソースファイル（図１−４）を、ハードウェア２（図１−５）上に転送する
。ハードウェア２（図１−５）はハードウェア１（図１−１）と同一でも可能であるが、
スペックの高いハードウェアを使用することにより時間の短縮が可能となる。プログラム
ソースファイル（図１−４）をコンパイルし、プログラムモジュール（図１−８）を作成
する。このプログラムモジュールを実行すると、要件に沿ったカンマ区切りファイル(図
１−９)を出力する。このカンマ区切りファイル（図１−９）を入力ファイルとして、デ
ータベース格納ツールにより、データベースに入力ファイルのデータを格納する。
【００１２】
次に図２により、要件を確定させるための入力データ項目について説明する。「テーブ
ル名」にはデータベース上のデータを格納する対象テーブルを記載する。「データベース
識別情報」は、データベースを識別するための情報を格納する。「作成レコード数」には
、作成するデータのレコード数を設定する。「論理項目名」には、テーブル上での項目の
日本語名称を記載する。「物理項目名」には、テーブル上での項目名を記載する。この名
前は、実際にデータベース管理ソフトが識別可能な情報を入力する。「型」にはデータの
形式をデータベース管理ソフトに合わせて設定する。「パターン」には、増幅するパター
ンを入力する。パターンの設定は上述した５通りの方法が存在する。
【００１３】
「倍数」に数値を設定することによって、インクリメントの幅を調整することができる
。指定しない場合には、デフォルト値として１を採用する。例えば、「倍数」に２を設定
した場合には、上述した「パターン」項目にて「S」を指定していると、２毎にインクリ
メントしていくこととなる。
【００１４】
「設定値」には最終的にデータベースに入力したい数値を設定する。「パターン」毎に
入力方法は下記の通りとなる。
（１）「パターン」が未入力の場合
一定値としたい数値を設定する。
（２）「S」を指定した場合
インクリメントを開始する初期値を設定する。
（３）「D」を指定した場合
インクリメントを開始する初期日付を設定する。
（４）「P」を指定した場合
繰り返しする数値を設定する。
（５）「R」を指定した場合
インクリメントする範囲の最小値と最大値を設定する。
【００１５】
次に、図３、４、および５のフローチャートにより、図１−３で示した「入力ファイル
出力プログラム自動生成アプリケーション」の処理の流れを説明する  図２で示した入力
データ項目ファイルをオープン（ステップ１０１）し、入力ファイルの「テーブル名」の
データを読み込み、データが存在するか否かを確認する（ステップ１０２）。テーブル名
のデータが存在しない場合は処理を中止する。テーブル名のデータが存在する場合は、こ
のテーブル名を使用し、プログラムソースを出力するファイル名を決定し、このファイル
のファイルポインタ作成（ステップ１０３）し、追記するためにそのファイルポインタを
オープンする（ステップ１０４）。
【００１６】
本例では、入力ファイルのテーブル名に「EXAMPLE_TABLE」と記載されているので、「E
XAMPLE_TABLE」を読み込み、プログラムソースを出力するファイルは、EXAMPLE_TABLE.プ
ログラム拡張子となる。
【００１７】
プログラムの定型ヘッダ部を出力ファイルに書き込む（ステップ１０５）。定型ヘッダ
とは、各プログラミング言語を記述する際に必要となる宣言文に該当する。
【００１８】
図２で示した入力データ項目ファイルの「作成レコード数」を読み込み、作成レコード
数_変数へ格納する（ステップ１０６）。本例では、1,000件となっているので、この値を
作成レコード数_変数へ格納する。
【００１９】
変数宣言部の作成処理（ステップ１０７）は図４を用いて説明する。入力データ項目フ
ァイルより「物理項目名」を読み込む(ステップ２０１)。読み込んだ物理項目名を物理項
目名_変数へ格納(ステップ２０２)する。本例では、「物理項目名」の先頭にある「TRIHIKI_NO」を読み込み、これを物理項目名_変数へ格納する。
【００２０】
入力データ項目ファイルより「型」を読み込み、型_変数へ格納（ステップ２０３）す
る。本例では、「TRIHIKI_NO」の「型」としては「CHAR」を読み込む。格納された型_変
数の内容を出力可能な情報であるかを条件指定により確認（ステップ２０４）する。出力
可能な情報かどうかは、データベース格納プログラム（図１−１０）の制約に従う。デー
タベース格納プログラムで入力文字として許容しない型があれば、この型をステップ２０
４にて条件指定する。
【００２１】
対象外の「型」である場合には、条件不一致とし、次の「物理項目名」を読み込む（ス
テップ２１０）。またステップ２０４により出力すべき項目の条件と一致した場合には、
「改行コードの変換」（ステップ２０５）処理を行う。次の図２の「物理項目名」が存在
するまで上述の処理を繰り返し実行する。すべての「物理項目名」の読み込みが終了した
場合には、「値出力ループの作成処理」（ステップ１０８）へ進む。本例では、「TRIHIK
I_NO」の読込から開始し、「B_NO」までの17レコードをループして読み込む処理をする。
【００２２】
「値出力ループの作成処理」について図５を用いて説明する。入力データ項目ファイル
の「倍数」に値が存在するかを確認する（ステップ３０１）。「倍数」に値が存在する場
合には、「倍数」の数値を倍数_変数の初期値１と乗算した結果を、再度倍数_変数へ格納
する（ステップ３０２）。本例では、4つ目のレコード「A_NITIJI」の「倍数」に3が存在
する。この場合、倍数_変数は、初期値１に3が乗算され、3が入力される。この倍数_変数
をループ関数の増加分として使用することによって、日付を3日間隔で出力することが可
能となる。ループ関数では、１ループが完了する毎に、この倍数_変数を加算して次のル
ープを実行する。本例では、3,6,9,12と倍数_変数の3を順次カウントアップしていく。「
倍数」指定が無い場合には、倍数_変数にはデフォルト値を入力する。本例では、1つ目の
レコード「TRIHIKI_NO」の「倍数」には値は存在しない。従って、「TRIHIKI_NO」につい
ての倍数_変数は初期値１のままとなる。
【００２３】
次に、「パターン」を読み込み（ステップ３０３）、未入力の場合には、入力データ項
目ファイルの設定値を固定値として設定する関数を出力する（ステップ３０５）。本例で
は、2つ目のレコードの「A_FLG」の「パターン」には値は存在しない。従って、「設定値
」に設定されている「１」をレコード件数「1000」回繰り返して出力する関数を作成する
。
【００２４】
「パターン」が「S」の場合には、入力データ項目ファイルの設定値を、倍数_変数を使
用して以下のように増幅させる。１ループ処理毎に入力データ項目ファイルの設定値を「
倍数_変数」分増加させ出力する関数を生成する（ステップ３０７）。尚、ループは「レ
コード件数」分繰り返し処理する。この処理を以下カウントアップループと呼ぶこととす
る。「本例では、１つ目のレコードの「TRIHIKI_NO」の「パターン」値が「S」が設定さ
れている。従って、「設定値」に設定されている「9000000001」を初期値とし、レコード
件数「1000」回数分、１ずつインクリメントする出力する関数を作成する。
【００２５】
「パターン」が「D」の場合には、入力データ項目ファイルの設定日付を倍数_変数にて
日付をカウントアップループする関数を出力する（ステップ３０９）。本例では、４つ目
のレコードの「A_NITIJI」の「パターン」値が「D」が設定されている。従って、「設定
値」に存在する「2006/10/03,2006/11/01」を読みこみ、初期日付を2006年10月3日と設定
し、最大日付を2006年11月1日と設定する。また、「倍数」の値には「３」が存在するた
め、増加する間隔が３日であるため、初期日付2006年10月3日から３日ずつ2006年11月1日
まで進める関数を作成する。尚、日付が2000年11月1日に達した場合には、再度開始日付
である2006年10月3日から日付を出力する。
【００２６】
「パターン」が「P」の場合には、入力データ項目ファイルに指定されている複数のイ
ンプット情報からの数値をループして作成する関数を出力する（ステップ３１１）。本例
では、１２番目のレコードの「A_STA」の「パターン」値が「P」が設定されている。従っ
て、「設定値」に存在する「1,2,3,4」を読みこみ、この4つの数値を1000件順番に繰り返
す関数を作成する。
【００２７】
「パターン」が「R」の場合には、入力データ項目ファイルの入力値(最小値と最大値)
の範囲の中で倍数_変数を用いカウントアップする関数を出力する（ステップ３１３）。
本例では、７番目のレコードの「C_EVNT_NO」の「パターン」値が「R」が設定されている
。従って、「設定値」に存在する「901,1000」を読みこむ。初期値を901、最大値を1000
とし、初期値から１ずつ最大値1000まで順次増加出力する関数を作成する。尚、最大値に
達し場合には、再度初期値901に戻り処理を繰り返す。このパターンの関数の順番は上記
に限定されることはなく、入れ替え可能である。
【００２８】
次の読込設定値が存在しない場合には処理を中止し、後処理（ステップ１０９）を実行
して完了する。後処理は、各プログラミング言語に依存するが、主にヘッダで指定した関
数のオープンの対となるクローズ処理を出力する。
【図面の簡単な説明】
【００２９】
【図１】システム構成図。
【図２】入力データ項目ファイルを示すデータ図。
【図３】処理手順の実施の形態を示すフローチャート（全体編）。
【図４】処理手順の実施の形態を示すフローチャート（変数宣言部の作成処理編）。
【図５】処理手順の実施の形態を示すフローチャート（値出力ループの作成処理編）。
【符号の説明】
【００３０】
１…ハードウェア１、パソコン等、２…入力データ項目ファイル、３…入力ファイル出
力プログラム自動生成アプリケーション、４…プログラムソースファイル、５…ハードウ
ェア２、サーバ等、６…プログラムソースファイル（４と同）、７…プログラムコンパイ
ラ、８…プログラムモジュール、９…カンマ区切りファイル、１０…データベース格納プ
ログラム、１１…データベース。
【図１】
2009134662.tif 000003
【図２】
2009134662.tif 000004
【図３】
2009134662.tif 000005
【図４】
2009134662.tif 000006
【図５】
2009134662.tif 000007