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 A、READ B、PRINT は「ステートメント」
-
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網羅は別の技法(ブランチテスト)で対応 |
🏁 まとめの一言
ステートメントテストは「最小限のテストで全コードを通す」ための基本技法。
これを理解すれば、次の「ブランチテスト」や「条件カバレッジ」へのステップもスムーズに進めます。



コメント