公開:

ソフトウェアテスト

主要ソフトウェアテスト技法を一覧で解説│目的や特徴、使い分け

主要ソフトウェアテスト技法を一覧で解説│目的や特徴、使い分け

システムの複雑化やリリースサイクルの高速化が進むなか、限られた時間でプロダクトの品質を確保するためには、状況やプロダクトの性質に応じた最適なテストが求められます。

一方で、ソフトウェアテストにはさまざまな技法が存在し、どのように使い分けるべきか悩む担当者も多いのではないでしょうか。

本記事では、主要なソフトウェアテスト技法を体系的に整理し、それぞれの目的や進め方を解説します。

開発プロジェクトにおける『第三者検証』の重要性とは|資料ダウンロード

ソフトウェアテスト技法とは?定義と重要性

ソフトウェアテスト技術者の国際的な資格認定を行うISTQBでは、ソフトウェアテスト技法を「テストケースを導出・選択するために使用される手順」と定義しています。

システムの複雑化が進んだ現代のソフトウェア開発では、担当者の感覚に基づいた場当たり的なテストのみで品質を保証することは困難です。業界で蓄積された知見や理論に基づく技法を用いることで、テストの網羅性と再現性を高め、品質の高いプロダクトを実現できるのです。

ソフトウェアテスト技法の3つの大分類

個々の技法の解説に先立ち、ソフトウェアテスト技法の全体的な分類について整理します。

ISTQBのシラバスでは、ソフトウェアテスト技法を大きく分けて次の3つに分類しています。

ソフトウェアテスト技法の3つの大分類

ブラックボックステスト技法

「ブラックボックステスト技法」とは、プログラムの内部構造は確認せず、入力に対して仕様通りの出力が行われるかを検証するテスト技法です。テスト対象を中身の見えない“ブラックボックス”として扱うことから名づけられています。

ブラックボックステストには、プログラミングの知識がなくとも実施可能で、ユーザー視点での動作確認や実際の利用シーンに近いテストができるという利点があります。一方で、内部ロジックの不具合や効率性の問題を見逃すリスクがあるため、より精度の高い品質保証に向けて、次のホワイトボックステストと組み合わせることが求められます。

ホワイトボックステスト技法

「ホワイトボックステスト技法」は、ソースコードの内部構造や制御フローに基づいてテストケースを設計する技法で、プログラムの処理経路やデータの流れに着目し、実装の論理的な正確性を検証するために実行されます。

カバレッジ指標(対象のプログラムのうちどこまでテストされているか)による測定が可能であることから、テストの網羅性を定量的に評価できるのがホワイトボックステスト技法の特徴です。一方で、「そもそも仕様書の内容が不適切である」「ユーザー目線で使いづらい」といった問題を見つけることはできない点には注意が必要です。また、大規模システムの開発ではテストケースが膨大になるため、リスクベースでの優先順位付けや自動化による工数削減が求められます。

経験ベースのテスト技法

経験ベースのテスト技法は、文字通りテスト担当者の経験に基づいて行うテストです。仕様が曖昧な部分でも実施でき、想定外の不具合を発見しやすいという利点があります。

ホワイトボックステストやブラックボックステストに比べて属人性が高く、再現性や客観性が欠けやすい点には注意が必要です。

ブラックボックステスト技法の種類

ISTQBのシラバスでは、主要なブラックボックステスト技法として以下の4つを取り上げています。ここでは、それぞれの目的や進め方について解説していきます。

同値分割法

同値分割法は、入力値を同じ処理が行われる範囲(同値クラス)に分割し、各クラスの代表値を選んでテストする技法です。

例えば、「パスワードを8文字以上16文字以内で設定できるようになっているか」をテストする場合、「7文字以下」「8文字~16文字」「17文字以上」の3つのクラスに分けて、それぞれ仕様通りの結果(設定が成功する、またはエラーが表示される)が得られるかを調べます。

数値入力項目、選択項目、文字列入力項目など幅広い場面で適用可能で、次に挙げる境界値分析と組み合わせることで高い効果を発揮します。

境界値分析

同値クラスの境界付近の値を重点的にテストする技法です。

例えば、「パスワードを8文字以上16文字以内で設定できるようになっているか」を検証する場合に、「7文字」「8文字」「16文字」「17文字」のような、各クラスの境界値付近の数字を入力して挙動を確かめます。

仕様ミスや実装ミスの起こりやすい境界値付近でテストを実施することで、効率的に不具合を見つけられます。

デシジョンテーブルテスト

条件と結果の組み合わせを表形式で整理し、必要なテストケースを洗い出す技法です。

例えば、ECサイトで価格の割引率が「会員ステータス」「購入金額」「クーポン利用」の3つの条件で決定される場合、次のようなデシジョンテーブルを書き出すことができます。

▼デシジョンテーブルの例(ECサイトでの購入条件と割引率の組み合わせ)

123456
条件ゴールド会員YYYYNN
一般会員NNNNYY
購入金額10,000円以上YYNNYN
クーポン利用YNYNYN
動作割引率20%X
割引率15%XXX
割引率10%X
割引率0%X
送料無料XXXXX
送料500円X

このように複数の条件が関与する機能では、デシジョンテーブルを用いて条件と結果の組み合わせを一覧化することで、テストの抜け漏れ防止につながります。

状態遷移テスト

状態遷移テストは、システムの状態間の遷移に着目してテストケースを設計する技法です。

例えば、ログイン機能では「未ログイン→認証中→ログイン成功」「未ログイン→認証中→ログイン失敗」などのように、入力内容によって複数の状態遷移パターンが存在します。このような遷移パターンごとにテストケースを設計するのが状態遷移テストであり、業務システムでの承認ワークフロー(休暇申請~承認・取り下げ)やECサイトでの状態管理(注文~配送)など、幅広い場面でこの技法が活用されています。

