1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【テスト設計入門③】NULLと空文字は何が違う?実務で学んだ入力チェックの考え方

1
Posted at

ChatGPT Image 2026年6月10日 23_10_52.png

はじめに

テストケース作成を始めた頃の私は、

  • NULL
  • 空文字
  • 閾値(しきいち)

という言葉がよく分かっていませんでした。

特に、

「NULLと空文字って何が違うの?」

と思っていました。

しかし実務でテストケースを作成していると、

この違いを理解しているかどうかで、作成するテストケースが変わってきます。

今回は、実際のコード例を使いながら、

  • NULL
  • 空文字
  • 閾値

について初心者向けに解説します。


NULLとは?

NULLとは、値が存在しない状態 を表します。

例えば会員登録画面があるとします。

String name = null;

この場合、

「名前という項目はあるけれど、値が設定されていない」

状態です。

イメージとしては、

「名前を書く紙そのものはあるけれど、まだ何も書いていない」

状態です。


空文字とは?

空文字は、

String name = "";

のような状態です。

文字数は0文字ですが、

値としては存在しています。

つまり、

状態 意味
NULL 値が存在しない
"" 0文字の文字列

になります。


イメージで考える

名前記入欄で考えてみます。

NULL

名前欄そのものが渡されていない

空文字

名前欄はあるけれど何も入力していない

プログラムによっては、

この2つを別々に扱います。


コード例

例えば、

名前が入力されているか確認する処理があります。

public boolean canRegister(String name) {

    if (name == null) {
        return false;
    }

    if (name.isEmpty()) {
        return false;
    }

    return true;
}

この場合、

  • NULL
  • 空文字

の両方をチェックしています。


テストケースを考えてみる

仕様

名前は必須入力

だった場合、

どのようなテストケースを作るでしょうか。

テストケース

No 入力値 期待結果
1 "田中" 正常
2 NULL エラー
3 "" エラー

となります。

実務では、

NULLだけ確認して終わりではなく、

空文字も確認することが多いです。


半角スペースはどうなる?

実務ではさらに、

" "

も確認することがあります。

見た目は空ですが、

実際にはスペース1文字です。

そのため、

入力値 内容
NULL 値なし
"" 0文字
" " スペース1文字

は全て別物として扱われます。


閾値(しきい値)とは?

次に閾値です。

閾値とは、結果が切り替わる基準値 のことです。

例えば、

購入金額が10,000円以上なら送料無料

という仕様があったとします。

この場合、

10,000円が閾値になります。


コード例

public boolean isFreeShipping(int price) {
    return price >= 10000;
}

どの値をテストする?

初心者だった頃の私は、

5000円
7000円
12000円

くらいしか考えていませんでした。

しかし本当に重要なのは、

閾値の前後です。


テストケース

No 金額 期待結果
1 9999 送料あり
2 10000 送料無料
3 10001 送料無料

です。

ここで、

price > 10000

と誤って実装されていた場合、

10000円が送料無料になりません。

だから閾値付近を確認するのです。


今回学んだこと

NULL

値そのものが存在しない状態

String name = null;

空文字

値は存在するが0文字

String name = "";

閾値

結果が切り替わる基準値

price >= 10000

の10000が閾値


最終的なテストケース例

会員登録機能の仕様

名前:必須
購入金額:10000円以上で送料無料

テストケース

No 名前 購入金額 期待結果
1 田中 12000 正常
2 NULL 12000 エラー
3 "" 12000 エラー
4 " " 12000 仕様確認
5 田中 9999 送料あり
6 田中 10000 送料無料
7 田中 10001 送料無料

おわりに

第2回では、

同値分割や境界値分析を使って数値のテストケースを考えました。

今回は、

  • NULL
  • 空文字
  • 閾値

という入力値の観点を学びました。

私自身、実務に入るまでNULLと空文字の違いを意識したことはありませんでした。

しかしテストケース作成では、この違いが不具合発見につながることもあります。

今回までで、

  • 同値分割
  • 境界値分析
  • 最大値
  • 最小値
  • NULL
  • 空文字
  • 閾値

という、実務でよく出会う基本的なテスト観点を一通り学ぶことができました。

これからテストケースを作成する方の参考になればうれしいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?