PL/I プログラムのテストは、特にプログラムが論理的に複雑であったり、多数のモジュールを必要とする場合に、難しくなることがあります。それでも、このステップは省略しないでください。と言うのも、実稼働環境に移す前にプログラムのバグを検出し除去することが重要であるためです。
以下に示す 3 つのテスト方法は、すべての PL/I プログラムに適用できます。
- コード検査
- コード検査 (机上検査とも呼ばれる) では、コードの一部を選択し、それをコンピューターの視点で読みます。ソース・プログラムを印刷したコピー、またはソース・ファイルのオンライン表示を見て、プログラムのフローをたどります。入力データがある場合は、実際にありそうなデータを推測し、それを可変値に代入してください。計算があるときは、手で計算するか、電卓を使うなどして計算してください。多くの場合、コード検査によって、論理的な問題や構文エラー、コンパイラーで検出されないバグ (例:「n*2」でなく「n + 2」になっている) が明らかになります。
- データ・テスト
- プログラムが設計どおりに動作することを検査するには、そのプログラムにテスト・データを供給します。データ・テストの目的は、プログラムが、実稼働環境で扱わなければならないすべての可能なデータに対して例外 (ランタイム・エラーなど) を処理するかどうかを確認することです。したがって、プログラムをテストするには、多様なデータを使用する必要があります。
例えば、エラー (OVERFLOW 条件など) になることがわかっている両極端のデータをプログラムに処理させて、プログラムの反応を確認します。プログラムには、考えられるすべてのデータに対応できるようにエラー検査 (ERROR ON ユニットなど) を組み込む必要があります。
重要:
置換不可能なデータをテストに使用しないでください。また、テスト中のプログラムがアクセスできる範囲内に置換不可能なデータを保管しないでください。
- パス・テスト
- プログラムのテストに使用するデータを選択するときは、そのプログラムのすべてのパーツをテストするようなデータを選んでください。つまり、プログラムがいくつかのモジュールで構成されている場合、プログラムのテストに使用するデータは、それらすべてのモジュールを使用する必要があるデータでなければなりません。ある時点でプログラムがとると考えられるパスが 5 つある場合は、プログラムが 5 つのパスそれぞれを通るようなデータ集合を用意してください。
プログラムが複雑になるにつれて、考えられるすべてのパスの組み合わせに対応するデータをプログラムに供給することは事実上不可能になります。ただし、ここで重要なのは、代表的な範囲のパスを検査するテスト・ケースを選択することです。例えば、起こりうるすべての DO ループの反復を検査するのではなく、最初のケースと最後のケース、および中間の 1 ケースについてテストします。
バグは、プログラムをテストするときに発見されますが、これらのバグを除去するには、そのバグの再現が必要となる場合があります。したがって、プログラムをテストするときは、常に既知の状態から開始してください。例えば、バグが検出された場合、プログラム作成者は変数の値、使用されたコンパイル時オプション、メモリー内容などを知る必要があります。その手助けとして、PL/I には SNAP や PLIDUMP などの機能があります。
一般に、昨日は完璧に動作したプログラムに今日バグが現れるのは、マシンの状態に 1 つ以上の変化があったためです。したがって、PL/I プログラムをテストするときは、コンパイル時および実行時のマシンの状態を詳細に把握するようにしてください。
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)