テストの種類・通信プロトコル処理での準正常系テスト

2020年9月23日テスト品質

通信プロトコルの処理をするコードでの準正常系と異常系

組み込み系ソフトでも使う事が多くなってきた通信プロトコル処理での準正常系テストとは、プロトコルで定義されたエラー処理の動作を確認するテストです。と言う事は、異常系テストとはプロトコルで定義されていないエラーに対する動作を確認するテストとなります。

例として、以下の様な電文(通信するデータ)を送り手と受け手が相互に交換する疑似的な通信プロトコルを想定してみましょう。

①要求コマンド ②応答ステータス ③データ ④チェックコード

この通信プロトコルでは、送り手が①の要求コマンドを指定した電文を作って、それを受け手に送り付けます。受け手はこれに対して②の応答ステータスや③のデータを設定した電文を作って、それを送り手に送り返します。各々の電文の最後にはチェックコードが付いていて、通信路の途中で①から④までの通信データが壊れていない事を確認する事ができるようになっていると想定します。

エラーが起きていない時のプロトコル処理は正常系

このような通信プロトコルでは、①と②の要求コマンドと応答ステータスのやりとりが、定義された順番通りにエラーなく進んで③のデータが送り手に返される処理がまず定義されています。ここが、このプロトコルの提供する機能を定義した部分で、正常系処理の定義になります。

定義されたエラーが起きた時のプロトコル処理は準正常系

次に、通信の途中でなんらかのエラーが発生した時にどんな手順でどんな対応をするのかについても、②の応答ステータスの中にエラーステータスとして定義されていて、各々のエラーステータス毎に対応の内容や手順が決められています。これは、定義されたエラーに対する処理なので準正常系処理の定義です。例えば通信の途中でタイムアウトが起きたので再送によりもう一度データを送り直すとか、再送を3回繰り返したけど正しくデータが遅れなかったので再送を諦めるとか、いろいろな予め定義されたエラー処理が、準正常系処理として定義されています。

定義されていないエラーが起きた時の処理は異常系

通信プロトコルとしては①の要求コマンドと②の応答ステータスの組み合わせで定義されている正常系処理と準正常系処理として定義してある手順のみが、そのプロトコルで処理できる範囲です。それ以外については、通信プロトコルでは何も決められていません。しかし実際には、通信路のハードウエアの誤動作やハードウエアを制御すドライバソフトのバグ等のために、②の応答ステータスにプロトコルとして定義されていない値が設定される場合も在りえます。 これは、プロトコルには定義されていない異常な状態です。そして、プロトコルに定義されているかいないかに関係なく、実際のエラーは起こり得ます。

通信プロトコルに対する正常系テストでは、正常系処理として定義された手順が定義の通りに動作する事を確認し、準正常系テストでは準正常系処理として定義された手順が定義の通りに動作する事を確認します。そして異常系テストでは、正常系処理にも準正常系処理にも定義されていない、異常な状態が起きた時の動作を確認します。

(次の記事)テストの種類・状態遷移での準正常系テスト に続く
(前の記事)テストの種類・正常系と異常系と準正常系 に戻る
 テストの記事の先頭 に戻る