アンチパターンとしての正常系・異常系というテストタイプ
僕はテスト会社に所属しているので、複数の、背景が異なるプロジェクトに参画したことがあります。その中で、正常系、準正常系、異常系、ゴールデンパス、ハッピーパス、ど正常などいろいろなテストタイプのような用語に出会ってきました。その用語についてのお話です。
結論としては、名前付けは自由。しっかり定義だけはしよう。とはいっても、名は体を表すので、誤解を生みにくい名前がいいと思う。です。
今回は、僕がこれまで一番触れることが多かった「正常系・異常系」でお話ししますが、上記の他の用語でも上記結論は同じです。
僕がこれまで見たことのある正常系の定義は以下です。
・要求仕様書に書いてあるものはすべて正常系
その理由は、仕様書に書いてあるということは、例外等であっても通常の運用で発生しうることで、その製品としては「正常なとき」としてふるまう必要があるからである。
これは「正常」という言葉を環境、入力やその時のふるまいについて、「想定しうる」と捉えていると思われます。
・ユースケース記述の基本パスが正常系
これはわかりやすいですね。ユースケース記述のルールに則っているのでこの定義があればブレることはないと思います。ちなみに、代替パスまでを正常系とする、というところもありました。
・製品内部、製品外部双方に異常がないケースが正常系
製品内部に異常があるケースは異常系、製品外部に異常があるケースは準正常系
とそこでは定義していました。「異常」の定義は厳密ではなかったので、どれだけ異常が発生しやすいかということは考慮されていませんでした。
・場合によって使い分ける
これがいちばん賢い使い方かもしれません。(おすすめするとは言っていません)
特定のマイルストーンに対して「正常系を完了させる」と握っておいて、そのあとに進捗状況に応じて正常系の範囲を変えるということです。
これぐらいです。まとめると、要求事項なのかそうではないのか、作り手の認識における「通常」かそうでないか、使われる度合い、重要度、などが絡み合って、正常系か異常系かが決まることが多そうです。
で、それらが混ざり合っているのであれば、明確に分けてテストタイプを新たに定義した方がいいですよね、という話でした。
人によって「何が正しいか」の認識が違うのだから、正常系なんて用語は定義なしでは成立しないですよねぇ。