ソフトウェア開発において、品質を確保するために欠かせないのが「テスト」です。
中でもテスト技法は、限られた時間とコストの中で効率的に不具合を発見し、品質リスクを低減するための重要な考え方です。
本記事では、ソフトウェアテストで用いられる代表的なテスト技法を3つのカテゴリに分けてご紹介します。それぞれの特徴や使い分けについても解説しますので、ぜひ実務にお役立てください。
テスト技法とは?
テスト技法とは、ソフトウェアテストを体系的・効率的に実施するための手法や考え方の総称です。
ソフトウェアの品質を検証する際に、ただやみくもにテストを行うだけでは、以下のような問題が起こってしまいます。
・テストの抜け漏れが発生
・不要なテストが増えて工数が膨らむ
・品質が担当者の経験に依存する
そのため、さまざまなテスト技法を活用することで、効率的にテスト設計をして不具合の早期発見を行います。
テスト技法をうまく使うことでシステム全体の品質向上はもちろん、コスト削減、品質の標準化も実現できるため、どのような技法や考え方があるのかを把握しておくことが重要です。
テスト技法の主な3つのカテゴリ
ソフトウェアテストの国際規格「ISO/IEC/IEEE 29119」に基づくと、効率のよいテストに欠かせないテスト技法は大きく3つのカテゴリに分類されます。
| 技法 | 特徴 | メリット | デメリット |
| ブラックボックステスト | 入力に対する 出力の妥当性をチェック | ・仕様の解釈誤りを発見できる ・幅広いテスト工程に適用できる ・非機能テストにも使える |
・要件や仕様が明確でないとテストできない ・入力パターンが膨大になりがち |
| ホワイトボックステスト | 内部構造を検証 | カバレッジを用いて、品質を定量的に評価できる | ・カバレッジを達成するための工数が増加 ・仕様の解釈誤りから起きる不具合は発見できない |
| 経験ベースのテスト技法 | テストの設計・実行に経験を活用 | ・テスト設計と実行を並行するため効率がよい ・仕様が不十分でもテスト可能 |
・テスト担当者のスキル ・経験に依存する ・ドキュメントが残されない場合が多い |
それぞれの概要と特徴について解説します。
2-1 ブラックボックステスト
ブラックボックステストとは、システムの内部構造を意識せず、外から見た動作が仕様どおりかを確認するテスト技法です。
その名前の通り、テスト対象を「中身の見えないブラックボックス」として扱い、入力に対して正しい出力が得られるかを重視します。
ユーザーが実際に操作する立場で、「想定した使い方ができるか」「期待した結果が返ってくるか」といった点を確認するため、ユーザー視点のテストともいえます。
ブラックボックステストの代表的なテスト技法には以下のようなものがあります。
- 同値分析法
- 境界値分析
- デシジョンテーブル
- 状態遷移図・表
- 組合せテスト
ブラックボックステストは、ユーザー視点で仕様通りに動作するかを確認できる反面、仕様への依存度が高く、入力パターンが増えやすいという特徴があります。また、内部ロジックに起因する不具合は見つけにくいため、他のテスト技法との併用が重要になります。
2-2 ホワイトボックステスト
ホワイトボックステストは、テスト対象の内部構造や処理内容に着目して行うテスト技法で、構造ベースのテスト技法とも呼ばれます。ソースコードを確認しながら、「設計・実装した通りに正しく動作しているか」を検証するため、開発者視点のテストといえます。
ホワイトボックステストの主なテスト技法には以下のようなものがあります。
・制御フローテスト
・データフローテスト
ホワイトボックステストは、カバレッジ(網羅率)という指標を用いてどこまでテストできているかを定量的に評価できます。一方で、工数が増えやすく、仕様起因の不具合には弱いため、ブラックボックステスト同様、他のテスト技法との併用が重要になります。
▶ ホワイトボックステストとは?基礎知識から成功のポイントまで解説
2-3 経験ベースのテスト
経験ベースのテストは、テスト担当者の知識や経験を活かしながら、テスト対象の理解とテスト設計・実行を同時に進めるテスト技法です。
事前に詳細なテストケースを作成するのではなく、操作しながら不具合が潜んでいそうな箇所を探っていきます。担当者の経験次第で、開発者視点・ユーザー視点の両方から柔軟に検証できる点が特徴です。
経験ベースのテストには、以下のようなものがあります。
・エラー推測
・探索的テスト
・アドホックテスト
経験ベースのテストは、テスト担当者の経験を活かして柔軟に検証を進められる反面、成果が個人のスキルに依存しやすく、網羅的なテストには向いていません。
そのため、他のテスト技法との併用が不可欠です。
いずれのテスト技法にも得意・不得意があるため、単一の手法に頼るのではなく、複数のテスト技法を組み合わせて活用することが、高品質なソフトウェア開発につながるでしょう。
ブラックボックステスト技法
ブラックボックステストでは、仕様に基づき、入力と出力の関係を検証するさまざまなテスト技法が用いられます。ここでは、代表的なブラックボックステスト技法について解説します。
3-1 同値分析法
同値分割法は、同じ結果になると考えられる入力値をグループ化し、その代表値のみをテストする技法です。
すべての入力値を個別にテストするのではなく、意味のあるまとまりに分けることで、テスト工数を抑えながら品質を確認できます。
入力値の範囲が広い場合でも効率的にテスト設計ができるため、ブラックボックステストの基本的な技法として多くの現場で利用されています。
3-2 境界値分析
境界値分析は、エラーが発生しやすい入力値の境界付近を重点的にテストする技法です。
「最小値・最大値」や「その前後の値」を検証することで、不具合を効率よく発見できます。
同値分割法と組み合わせて使われることが多く、数値入力や条件分岐がある機能のテストに特に有効です。
3-3 デシジョンテーブル
デシジョンテーブルは、複数の条件とその組み合わせに対する結果を表形式で整理し、テスト設計を行う技法です。
条件が増えて処理が複雑になる場合でも、抜け漏れなく整理できる点が特徴です。
業務ルールが複雑なシステムや、条件分岐の多い機能のテストに適しています。
3-4 状態遷移図・表
状態遷移図・表は、システムの状態変化とその遷移条件を整理してテストする技法です。
特定の操作やイベントによって状態がどのように変わるかを可視化し、正しく遷移しているかを確認します。
ログイン処理やワークフローなど、状態管理を伴う機能のテストで効果を発揮します。
▶ 状態遷移図をわかりやすく!具体的な例と図式化するメリットをご紹介
3-5 組合せテスト
組合せテストは、複数の入力条件を組み合わせた場合の動作を検証する技法です。
すべての組み合わせをテストするのではなく、影響度の高い組み合わせを効率的に抽出することで、テスト工数を削減します。
パラメータ数が多いシステムや設定項目が複雑な場合に有効です。
上記のテスト技法について詳しく解説したガイドブックを無料で公開しています。
ホワイトボックステスト技法
ホワイトボックステストでは、ソースコードや内部構造に着目し、ロジックの正確性を検証する技法が用いられます。
4-1 制御フローテスト
制御フローテストは、プログラムの処理の流れや分岐構造に着目してテストを行う技法です。
主に単体テストで用いられ、ロジックの抜けや実装ミスの検出に有効です。
命令文や分岐、条件などが実行されたかを確認し、カバレッジを用いて網羅性を評価します。
代表的な指標には、命令網羅(ステートメントカバレッジ)や分岐網羅(ブランチカバレッジ)、条件網羅(コンディションカバレッジ)などがあり、テストの到達度を定量的に評価できる点が特徴です。
| 項目 | 命令網羅(ステートメントカバレッジ) | 分岐網羅(ブランチカバレッジ) | 条件網羅(コンディションカバレッジ) |
| 着目点 | 命令文 | 条件分岐の結果 | 条件式を構成する各条件 |
| 確認内容 | すべての命令文が1回以上実行されたか | true/false の両方が実行されたか | 各条件が true/false の両方を取ったか |
| カバレッジ100%の意味 | 全命令文が少なくとも1回実行された状態 | すべての分岐結果が実行された状態 | 条件式内のすべての条件が true/false を経験した状態 |
| 検出しやすい不具合 | 未実行コード、処理漏れ | 分岐条件の誤り | 条件式内の論理ミス |
| 厳密さ | 低 | 中 | 高 |
| テスト工数 | 少ない | やや多い | 多くなりやすい |
| 主な利用場面 | 単体テスト初期の基本確認 | ロジック検証の標準指標 | 複雑な条件判定の重点検証 |
4-2 データフローテスト
データフローテストは、変数の定義・参照・使用の流れに着目して検証する技法です。
データが正しく受け渡されているか、不要な参照や未初期化の使用がないかを確認します。
データ処理が複雑なプログラムにおいて、潜在的な不具合の発見に役立ちます。
経験ベースのテスト技法
経験ベースのテストでは、テスト担当者の知識や経験を活かした柔軟な検証が行われます。
仕様書や設計書だけでは把握しきれない挙動や、想定外の使い方による不具合を発見しやすいため、ブラックボックステストやホワイトボックステストを補完する役割として活用されます。
それぞれの特徴をご紹介します。
5-1 エラー推測
エラー推測は、過去の不具合事例やプロジェクト経験をもとに、不具合が発生しやすい箇所を重点的に検証する手法です。
例えば、入力チェックの漏れや境界値周辺、仕様変更が頻繁に行われた箇所などを狙ってテストします。
過去の不具合データやナレッジが蓄積されている場合、効率よく品質リスクの高い部分を洗い出すことができ、短期間で高い効果が期待できます。
5-2 探索的テスト
探索的テストは、テスト設計と実行を同時に行いながら、仮説検証を繰り返すテスト手法です。
テストを進める中で得られた知見をもとに、次のテスト内容を柔軟に変更できるため、想定外の不具合を発見しやすい点が特徴です。
テスト対象の理解を深めながら進められるため、新機能の確認や仕様変更が多いシステムの検証に適しています。
5-3 アドホックテスト
アドホックテストは、事前に決められた手順に縛られず、自由な操作で不具合を探すテスト手法です。
ユーザーが実際に行いそうな操作や、あえて想定外の使い方を試すことで、設計段階では見落とされがちな不具合を発見できます。
一方で、検証内容が担当者の判断に委ねられるため、再現性や網羅性を確保しにくい点には注意が必要です。
まとめ
テスト技法は、ソフトウェア品質を確保するために欠かせない重要な考え方です。
ブラックボックステストは仕様やユーザー視点での動作確認に強く、ホワイトボックステストは内部構造やロジックの正確性を検証できます。また、経験ベースのテストは、想定外の不具合や実運用に近い課題を効率よく発見できる点が特長です。
一方で、いずれのテスト技法にも得意・不得意があり、単一の手法だけですべての品質リスクをカバーすることはできません。
そのため、開発フェーズやシステムの特性、品質リスクに応じて、複数のテスト技法を組み合わせて活用することが重要になります。
実際の開発現場では、テスト技法を理解していても、
「どの技法をどこまで適用すべきか分からない」「工数や体制の制約で十分なテストが行えない」
といった課題に直面するケースも少なくありません。
そのような場合は、ソフトウェアテストの専門家に相談することも有効な選択肢です。
バルテスでは、ブラックボックステスト・ホワイトボックステスト・経験ベースのテストを組み合わせた第三者検証により、お客様の開発状況や品質課題に応じた最適なテストをご提案しています。
テスト設計の見直しや、テスト体制・品質に関するお悩みがありましたら、ぜひ一度バルテスへご相談ください。
参考
- Foundation Level シラバス Version 2018V3.1.J03
https://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf - 【この1冊でよくわかる】ソフトウェアテストの教科書【増補改訂第2版】
- ISO/IEC/IEEE 29119 ソフトウェアテスト規格の教科書

