正常系テストとか異常系テストとかふだん使ったりします。この本では、機能が働くテストを「正常系」、機能がエラーなどで最後まで働かないテストを「異常系」と表現しています。また、異常に対して正しく実行できたことを確認するテストとして「準正常系」という考え方も紹介されています。何気なく使っているけど、もしかしたら人(文化?)によって定義が異なるかもしれない用語を自分なりに整理してみました。
準正常系
エラーを検知して、それを結果として出すこと。僕の場合は、実装時(ユニットテスト時)ではなるべく最初に確認します。それは、因子の積集合(テスト空間と呼ぶこともある)があって、それを同値分割していくイメージです。たいていの場合は、無効同値クラスを削っていって、削っていって、最後に有効同値クラスがいくつか残ります。防御的プログラミングの視点を意識します。
正常系
機能が働き、正しい結果を期待通り出すこと。僕の場合は、実装時(ユニットテスト時)ではなるべく最後に確認します。準正常系を削った後に残った有効同値クラスを期待する結果でさらに同値分割します。一旦は考えうる同値分割を想像して、ズームアウトしてバランスをとります。
異常系
この本ではエラーによって最後まで機能を果たさないことを確認するテストですが、僕の場合は、実装とは直接関係しない因子と考えています。タイミングの問題やネットワーク状態、負荷など実行しにくい場合が多く、ユニットテスト時には確認しないことが多いです。準正常系や異常系とは異なり、ラルフチャートを思い浮かべて、因子抽出を心がけます。
また、一般的に異常系(あるいは無効値)は一つずつしか確認できないといいますが、すべての因子の無効値を組み合わせた場合は、異常系として確認します。
ピンバック: 同値分割・境界値分析の解説 | ソフトウェアテスト・テスト技法に関する情報サイト