参考:状態遷移図とは?基本的な定義や役割、書き方を具体例とともに解説

参考:状態遷移表とは?定義や役割、作り方について初心者向けに解説

ホワイトボックステスト技法の種類

次に、ホワイトボックステスト技法についても、同じくISTQBのシラバスで挙げられている2つの技法の目的や進め方を解説します。

ステートメントテスト

すべての実行可能な文(ステートメント)が少なくとも1回は実行されるようにテストケースを設計する技法です。例えば、メールアドレスの登録機能において、「入力値の受け取り」「形式チェック」「データベースへの保存」「結果表示」といったすべての処理ステップが実行されることを確認します。この技法では、各処理が動作することを確認しますが、条件分岐のすべてのパターン(成功・失敗の両ケース)を網羅する必要はありません。

主に単体テストや結合テストのフェーズで、実装されたコードの基本的な動作確認として行います。

ブランチテスト

プログラム内のすべての条件分岐において、真・偽両方のパスを少なくとも1回は実行するようにテストケースを設計する技法です。例えば、メールアドレスの登録機能の形式チェックにおいて、「正しい形式→保存成功」のパスと「誤った形式→エラー表示」のパスの両方を検証します。

全分岐を網羅する過程で、実行可能なすべての文を通るため、ブランチテストを網羅すれば、ステートメントテストの実施も兼ねていることになります。

経験ベースのテスト技法の種類

経験ベースのテスト技法についても、ISTQBのシラバスで挙げられている3つの技法の目的や進め方を解説します。

エラー推測

テスト担当者の経験や知識をもとに、エラーが発生しやすい箇所を推測してテストする技法です。対象プロダクトで過去に発生した不具合や同業界での事例などに基づき、問題の起きやすい条件でのテストを行います。

テスト精度の再現性には欠けるものの、経験豊富な人材が担当すれば、発生しやすい不具合の効率的な解消につながります。

探索的テスト

探索的テストは、担当者がソフトウェアの動作を観察しながら、テスト設計・実行・学習を並行して行う手法です。一般的に「テストチャーター」と呼ばれる大まかな目的やテストの方向性を事前に定義したうえで、セッションベースで実施されます。実行中の気付きに応じて次の操作を柔軟に変えていけるため、仕様が未確定な段階でも実施できるのが特徴です。

また、担当者の経験とスキルにより、効率的に重要な不具合を抽出できるため、アジャイル開発やDevOpsのようにスピードが重視される開発スタイルとの親和性が高い点も特徴です。

チェックリストベースドテスト

用意したチェックリストに沿ってテストを実行する技法です。

チーム内の知見をもとに確認項目をまとめるほか、業界標準のチェックリスト(セキュリティリスクをまとめたOWASP Top 10など)の活用も有効です。

統一されたチェックリストをもとに進めることで、経験の浅いテスターでも一定品質のテストが実行でき、確認観点の抜け漏れ防止につながります。

ソフトウェアテスト技法を使いこなすためのポイント

ここまで、主要なソフトウェアテスト技法の特徴をまとめてきました。

最後に、実務でソフトウェアテスト技法を使いこなすためのポイントを解説します。

ソフトウェアテスト技法を使いこなすためのポイント

プロジェクトの特性に応じた技法の選択

ソフトウェアテスト技法を効果的に活用するためには、システムの種類、規模、重要度、開発期間、チームのスキルレベルに応じて適切な技法を選択することが重要です。

「業務システムでは同値分割法や状態遷移テスト」「Webアプリではユーザビリティテストを重視」といったように、プロダクトの性質と技法の相性に基づいた選択をしましょう。

費用対効果の検討と自動化

限られた時間とリソースの中で最大の効果を得るためには、リスクと優先度に基づいた技法選択が必要です。高リスク箇所には網羅性の高い技法、低リスク箇所には効率的な技法を適用することで、リソースを有効活用しながらプロダクトの品質を確保できます。

また、定期的に発生するテストは自動化することで手間とヒューマンエラーを減らしつつ、手動でしか確認できない観点に人的リソースを集中させることも重要です。

テスト専門会社との協業も視野に

技法の選択やテスト設計に不安がある場合は、計画段階で外部のテスト専門会社に支援を依頼するのも有効です。

経験豊富な専門人材の知見を取り入れることで、より最適な技法を導入し、テストの効率や精度の向上につながります。

また、専門家から得た知見を社内に還元すれば、将来的な内製化やテスト体制の強化も期待できます。

技法への体系的な理解が、品質保証に強い体制につながる

品質や開発スピードに対する要求が高まる昨今、限られたリソースで十分な品質を確保するためには、適切なソフトウェアテスト技法の導入が欠かせません。それぞれの技法の目的やメリット、限界を把握して、技法を戦略的に選択することが重要です。

一方で、場面に応じて適切な技法を選択し、効果的に実施するためには、各技法に対する十分な知見が必要です。開発に関して優れた知見を持つベンダーやSIerでも、テストの計画・設計には不備があることが少なくありません。

AGESTのソフトウェアテストサービスでは、テストの計画・設計から実施、レビューまで一気通貫でサポートしています。テスト経験の豊富なエンジニアが、プロダクトの性質やチームの状況に応じた最適なテスト計画・実施を支援します。

自社の品質保証体制を見直したい方は、ぜひ一度AGESTにご相談ください。

ソフトウェアテスト・第三者検証 サービス詳細ページ

TFACT (AIテストツール)

関連コンテンツ

この記事をシェア