大量データを用いたシステム動作テストの注意点

データベースに大量のレコードを投入した状態で、
フロントエンドの動作を検証・テスト・修正する際の注意点について

-----

(1) 件数が少ない場合は Excel 等でデータを生成してもよい。
ただし Excel はバージョンごとに生成できる行数に差があるので注意する。

(2) リレーショナルなデータを大量生成する場合は Access + VBA
RDBMS + ODBC などデータベースそのものとデータベース API
併用できる環境であることが望ましい。

CSV データを手早く生成したいのであれば
スクリプト系言語を用いても構わないが、
ノン・リレーショナルなデータに限る。
リレーショナルなデータを生成する場合は
メンテナンス性を考慮し前者の環境を用いるのが望ましい。

(3) 最終的なアウトプットデータを
csv 形式にして RDBMS 側からインポートするか
INSERT 文形式にしてスクリプトとして実行するかは
個々のデータベースによってパフォーマンスが異なるため
事前に調査した上で方針を決定する。

(4) 以下のようなスケーラビリティを考慮してデータ生成コードを書く。

・テストレコード数の増減
・テストレコードにおける値の条件の増減
・テストレコードを格納するテーブル間のリレーションの変更

(5) 日付データは文字列で生成せず、極力 Date 型を用いる。
後ほど日付の計算などが発生しうるであろうことを想定する。

(6) NULL の扱いに注意する。
例えば boolean 型のフィールドに対して Yes/No/NULL の
3 つの状態が存在することなどを考慮する。

(7) リレーショナルなデータを作成する場合、
特定のテーブルのレコードを参照しながら
テストデータを作成することになるため
生成順序を間違えないように注意する。

(8) データ生成に Access のみを用いる場合、
ADO よりも DAO の方が高速である。

(9) データ生成用データベースおよびスクリプトは
同じ環境(ローカル)で稼働させる事が望ましい。

(10) データパターンよりもデータ量に重きを置く場合、
フロントエンドの動作に影響が無い部分のデータ生成については
無理に整合性を取らない方が生成効率を向上させられる場合もある。

-----

パフォーマンスが良いとは言えませんが、
実質 200~300万行ぐらいであれば Access + VBA でも
問題ないかと思われます。

また、リレーションを考慮しながら大量のデータを
作成する以上、生成にある程度まとまった時間を
必要とするため、可能であればサーバーサイドのみで
完結するような実装をするのも 1 つの手です。
(サーバ側のスクリプト系言語+ストアドプロシージャ等)