【ISTQB /JSTQB FL 4.0解説】 ステートメントテスト(Statement Testing)とステートメントカバレッジ(Statement Coverage)の違いをわかりやすく解説!

JSTQB Fundation Level 4.0

ISTQB Foundation Level Chapter 4「テスト分析と設計」では、ブラックボックス技法に続いて「ホワイトボックステスト技法」が登場します。

今回はその最初のテーマである 「ステートメントテスト(Statement Testing)」と「ステートメントカバレッジ(Statement Coverage)」 について学びます。


🔍 ホワイトボックステストとは?

まず「ホワイトボックステスト」とは、ソースコードの構造を理解し、それに基づいてテストを設計する技法のことです。

主に開発者が行う**単体テスト(ユニットテスト)**の段階で使用されます。

目的はシンプルです。

👉「できるだけ少ないテストケースで、できるだけ多くのコードをカバーすること

ホワイトボックス技法には、主に次のような代表的手法があります。

  • ステートメントテスト(Statement Testing)

  • ブランチテスト(Branch Testing)

この記事では、まずステートメントテストに焦点を当てて解説します。


🧩 ステートメントテストとは?

定義

ステートメントテストとは、プログラム中のすべての“文(Statement)”を少なくとも1回実行するための最小限のテストケースを導き出すテスト技法です。

つまり、「コード中のすべての命令が1回は実行されるか?」を確認するためのテストです。

ステートメントカバレッジとは?

ステートメントカバレッジ(Statement Coverage)は、「実際にどのくらいの文が実行されたか」を数値で表すカバレッジ指標です。

両者の違いを整理すると:

比較項目

ステートメントテスト

ステートメントカバレッジ

目的

すべての文を1回実行する最小のテストケースを設計する

実際のテストで、文がどれだけ実行されたかを測定する

使うタイミング

テストケースを設計するとき

テスト実行後にカバレッジを測定するとき

関係

設計のための「手法」

測定のための「指標」

🧮 例①:if文を含むシンプルなコード

以下のような簡単な擬似コード(pseudo code)を考えてみましょう。

READ A
READ B
IF A > B THEN
PRINT “A is bigger”
ELSE
PRINT “B is bigger”
ENDIF

フローチャートの構造

  • READ AREAD BPRINT は「ステートメント」

  • IF A > B の「True/False」は「ブランチ」

今回のステートメントテストでは、**“すべてのステートメントを1回以上実行”**することが目的です。


✅ ステートメントを100%カバーするには?

パターン1:

  • A = 20, B = 10 → 条件は「真(True)」

    PRINT “A is bigger” 実行

パターン2:

  • A = 10, B = 20 → 条件は「偽(False)」

    PRINT “B is bigger” 実行

これら2つのテストケースで、全てのステートメント(READ A, READ B, IF, PRINT)を1回以上実行できます。

📘 結論:このコードの100%ステートメントカバレッジを達成するには、2つのテストケースが必要です。


🧮 例②:ネストされたif文の例

次に、少し複雑な「ネスト(入れ子)」構造を持つコードを見てみましょう。

READ A
IF A > 0 THEN
IF A == 21 THEN
PRINT “Key”
ENDIF
ENDIF

フローチャートを理解する

  • まずAを読み込み、

  • 条件①「A > 0」が真なら次へ、

  • 条件②「A == 21」が真なら “Key” を表示。


✅ どのテストケースが必要か?

  • A = 21 と入力した場合:

    • 条件①:True

    • 条件②:True

      PRINT “Key” まで全てのステートメントを実行!

つまり、この1つのテストケースで全ての文を1度ずつ実行できます。

📘 結論:このコードでは、1つのテストケースで100%ステートメントカバレッジが達成可能。


🚀 ステートメントテストを使う目的

  • コード全体が一度は実行されることを保証できる

  • 実行漏れ(未使用コード、デッドコード)を検出できる

  • コードの構造理解が深まり、テストの効率化にもつながる


⚠️ 注意点

  • ステートメントテストは**「分岐条件」までは考慮しないため、条件のTrue/False両方を完全に網羅したい場合はブランチテスト(Branch Testing)**が必要です。

  • したがって、**ステートメントテストは“最低限の構造テスト”**として理解しておくと良いでしょう

🧠 まとめ

項目

内容

技法名

ステートメントテスト(Statement Testing)

カバレッジ指標

ステートメントカバレッジ(Statement Coverage)

目的

すべての命令文を1回以上実行する

主な用途

コードレベルの単体テスト

メリット

デッドコード検出、コード網羅性の確認

注意点

条件分岐のTrue/False網羅は別の技法(ブランチテスト)で対応

🏁 まとめの一言

ステートメントテストは「最小限のテストで全コードを通す」ための基本技法。

これを理解すれば、次の「ブランチテスト」や「条件カバレッジ」へのステップもスムーズに進めます。

コメント

タイトルとURLをコピーしました