バッチインターフェースのプログラムは外部システムとの送受信も特徴ですが、根幹となるのは大量件数のデータをバッチ処理する点です。
経験があればテストケースを抽出するのは難しくありませんが、開発経験がなかったり画面機能を担当していた方は不慣れかもしれません。
本記事では、インターフェースプログラムの単体テストケースを抽出するための方針サンプルを紹介します。
Oracleデータベースの一般的な取り込みツールであるSQL*LoaderとPL/SQLについて個別に紹介します。
SQL*Loader
受け取ったデータをワークテーブルにロードするのに使われるSQL*Loaderは、以下の4ケースを試せばよいです。
- 0件データ 取り込みファイルが0件でワークテーブルも0件
- 1件データ 取り込みファイルとワークテーブルの各項目の一致を確認
- 正常データ2件 取り込みファイルとワークテーブルの件数と各項目の一致を確認
- 正常データ1件、エラーデータ1件 エラーデータが登録されず正常データは登録されることを確認
必須データやキー重複、桁型の不一致に関してはワークテーブルの定義で担保し、個々のテストでは検証不要としました。
PL/SQL
取り込み時の抽出絞り込みや変換処理を行うPL/SQLのプログラムはケース数としては増えます。
以下の3つの観点でケース抽出を行います。
- 処理ロジックに含まれる全ての分岐を網羅する
- 発行するSQLの結果が0件、1件、複数件のパターンを網羅する
- 複数件数のデータを用いたケースを設ける
1つ目の分岐網羅(C1)を方針にするところは、命令網羅(C0)では心もとなく、条件網羅(C2)までやろうとするときりがないというので現実解でした。インターフェースプログラムはデータのバリエーションを扱うところがキモになるのでC1は網羅しておきたいです。
また複数テーブルを結合したSQLを作成することも多いため、発行するSQLの結合条件などが間違っていないかを検証することも重要です。
複数件数のデータを使って検証する理由は、ループ処理に際して変数の初期化が正しく行われていることを検証するためです。また、複数件といっても数件ではなくデータベースコミット単位を超えるくらいの例えば5000件強のデータでテストしておくことも重要です。
パッケージソフトの取り込みツール
パッケージソフトが用意している取り込みツールがある場合は、以下の4ケースを試せばよいです。
- 新規データ登録
- 既存データ更新
- 既存データ更新(更新なしケース)
この時のパッケージソフトは論理削除が原則だったため、削除データも既存データ更新の一貫として扱いました。
終わりに
シンプルなインターフェースプログラムは左から右にデータを移送するだけかもしれませんが、往々にして処理ロジックは複雑になりがちです。
2個や3個ではない多数のテーブルを様々な条件で結合し、取得した項目を使って変換や計算を行うことは、緻密に設計したとしても設計バグやコーディングバグはゼロにはなりません。
テスト方針を共有して担当者の経験やスキルに依存せず品質が作り込めるのに役立てば幸いです。