アプリケーション開発の手引き

テスト環境のセットアップ

これ以降の節で説明するタスクの多くを実行するには、テスト環境をセットアップする必要があります。たとえば、アプリケーションの SQL コードをテストするには、データベースが必要です。

テスト環境には、以下のものを含めてください。

テスト・データベースの作成

テスト・データベースを作成しなければならない場合には、 CREATE DATABASE API を呼び出す小規模なサーバー・アプリケーションを作成するか、またはコマンド行プロセッサーを使用してください。コマンド行プロセッサーについてはコマンド解説書 を、 CREATE DATABASE API については管理 API 解説書 を参照してください。

テスト表の作成

必要なテスト表また視点を設計するには、まずアプリケーションのデータ要求を分析してください。表を作成するには、スキーマで CREATETAB 権限と CREATEIN 特権が必要です。代替権限については、 SQL 解説書 にある CREATE TABLE に関する情報を参照してください。

アプリケーションがアクセスするデータをリストし、それぞれのデータ項目がどのようにアクセスされるかを記述してください。たとえば、開発中のアプリケーションが TEST.TEMPL、TEST.TDEPT、および TEST.TPROJ 表にアクセスするとします。アクセスのタイプは、表 1 のように記録されることになります。

表 1. アプリケーション・データの記述
表または視点名 行の挿入 行の削除 列名 データ・タイプ アクセスの更新
TEST.TEMPL なし なし
EMPNO
LASTNAME
WORKDEPT
PHONENO
JOBCODE


CHAR(6)
VARCHAR(15)
CHAR(3)
CHAR(4)
DECIMAL(3)


あり
あり
あり

TEST.TDEPT なし なし
DEPTNO
MGRNO


CHAR(3)
CHAR(6)


TEST.TPROJ あり あり
PROJNO
DEPTNO
RESPEMP
PRSTAFF
PRSTDATE
PRENDATE


CHAR(6)
CHAR(3)
CHAR(6)
DECIMAL(5,2)
DECIMAL(6)
DECIMAL(6)


あり
あり
あり
あり
あり

アプリケーション・データ・アクセスの記述が完成したら、そのアプリケーションに必要なテスト表および視点を構成してください。

アプリケーションと一緒にデータベース・スキーマを開発している場合は、テスト表の定義が開発プロセス中に繰り返し詳細化されていきます。基本アプリケーションは普通、表を作成することもそれにアクセスすることもできません。それはデータベース・マネージャーが実際にはない表や視点を参照するステートメントをバインドできないからです。時間をかけずに表の作成および変更を処理するには、表を作成するために別個のアプリケーションを開発することを考慮してください。もちろん、いつでもコマンド行プロセッサー (CLP) を使用して対話的にテスト表を作成することができます。

テスト・データの生成

データを表に挿入するには、以下の方法のいずれかを使用してください。

INSERT ステートメントの詳細については、 SQL 解説書 を参照してください。 IMPORT、LOAD、および RESTORE ユーティリティーについては、 管理の手引き を参照してください。

ランダムに生成されたテスト・データを表に挿入するための技法は、次の SQL ステートメントに具体的に示されています。以下の CREATE TABLE ステートメントにあるように、 EMP 表には 4 つの列、ENO (従業員番号)、LASTNAME (名字)、HIREDATE (入社日付)、そして SALARY (従業員の給料) があるものとします。

  CREATE TABLE EMP (ENO INTEGER, LASTNAME VARCHAR(30),
                    HIREDATE DATE, SALARY INTEGER);

この表で、従業員番号には 1 からある数値、たとえば 100 までを、残りの列にはランダム・データを挿入するとします。このことを実行するには、次の SQL ステートメントを使用します。

INSERT INTO EMP
     -- 100 個のレコードを生成する。
WITH DT(ENO) AS (VALUES(1) UNION ALL
SELECT ENO+1 FROM DT WHERE ENO < 100 ) (1)
 
     -- 次に、DT 内に生成されたレコードを使用して、従業員レコードの
     -- 他の列を作成します。
SELECT ENO, (2)
    TRANSLATE(CHAR(INTEGER(RAND()*1000000)), (3)
              CASE MOD(ENO,4) WHEN 0 THEN 'aeiou' || 'bcdfg'
                              WHEN 1 THEN 'aeiou' || 'hjklm'
                              WHEN 2 THEN 'aeiou' || 'npqrs'
                                     ELSE 'aeiou' || 'twxyz' END,
                                          '1234567890') AS LASTNAME,
    CURRENT DATE - (RAND()*10957) DAYS AS HIREDATE, (4)
    INTEGER(10000+RAND()*200000) AS SALARY (5)
  FROM DT;
                                                     
SELECT * FROM EMP;

上記のステートメントについて説明します。

  1. INSERT ステートメントの最初の部分では、再帰副照会を用いて従業員番号を生成し、最初の 100 人の従業員用の 100 個のレコードを生成します。各レコードには、従業員番号が入ります。従業員数を変更するには、100 ではない数値を入力してください。
  2. SELECT ステートメントで LASTNAME 列を生成します。まず RAND 関数を使用して、最大 6 桁の長さのランダム整数を生成します。次に CHAR 関数を使用して、その整数を数字形式に変換します。
  3. 数字を英字に変換するために、TRANSLATE 関数を使用して、 10 の異なる数字 (0 から 9) をそれぞれの英字に変換します。 11 個以上の英字があるので、ステートメントは 5 つの異なる方式から変換方式を選択します。その結果、発音できる十分なランダム母音を持つ名前が生成され、その母音はそれぞれの変換で含められます。
  4. ステートメントは、ランダムな HIREDATE 値を生成します。 HIREDATE の値は、現在日付から 30 年前までに及んでいますが、現在日付から 0 と 10 957 間のランダム日数を減算して計算されます。 (10 957 は 30 年間の日数です。)
  5. 最後に、ステートメントは SALARY をランダムに生成します。給与の最小値は 10 000 で、この値に 0 〜 200 000 のランダムな数値が加えられます。

ランダムなテスト・データを生成するのに役立つプログラムの実例は、 sqllib/samples/c サブディレクトリー内の fillcli.sqc および fillsrv.sqc のサンプル・プログラムを参照してください。

開発中のすべてのユーザー定義関数 (UDF) を、テスト・データのプロトタイプとしたい場合もあります。 UDF を定義する理由と方法の詳細については、 ユーザー定義関数 (UDF) とメソッドの作成およびユーザー定義関数 (UDF) およびメソッドを参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]