RPGやCLを修正した後は、「正常に動いた」だけで終わらせず、最大桁、境界値、ゼロ、空白、DB更新、帳票、ジョブログ、再実行まで確認します。 この記事では、AS400 / IBM iの単体テストで見落としやすい観点を、確認順と表で整理します。
フル桁入力と境界値で見ること
フル桁入力とは、画面項目やファイル項目に入る最大桁数まで値を入れて確認するテストです。最大桁だけでなく、その前後や符号、小数、表示幅、受け渡し先まで見ます。
| 観点 | 入力例 | 確認すること |
|---|---|---|
| 最大桁 | 定義上入る最大長 | 画面、DB、帳票、CSVで切れないか |
| 最大桁-1 | 上限直前 | 編集コードや右寄せが変わらないか |
| 上限超過 | 最大桁+1 | 入力を拒否するか、エラーを返すか |
| ゼロ | 0、0.00 | ゼロ抑止、空白表示、計算結果 |
| 空白 | 未入力、全角・半角空白 | 必須チェック、初期値、トリム |
| 符号 | 正数、負数 | 符号位置、マイナス、CR/DB表記 |
| 小数 | 最小単位、丸め境界 | 小数桁、四捨五入、切り捨て |
| 日付 | 月末、年末、うるう日 | 妥当性、締め処理、表示形式 |
単体テストの確認順
- 通常の入力で基本動作を確認する
- 最大桁・境界値・ゼロ・空白を確認する
- 存在しないコードや権限不足などの異常系を確認する
- DB更新、帳票、CSV、外部連携の出力を確認する
- ジョブログと戻りコードを確認する
- 同じ処理を再実行して二重更新や重複送信がないか確認する
- 修正後の状態で証跡を取り直す
正常系が成立していない状態で異常系だけを細かく見ても、原因を分けにくくなります。まず通常業務が仕様通りに通ることを確認し、その後に境界値と異常系へ進みます。
画面入力で確認すること
| 項目 | 見る場所 | よくある不具合 |
|---|---|---|
| 商品・得意先コード | 画面、ファイル、検索処理 | 前ゼロ、末尾空白、桁不足 |
| 数量・単価・金額 | 入力欄、計算、帳票 | 桁あふれ、丸め、符号、編集表示 |
| 日付 | 入力チェック、締め、後続処理 | 月末、年末、存在しない日付 |
| 備考・名称 | 画面、DB、CSV | 全角・半角、文字切れ、文字化け |
| 選択区分 | 初期値、必須、分岐 | 未選択時に古い値が残る |
DB更新は画面結果だけで判断しない
- 更新前後の対象レコードを比較する
- 予定したファイル・ライブラリだけが更新されたかを見る
- 追加、更新、削除の件数が仕様と合うか確認する
- キー重複、ゼロ件、複数件で処理が変わらないかを見る
- エラー時にコミット・ロールバックが想定通りか確認する
- 受注から出荷・在庫・売上・請求など後続データへの影響を見る
DSPPFMでデータを見る場合も、対象ライブラリとメンバーを確認します。フィールド定義と実データの使い分けは DSPFFD・DSPPFMの違い を参考にしてください。
RPGとCLで追加して見る観点
| 対象 | 確認すること |
|---|---|
| パラメーター | 呼び出し元・呼び出し先で桁数、型、順番が一致しているか |
| 配列・データ構造 | 添字上限、初期化、要素数、オーバーレイ |
| ファイルI/O | CHAIN、READ、SETLL、READE、WRITE、UPDATEの条件 |
| CLの分岐 | MONMSG、戻りコード、後続CALL、異常時の終了 |
| ライブラリ | *LIBLと明示指定で参照先が変わらないか |
| 再実行 | 途中データ、二重更新、重複送信、再開位置 |
帳票・CSV・外部連携を確認する
- スプールの桁位置、改ページ、見出し、金額表示
- CSVの列順、区切り文字、引用符、改行、文字コード
- UTF-8、UTF-8 BOM付き、Shift-JIS、CCSIDの変換位置
- FTPのASCII/BINARY、IFSのパス、ファイル名
- 送信先、送信件数、再送時の重複防止
- 相手側エラー時の戻り値とジョブログ
CSVをExcelで開くと文字化けする場合は、データ内容より先に文字コードを判定します。確認順は AS400のCCSID・CSV文字化け確認 にまとめています。
件数を増やして確認する
1件で正常でも、件数を増やすと配列上限、処理時間、ページング、帳票改ページ、ファイルロックが表に出ることがあります。通常件数だけでなく、ゼロ件、1件、複数件、最大件数に近いケースを用意します。
| 件数 | 確認すること |
|---|---|
| 0件 | 空一覧、未作成ファイル、正常終了の扱い |
| 1件 | 最小構成で基本動作が通るか |
| 複数件 | ループ、改ページ、集計、並び順 |
| 上限付近 | 配列、処理時間、容量、タイムアウト |
| 重複データ | キー重複、二重送信、再実行制御 |
エビデンスと再テスト
| 残すもの | 分かるようにすること |
|---|---|
| 入力画面 | どの値を、どの条件で入力したか |
| DB更新前後 | どのレコードが、どう変わったか |
| 帳票・スプール | 表示、桁、件数、出力先が正しいか |
| CSV・外部連携 | 内容、文字コード、送信先、件数 |
| ジョブログ | 警告、エラー、戻りコード、実行順 |
| ソース・オブジェクト | テストした修正版と実行物が一致するか |
証跡を取った後にソースを直した場合は、その証跡を使い回しません。関係するケースを再実行し、修正後のプログラムで結果を取り直します。
Codexに手伝わせる場合
Codexは、境界値の洗い出し、テストデータ案、ソース差分から影響しそうな処理の整理、実行結果の比較に使えます。ただし、本番データ、顧客情報、接続情報、パスワード、APIキー、ソース全文を無条件に渡してはいけません。
RPG/CLの修正内容から単体テスト観点を作ってください。
確認対象: 入力、最大桁、境界値、DB更新、帳票、CSV、ジョブログ、再実行
本番情報や個人情報は含めず、確認手順と期待結果を表にしてください。
若手・後任者が同じ手順でテスト観点を作れるようにする法人向け支援は、AS400 / IBM i Codex研修の内容・料金 で確認できます。
単体テスト確認表
- 正常系が仕様通りに通った
- 最大桁、境界値、ゼロ、空白、符号、小数を確認した
- DBの更新先、件数、更新前後を確認した
- 帳票、スプール、CSV、外部連携を確認した
- ジョブログに想定外の警告・エラーがない
- ゼロ件、複数件、上限付近を確認した
- 再実行で二重更新・重複送信がない
- 修正後の状態で証跡を取り直した
参考
まとめ
RPGやCLの単体テストでは、正常系、フル桁入力、境界値、件数増加、DB更新、帳票、CSV、ジョブログ、再実行まで確認します。コンパイルが通ったことではなく、仕様通りに動き、後から説明できる証跡がそろったことを合格ラインにします。
