正常系・異常系とは?テストで「うまくいく場合」と「失敗する場合」をやさしく解説

AIに書かせたテスト、全部「うまくいく場合」だけになっていませんか

「テストを書いて」とAIに頼んだら、きれいなテストがずらっと並んで、しかも全部グリーン。 一見そろっているように見えるのに、本番では想定外の入力であっさり落ちた——。そんなとき関係しているのが、正常系・異常系という考え方です。

正常系・異常系とは?ひとことで言うと

正常系とは、想定どおりの入力で「うまくいく場合」のことです。異常系とは、不正な入力や想定外の状況で「失敗する・うまくいかない場合」のことを指します。 たとえば「年齢を入れたら料金区分を返す」処理なら、20歳を入れて正しい区分が返るのが正常系、マイナスの値や文字を入れたときにきちんとエラーになるかを見るのが異常系です。テストでは、この両方を確かめてはじめて「ちゃんと動く」と言えます。

左で想定どおりの入力がなめらかに受付を通る正常系と、右で変な形の入力を門番がきちんと止める異常系を対比したイラスト
正常系は「うまくいく場合」、異常系は「失敗・想定外の場合」。両方を確かめてはじめて「ちゃんと動く」と言える

開発現場ではどこで使う?

実際の開発では、こんな場面で顔を出します。

「テスト書いた?」と聞かれたとき、たいてい暗に問われているのは「異常系まで見た?」のほうだったりします。

なぜ大事なのか

正常系・異常系を分けて考えられると、自分のテストの「どこが薄いか」が見えるようになります。 うまくいく場合だけを確かめたテストは、きれいな入力では通りますが、現実に困るのは想定外の入力が来たときです。異常系を意識しておくと、本番で初めて出会うはずだったエラーを、手元で先に見つけられます。「全部通った」の中身が、正常系だけなのか両方なのかを区別できるだけで、品質の話が一段しやすくなります。

具体例で見る

100点満点の点数を受け取って合否を返す処理を考えてみます。 正常系は「60点で合格、59点で不合格」のように、想定どおりの入力で正しく分かれるか。異常系は「マイナスの点数」「101点」「空欄」「文字が入った」ときに、きちんとエラーや想定どおりの扱いになるか、です。AIに任せると前者ばかりが並び、後者がごっそり抜けることがよくあります。

境界値(境目の値)も合わせて覚えておく

正常系・異常系とセットで出てくるのが境界値です。これは「うまくいく」と「失敗する」のちょうど境目にある値のこと。さきほどの例なら、合格ラインの「59点・60点・61点」がそれにあたります。バグは、こうした境目でいちばん起きやすいものです。「ちょうど上限」「1つ超えたとき」「空のとき」「0件のとき」——この境目を意識すると、異常系の抜けにも気づきやすくなります。

つまり現場では?

正常系・異常系を見るということは、「うまくいくこと」だけでなく「ちゃんと失敗してくれること」まで確かめる、ということです。AIが出してきたテストが、どちらに偏っているかを見る習慣をつけると、抜けに早く気づけます。

知らないとどう困る?

この区別を知らないと、AIが並べた正常系だけのテストを見て「テストは万全」と思い込んでしまいます。 うまくいく場合しか試していないテストは、想定外の入力に対して無防備です。結果、本番やリリース後に初めてエラーが見つかり、かえってやり直しが増えてしまうことがあります。

よくある勘違い

明日やるならこれ

次にAIへテストを頼んだら、出てきた一覧をざっと見て「これ、正常系ばかりじゃないか?」と一度だけ自問してみましょう。偏っていたら「異常系と境界値も観点ごとに出して」と頼み直す——この一手間だけで、抜けはぐっと減ります。

ひとことで言うと

正常系・異常系とは、テストでいう「うまくいく場合」と「失敗・想定外の場合」のこと。AIに任せると前者に偏りがち、と覚えておくと安全です。

関連用語

関連記事