ソフトウェア品質の担保や向上のためには、適切なソフトウェアテストが不可欠です。
しかし、ソフトウェアテストにはさまざまな技法があることから、テストの目的や対象等に応じて最適なソフトウェアテスト技法(以下、「テスト技法」という)を活用することが重要です。
しかしテスト技法は数多く存在し、さらにいくつかの種類に細分化されます。
テスト技法の分類方法やテスト技法の種類、やり方などは明確に決まっているわけではなく、テストレベルやテストタイプと同じく書籍や組織などによっても異なります。
そこで本記事では、主に以下のISTQBのシラバスや、PMとしてテストに携わるなかで得られた経験を参考にしながら、テスト技法の種類や各テスト技法の特徴などについて解説します。
参考:Certified Tester Foundation Level Syllabus v4.0
参考:テスト技術者資格制度 Foundation Level シラバス Version 2018V3.1.J03
本記事の内容が、ソフトウェアテストおよびテスト技法に関する理解や、ソフトウェアテスト品質の向上に少しでもつながれば幸いです。
テスト技法とは
ISTQBのシラバスによれば、テスト技法とは「テスト分析(何をテストするか)とテスト設計(どうテストするか)においてテスト担当者をサポートする」ものであり、「比較的小規模だが十分なテストケースのセットを体系的に開発するのに役立ち」、また「テスト担当者がテストの分析と設計中にテスト条件を定義し、カバレッジ項目を特定し、テストデータを特定するのにも役立つ」と述べられています。
引用元:Certified Tester Foundation Level Syllabus v4.0 4.1.Test Techniques Overview
つまり、テスト技法を適切に活用することで、テスト担当者が「何をどうテストすれば良いか」が判断しやすくなるうえ、テストの条件やカバレッジ、テストデータを明確にしやすくなることから、テスト技法はソフトウェアテスト自体の品質向上に役立つものと言えるでしょう。
実際のソフトウェアテストにおいても、その戦略や計画の策定、設計、実行などにおいてテスト技法は広く活用されており、それによってテスト対象となるソフトウェアのさらなる品質向上も期待することが可能となります。
テスト技法の大分類
ISTQBによれば、テスト技法は以下の3つの技法に大きく分類されます。
- ブラックボックステスト技法
- ホワイトボックステスト技法
- 経験ベースのテスト技法
これらの各テスト技法についてみていきましょう。
ブラックボックステスト技法
ブラックボックステスト技法とは、要件や仕様書、ユースケース、ユーザーストーリー、ビジネスプロセスなどのテストベースの分析に基づき、テスト対象の内部構造は参照せずに入力と出力に着目をして、対象の振る舞いを確認するテスト技法です。
テスト対象の内部をブラックボックスに見立て、入力に対する振る舞いを確認することから、ブラックボックステスト技法は「振る舞い技法」あるいは「振る舞いベースの技法」と呼ばれることもあります。
ブラックボックステスト技法では、入力に対する出力の整合性を確認することで、要件と実装との間の相違や逸脱を検出することができます。
特に、内部構造を良く知る開発者ではなく、テストエンジニアがソフトウェアテストを担当する場合によく使われるテスト技法です。
ブラックボックステストについては以下の記事で詳しくご紹介していますので、こちらもあわせてご参照ください。
ソフトウェアテスト技法のひとつ、ブラックボックステストとは|その特徴や技法について
ホワイトボックステスト技法
ホワイトボックステスト技法は、名前からもわかる通り、ブラックボックステスト技法と対照的なテスト技法です。
ブラックボックステスト技法では、内部構造はブラックボックスとして考慮せずに入力と出力に着目しますが、反対にホワイトボックステスト技法では内部構造に着目し、テスト対象のプログラムが正しく動作しているかを確認します。
ホワイトボックステスト技法では、アーキテクチャーや詳細設計、内部構造、テスト対象のコードなどからテスト条件やテストケース、テストデータが導出されます。
ホワイトボックステスト技法では内部構造の理解が重要となるため、ホワイトボックステストは実際にプログラムを開発した開発者によって行われることも多くあります。
経験ベースのテスト技法
経験ベースのテスト技法とは、その名の通り、テスト担当者の経験を活用して行うテスト技法です。ときにはテスト担当者だけでなく、開発担当者やユーザーなどの知識や経験も動員します。
要件や内部構造などの分析に基づくブラックボックステスト技法・ホワイトボックステスト技法とは異なり、経験ベースのテスト技法では過去の経験から生まれる直感などを用いることから、他のテスト技法では検出できない不具合を検出できることもあります。
しかし、経験ベースのテスト技法はテスト担当者の属人性が極めて高いことから、人によってその網羅性や有効性には大きなばらつきが生じる点は注意が必要です。
続いては、「ブラックボックステスト技法」「ホワイトボックステスト技法」「経験ベースのテスト技法」に分類される、それぞれのテスト技法についてみていきましょう。
主なブラックボックステスト技法
ISTQBによれば、主なブラックボックステスト技法として、以下の5つのテスト技法が挙げられています。
- 同値分割法
- 境界値分析
- デシジョンテーブルテスト
- 状態遷移テスト
- ユースケーステスト
同様に、それぞれのテスト技法についてみていきましょう。
同値分割法
同値分割法とは、システム上で同等に処理される(=出力結果が同じになる)と想定されるデータを「同値パーティション」または「同値クラス」と呼ばれるグループに振り分け、そのなかの代表的なデータを用いてテストを行う技法です。
同値分割法を活用することで、網羅性を担保しながらテストケース数や実行回数を減らすことができるため、テストの設計や実行にかかる時間やコストを大幅に削減することができます。
同値分割法については以下の記事で詳しくご紹介していますので、こちらもあわせてご参照ください。
適切なテストケース作成に役立つ技法を知る1:同値分割法とは?
境界値分析
境界値分析とは同値分割法を拡張した技法であり、出力が同じ結果になるような入力値を同値クラスとしてグループにまとめた上で、グループが隣接する境界やその前後の値を入力としてテストを行う技法です。
同値クラスでランダムな値をテストするのではなく、エラーが隠されていることが多い同値クラスの境界値を重点的に検証するため、同値分割法と比べてより効率的に不具合を調べることができます。
境界値分析は、網羅性の高さとテストケース数の削減を同時に実現できることもあって非常に基本的かつ重要なテスト技法であり、実際のソフトウェアテストでも広く使われています。間違いなく、必須のテスト技法のひとつといえるでしょう。
境界値分析については以下の記事で詳しくご紹介していますので、こちらもあわせてご参照ください。
適切なテストケース作成に役立つ技法を知る2: 境界値分析とは?
デシジョンテーブルテスト
デシジョンテーブルテストとは、テスト対象の条件と結果の組み合わせをデシジョンテーブルを使って整理し、各組み合わせを元にテストケースを導出するテスト技法のことです。
デシジョンテーブルは決定表とも呼ばれ、対象が取り得る条件(入力)と、その結果の動作(出力)を洗い出した上で整理し、以下のようにマトリクス上に一覧化した表です。
上図のようなデシジョンテーブルを用いることで、条件と動作の関係を網羅的に視覚化することができ、その結果として複雑な条件と動作の組み合わせが整理され、ロジックの理解を容易にするとともに抜け漏れを防止することができます。
仮にデシジョンテーブルを使用せずに複雑な条件と動作が関係するテストを実施する場合、ロジックの矛盾や抜け漏れのリスクは格段に高くなるでしょう。
デシジョンテーブルテストおよびデシジョンテーブルについては以下の記事で詳しくご紹介していますので、こちらもあわせてご参照ください。
デシジョンテーブル(決定表)とは|その概要から作り方までわかりやすくご紹介
状態遷移テスト
状態遷移テストとは、ソフトウェアが取り得る状態と、状態間の遷移を対象にテストをする技法です。
多くの場合、ソフトウェアの取り得る状態と遷移は多岐にわたりますが、それらを「状態遷移表」や「状態遷移図」に表して整理したうえで、「典型的な状態と遷移をカバーする」「すべての状態をテストする」「すべての遷移をテストする」「遷移を特定の順序でテストする」「無効な遷移をテストする」などのパターンでテストを設計します。
状態遷移テストや「状態遷移表」「状態遷移図」の具体例については、JaSSTソフトウェアテストシンポジウムが公開している状態遷移テストについての説明資料のP5「状態遷移図と状態遷移表の例」、P6「状態遷移図と状態遷移表の例Ⅱ」などをご参照ください。
ユースケーステスト
ユースケーステストとは、定義されたユースケースをもとにテストケースを設計するテスト技法です。
ユースケースとは、簡略化した例でいえば「ECサイトで会員がカゴに商品を入れる」「SNSに参加するために会員登録する」といったような、システムとアクターの定義された振る舞いです。(厳密には、事前条件や事後条件なども含まれます)
したがって、ユースケースには機能的な要件も織り込まれます。
ユースケーステストには、基本的な振る舞いの他にも、例外的な振る舞いやエラー処理といったユースケースのテストも含まれることがあります。
主なホワイトボックステスト技法
続いては、主なホワイトボックステスト技法について紹介します。
ISTQBによれば、主なホワイトボックステスト技法として、以下の2つのテスト技法が挙げられています。
- ステートメントテスト
- デシジョンテスト
同様に、それぞれのテスト技法についてみていきましょう。
ステートメントテスト
ステートメントテストでは、コード内の実行可能なステートメント(命令文)をテストします。
テスト対象の実行可能ステートメント数のうち、テストしたステートメント数の割合がカバレッジ(網羅率)となります。
例えば、実行可能なステートメント数が100存在し、そのうち60のステートメントをテストした場合の網羅率は60%になります。
デシジョンテスト
デシジョンテストでは、コード内の条件分岐における判定結果をテストします。
デシジョンテストにおけるカバレッジ(網羅率)は、テスト対象の判定結果数のうち、テストした判定結果数の割合となるため、網羅率を100%とするためにはすべての判定結果を網羅する必要となります。
例えば、IFステートメントでは真と偽の結果のために1つずつテストケースが必要であり、CASEステートメントでは各条件とすべての結果に対するテストケースが必要となります。
主な経験ベースのテスト技法
最後に、主な経験ベースのテスト技法について紹介します。
ISTQBによれば、主な経験ベースのテスト技法として、以下の3つのテスト技法が挙げられています。
- エラー推測
- 探索的テスト
- チェックリストベースドテスト
同様に、それぞれのテスト技法についてみていきましょう。
エラー推測
エラー推測とは、テスト担当者の知識や経験に基づき、テスト対象のエラーや欠陥、故障などの発生を予測するテスト技法です。
具合的には、テスト対象の過去の動作や故障といったデータや、テスト対象に似たソフトウェアにおけるエラー、これまでのソフトウェアテスト経験のなかで培った自らの知見などを総動員し、起こりうるエラーや欠陥、故障などを推測したうえでテストケースを設計します。
探索的テスト
探索的テストは、事前にテストケースを設計したり、目標や内容、進め方などを定義したりせずに、テストを実行するなかで動的にテストの設計や実行、評価などを行うテスト技法です。
探索的テストでは、その実行を通じてテスト対象の振る舞いに着目し、そのフィードバックを元にテスト内容を動的に改善していくことから、「対話型」のアプローチといわれることもあります。
探索的テストは、必ずしも仕様書や設計書といったドキュメントを必要とせず、また事前に準備がかからずスピーディーに実施できることから、特に仕様が曖昧な場合やスケジュールに余裕がない場合に効果が大きいとされています。
探索的テストについては以下の記事で詳しくご紹介していますので、こちらもあわせてご参照ください。
探索的テストとは|スピード×コストに優れるテストスタイル
なお、探索的テストはSHIFT ASIAでも得意とするテストの一つでもあります。
探索的テストにご興味がある方は、お気軽にお問い合わせ窓口からご相談ください。
チェックリストベースドテスト
チェックリストベースドテストは、用意したチェックリストに基づいてテストの設計や実行を行うテスト技法です。
チェックリストは、機能・非機能を問わず重要性の高い要求や要件に対する理解や、これまでの経験や知識などを動員して用意されます。
既存のチェックリストをそのまま使用する場合や、既存のチェックリストを拡張して使用する場合、新たにチェックリストを作成する場合があります。
まとめ
本記事では、主にISTQBのシラバスやテストの現場で得られた経験を参考としながら、代表的なソフトウェアテスト技法について紹介しました。
ソフトウェアテストには数多くのテスト技法が存在しており、ISTQBによれば、「ブラックボックステスト技法」「ホワイトボックステスト技法」「経験ベースのテスト技法」の3つの技法に大きく分類されます。
そして、さらに細分化された各テスト技法にもそれぞれに特徴や方法論があります。
それらを理解したうえで、テストの対象や目的にあわせて適切に技法を活用することが、品質の高いソフトウェアテストを実現するためにはとても重要となります。
こちらの記事では、主なテスト技法の種類や各技法の概要、特徴などを中心に紹介しましたが、各テスト技法についてより詳しく知りたい方は、以下の記事もぜひあわせてご参照ください。
ソフトウェアテスト技法のひとつ、ブラックボックステストとは|その特徴や技法について
適切なテストケース作成に役立つ技法を知る1:同値分割法とは?
適切なテストケース作成に役立つ技法を知る2:境界値分析とは?
デシジョンテーブル(決定表)とは|その概要から作り方までわかりやすくご紹介
探索的テストとは|スピード×コストに優れるテストスタイル
お問い合わせContact
ご不明点やご相談などがありましたら、お気軽にお問い合わせください。