COBOLのテストデータとテストケースの作り方を基礎から解説!初心者でも安心の入門講座
生徒
「COBOLでプログラムを書いたあと、どうやって動作確認すればいいんですか?」
先生
「それにはテストデータとテストケースを使って、プログラムが正しく動くかをチェックします。」
生徒
「テストデータって、どうやって作ればいいんですか?考え方もわかりません……」
先生
「大丈夫です。テストデータの作り方と、テストケースの考え方をやさしく丁寧に説明しますね。」
1. テストデータとは?
テストデータとは、COBOLのプログラムに入力するための「確認用のデータ(数字や文字など)」のことです。
たとえば、「年齢を入力して、20歳以上なら『成人です』と表示する」プログラムなら、入力する年齢(10、20、25など)がテストデータになります。
このテストデータを使って、プログラムが正しく反応するかを確認します。
2. テストケースとは?
テストケースとは、テストデータを使って「どのような条件で、何を確認するのか」を整理した表やリストのことです。
例えば、年齢が19のときに「成人ではありません」と表示されるか、20のときに「成人です」と表示されるかをチェックするのがテストケースです。
「こういう入力をしたら、こうなるはず」と想定し、その通りになるかを見るのがテストです。
3. テストデータの作り方の基本
テストデータを作るときは、次のような種類を考えて準備するとよいです。
- 普通のデータ:もっともよく使う、一般的な入力。
- 境界(きょうかい)のデータ:条件ギリギリの値(たとえば19歳や20歳など)。
- おかしなデータ:数字ではない文字、マイナスの数、大きすぎる数など。
- 空のデータ:何も入力していない状態。
これらを考えておくことで、いろいろな状況でもプログラムが正しく動くかを調べられます。
4. テストケースの考え方
テストケースを作るときは、「入力(インプット)」と「結果(アウトプット)」をセットで考えます。
たとえば、次のように表にしてみると、わかりやすいです。
| テスト番号 | 入力する年齢 | 期待される結果 | 説明 |
|---|---|---|---|
| 1 | 25 | 成人です | 一般的なケース |
| 2 | 20 | 成人です | 条件ぎりぎり |
| 3 | 19 | 成人ではありません | 条件未満 |
| 4 | 空欄 | エラーになる、または再入力 | 何も入力しなかった場合 |
| 5 | abc | エラーになる | 文字を入力した場合 |
5. COBOLのサンプルコードでテストしてみよう
ここでは、年齢によって「成人かどうか」を表示するプログラムを使って、テストデータを当てはめて確認してみます。
IDENTIFICATION DIVISION.
PROGRAM-ID. CHECK-AGE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AGE PIC 99 VALUE ZEROS.
01 USER-INPUT PIC X(3).
PROCEDURE DIVISION.
DISPLAY "年齢を入力してください(例:20): "
ACCEPT USER-INPUT
MOVE FUNCTION NUMVAL(USER-INPUT) TO AGE
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
ELSE
DISPLAY "あなたは成人ではありません。"
END-IF
STOP RUN.
このプログラムでは、ACCEPTを使って年齢をキーボードから入力し、それをIF文で判定しています。
例えば、「25」と入力すると、次のように表示されます。
あなたは成人です。
6. 入力ミスや例外もチェックしよう
テストでは、想定外の入力(例外)にも対応できるようにすることが大切です。
たとえば、「abc」や空欄、「999」などの極端な値が入力されたときに、どう反応するかを見ておきましょう。
実際の業務では、こうしたテストをしておかないと、使う人がミスをしたときにシステムが止まってしまうこともあります。
7. テスト項目のチェックリストを作ろう
テストの見落としを防ぐためには、チェックリストを作るのがオススメです。
チェックリストには、次のような項目を入れておくと安心です。
- 正しい数値を入れたとき、期待どおりの表示になるか
- 境界の値(19、20など)で正しい判断がされるか
- 空欄・文字などの不正入力でもエラーにならないか
- 大きすぎる数でも安全に処理されるか
- すべてのパターンで
IF文が正しく動くか
こうした確認をすると、見逃しが少なくなり、安心してプログラムを動かせます。
8. 手作業と自動化のちがい
初心者のうちは、1つずつ入力してテストする「手作業のテスト」でOKです。
ただし、後になってテストする回数が増えたら、自動でテストする「自動化テスト」も覚えると便利になります。
まずは手作業でテストデータを自分で入力し、表示される内容が合っているかを見ていく練習をしましょう。
まとめ
COBOLのテストデータとテストケースの作り方を学んできた内容を振り返ると、システム開発において「事前にどれだけ想定して準備できるか」が非常に重要であることがよく分かります。とくにCOBOLのように業務処理を正確に実行することが求められる言語では、テストデータの種類やテストケースの網羅性が、プログラムの品質を大きく左右します。日常的な入力例だけではなく、境界値や異常値、空欄や文字列など、実際の現場で起こりうるさまざまな状況を想定してテストデータを準備することで、プログラムの信頼性と安全性を高めることができます。 また、テストケースを一覧表として整理することは、初心者だけでなく経験者にとっても有効な手法です。テスト番号ごとに入力と期待される結果を明確にしておくことで、どのケースを確認済みかが一目で分かり、作業の抜け漏れを防ぐことができます。業務システムでは人の入力ミスが起きやすいため、「正常」「境界」「異常」「空欄」の四つの視点でデータを準備することが基本となります。 さらに、実際のCOBOLコードとテストデータを照らし合わせながら確認することで、IF文の動きやNUMVAL関数の役割など、プログラムの仕組みも自然と理解が深まります。次のサンプルは、入力された年齢が成人かどうかを判定するテスト向けプログラムで、テストケースとともに実際の動きを確認する際に役立ちます。
テスト確認用サンプルプログラム
IDENTIFICATION DIVISION.
PROGRAM-ID. AGE-TEST-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-AGE PIC 99 VALUE ZERO.
01 INPUT-VALUE PIC X(3).
PROCEDURE DIVISION.
DISPLAY "年齢を入力してください(例:19、20、abc、空欄): "
ACCEPT INPUT-VALUE
IF INPUT-VALUE = SPACE OR INPUT-VALUE = "" THEN
DISPLAY "入力が空欄です。正しい数値を入れてください。"
ELSE
MOVE FUNCTION NUMVAL(INPUT-VALUE) TO USER-AGE
IF USER-AGE >= 20 THEN
DISPLAY "成人です。"
ELSE
DISPLAY "成人ではありません。"
END-IF
END-IF
STOP RUN.
このプログラムは、正しい数値だけでなく「空欄」「文字列」「境界値」などのテストデータを入力して動きを確認するのに適しています。テストケースの設計によっては、例えば「99」や「00」などの特殊な値を入れて、IF文が意図通りに動作しているか確認することも大切です。 また、テストはただ動かすだけではなく、「期待される結果と一致しているか」「例外が正しく処理されているか」「変数の型や桁数に問題がないか」など多角的なチェックが必要です。こうした積み重ねが、誤りの少ない堅牢なCOBOLプログラムにつながります。 初心者のうちは手作業で確認するだけでも十分ですが、テスト件数が増えてくると自動化したい場面も出てきます。まずは正しいテストデータを作成し、それに沿って確認する習慣を身につけることが上達への第一歩です。業務システムではテストが品質を左右するため、テストデータやテストケースを丁寧に作成する姿勢が非常に重要になります。
生徒
「テストデータって、ただ何となく作ればいいものじゃなくて、いろいろな種類が必要なんですね!」
先生
「その通りです。普通の入力だけでなく、境界値や例外も含めて準備することで、プログラムの弱い部分を見つけることができます。」
生徒
「テストケースを表にする方法がすごく分かりやすかったです。なにを確認するのかが一目で分かりますね!」
先生
「そうですね。テストの可視化はとても大切です。ひとつひとつの入力に対して、どういう結果が出るべきか整理することで、ミスを減らすことができます。」
生徒
「これからは境界値や異常値も意識してテストデータを作ってみます!」
先生
「良い心がけです。テストはプログラムの品質を守る重要な工程ですから、丁寧に作成していきましょう。」