正常系・異常系とは?テストで「うまくいく場合」と「失敗する場合」をやさしく解説
AIに書かせたテスト、全部「うまくいく場合」だけになっていませんか
「テストを書いて」とAIに頼んだら、きれいなテストがずらっと並んで、しかも全部グリーン。 一見そろっているように見えるのに、本番では想定外の入力であっさり落ちた——。そんなとき関係しているのが、正常系・異常系という考え方です。
正常系・異常系とは?ひとことで言うと
正常系とは、想定どおりの入力で「うまくいく場合」のことです。異常系とは、不正な入力や想定外の状況で「失敗する・うまくいかない場合」のことを指します。 たとえば「年齢を入れたら料金区分を返す」処理なら、20歳を入れて正しい区分が返るのが正常系、マイナスの値や文字を入れたときにきちんとエラーになるかを見るのが異常系です。テストでは、この両方を確かめてはじめて「ちゃんと動く」と言えます。

開発現場ではどこで使う?
実際の開発では、こんな場面で顔を出します。
- 単体テストやテストケースを考えるとき
- 入力フォームやAPIで「変な値が来たらどうするか」を決めるとき
- レビューで「異常系は足りてる?」と確認するとき
- AIにテストのたたき台を作らせて、抜けを補うとき
「テスト書いた?」と聞かれたとき、たいてい暗に問われているのは「異常系まで見た?」のほうだったりします。
なぜ大事なのか
正常系・異常系を分けて考えられると、自分のテストの「どこが薄いか」が見えるようになります。 うまくいく場合だけを確かめたテストは、きれいな入力では通りますが、現実に困るのは想定外の入力が来たときです。異常系を意識しておくと、本番で初めて出会うはずだったエラーを、手元で先に見つけられます。「全部通った」の中身が、正常系だけなのか両方なのかを区別できるだけで、品質の話が一段しやすくなります。
具体例で見る
100点満点の点数を受け取って合否を返す処理を考えてみます。 正常系は「60点で合格、59点で不合格」のように、想定どおりの入力で正しく分かれるか。異常系は「マイナスの点数」「101点」「空欄」「文字が入った」ときに、きちんとエラーや想定どおりの扱いになるか、です。AIに任せると前者ばかりが並び、後者がごっそり抜けることがよくあります。
境界値(境目の値)も合わせて覚えておく
正常系・異常系とセットで出てくるのが境界値です。これは「うまくいく」と「失敗する」のちょうど境目にある値のこと。さきほどの例なら、合格ラインの「59点・60点・61点」がそれにあたります。バグは、こうした境目でいちばん起きやすいものです。「ちょうど上限」「1つ超えたとき」「空のとき」「0件のとき」——この境目を意識すると、異常系の抜けにも気づきやすくなります。
つまり現場では?
正常系・異常系を見るということは、「うまくいくこと」だけでなく「ちゃんと失敗してくれること」まで確かめる、ということです。AIが出してきたテストが、どちらに偏っているかを見る習慣をつけると、抜けに早く気づけます。
知らないとどう困る?
この区別を知らないと、AIが並べた正常系だけのテストを見て「テストは万全」と思い込んでしまいます。 うまくいく場合しか試していないテストは、想定外の入力に対して無防備です。結果、本番やリリース後に初めてエラーが見つかり、かえってやり直しが増えてしまうことがあります。
よくある勘違い
- テストの数が多い=安心、ではありません。中身が正常系ばかりなら、守れている範囲は意外と狭いです。
- 「全部グリーン」は「正しい」を意味しません。異常系を試していなければ、失敗するはずの場面を見ていないだけかもしれません。
- 異常系は「めったに起きないから後回し」と思われがちですが、実際に事故るのはこの想定外のほうです。
明日やるならこれ
次にAIへテストを頼んだら、出てきた一覧をざっと見て「これ、正常系ばかりじゃないか?」と一度だけ自問してみましょう。偏っていたら「異常系と境界値も観点ごとに出して」と頼み直す——この一手間だけで、抜けはぐっと減ります。
ひとことで言うと
正常系・異常系とは、テストでいう「うまくいく場合」と「失敗・想定外の場合」のこと。AIに任せると前者に偏りがち、と覚えておくと安全です。





