ソフトウェアテストの種類 (100 例)

⚡ スマートサマリー

ソフトウェアテストの種類とは、テスト活動を分類したものであり、それぞれに明確な目的、戦略、成果物があり、特定の品質基準に照らしてアプリケーションを検証するために使用されます。

  • テストカテゴリ: ソフトウェアテストの種類は、機能テスト、非機能テスト、構造テスト、変更関連テストの4つのカテゴリに分類され、それぞれが明確な検証目的を果たす。
  • 一般的なタイプ: 単体テスト、結合テスト、システムテスト、および受け入れテストは、ほとんどのプロジェクトで使用される基本的なテストレベルを構成する。
  • 専門的なアプローチ: 侵入テスト、ファジングテスト、ミューテーションテストなどの手法は、セキュリティやコードカバレッジといった特定の品質特性を対象としています。
  • 手動と自動: テストの種類は、プロジェクトの要件、予算、およびスケジュール上の制約に応じて、手動で実行することも、自動化ツールを使用して実行することもできます。
  • テストにおけるAI: 人工知能は、自動テスト生成、インテリジェントな欠陥予測、自己修復型テストスクリプトなどを通じて、ソフトウェアテストを変革しつつある。
  • 包括的なカバレッジ: このガイドでは、105種類のソフトウェアテストの種類について、定義、担当チーム、そしてより深く学ぶための詳細なチュートリアルへのリンクを解説しています。

ソフトウェアテストの種類

ソフトウェアテストタイプとは何ですか?

ソフトウェアテストタイプとは、さまざまなテスト活動をカテゴリに分類したもので、各カテゴリには、定義されたテスト目標、テスト戦略、およびテスト成果物があります。テストタイプを設定する目的は、定義されたテスト目標に対してテスト対象アプリケーション(AUT)を検証することです。たとえば、アクセシビリティテストの目的は、AUTが障害のある人でもアクセス可能であることを検証することです。したがって、ソフトウェアソリューションが障害者にとって使いやすいものでなければならない場合は、アクセシビリティテストケースに基づいて検証を行います。

ソフトウェアテストの種類を理解することは、QA担当者、開発者、プロジェクトマネージャーにとって不可欠です。それぞれのテストタイプは特定の品質上の懸念事項に対応するものであり、適切な組み合わせを選択することで、アプリケーションを網羅的にテストできます。

ソフトウェアテストの種類

以下は包括的なリストです 105種類のソフトウェアテスト 定義も併せて掲載されています。これは、すべてのQA担当者にとって必読の参考書です。あらゆるソフトウェアテストの種類を網羅したガイドとしてご活用ください。各手法を素早く見つけて理解できるよう構成されています。

ソフトウェアテストの種類

  1. 受け入れ試験: システムが受け入れ基準を満たしているかどうかを判断し、顧客がシステムを受け入れるかどうかを決定できるようにするために実施される正式なテスト。 通常、お客様が実行します。 続きを読む 受け入れ試験
  2. アクセシビリティテスト: 障害のある人(聴覚障害者、視覚障害者、知的障害者など)にとって製品の使いやすさを判断するテストの一種。評価プロセスは障害のある人によって実施されます。詳細はこちらをご覧ください。 アクセシビリティテスト
  3. アクティブなテスト: テストデータを導入し、実行結果を分析するテストの種類。 通常、テスト チームによって実施されます。
  4. アジャイルテスト: アジャイルマニフェストの原則に従い、システムを利用する顧客の視点からのテストを重視したソフトウェアテストの実践。 通常、これは QA チームによって実行されます。 続きを読む アジャイルテスト
  5. 年齢検査: 将来のシステムの実行能力を評価するテストの種類。 評価プロセスはテスト チームによって実行されます。
  6. アドホック テスト: 計画や文書化を行わずに実行されるテスト – テスターはシステムの機能をランダムに試してシステムを「破壊」しようとします。 これはテストチームによって実行されます。 続きを読む アドホックテスト
  7. アルファテスト: アルファテストは、製品をベータテスト用にリリースする前に、バグ、ユーザビリティの問題、機能のギャップを特定するために開発者のサイトで実施されるソフトウェアテストの一種です。開発者やQAチームなどの社内テスターが関与し、場合によっては制御された環境でエンドユーザーを選抜します。詳細はこちら アルファテスト
  8. アサーションテスト: 条件が製品要件を確認しているかどうかを検証するテストの種類。 これはテストチームによって実行されます。
  9. APIテスト: コードレベルを対象とするという点で単体テストに似たテスト手法。 API テストは、通常、開発者のタスクではなく QA タスクであるという点で単体テストとは異なります。 続きを読む APIテスト
  10. 全ペアテスト: 入力パラメータの可能なすべての離散的な組み合わせをテストする組み合わせテスト方法。 これはテストチームによって実行されます。
  1. 自動テスト: 自動テスト ツールを使用して環境のセットアップ、テストの実行、結果レポートを制御するテスト手法。 これはコンピュータによって実行され、テスト チーム内で使用されます。 続きを読む 自動テスト
  2. 基礎パスのテスト: 手順設計の論理的複雑さの尺度を導き出し、これを実行パスの基本セットを定義するためのガイドとして使用するテストメカニズム。テストチームがテストケースを定義するときに使用します。詳細はこちら 基底パスのテスト
  3. 下位互換性テスト: 開発したソフトウェアの動作を古いバージョンのテスト環境で検証するテスト方法。 これはテストチームによって実行されます。
  4. ベータテスト: 商用目的でアプリケーションをリリースする前の最終テスト。 通常、これはエンドユーザーまたは他のユーザーによって行われます。
  5. ベンチマークテスト: 特定の構成におけるコンピューターのハードウェアとソフトウェアのパフォーマンスを評価するために設計された、代表的なプログラムとデータのセットを使用するテスト手法。 これはテストチームによって実行されます。 続きを読む ベンチマークテスト
  6. ビッグバン統合テスト: すべての準備が整った場合にのみ、個々のプログラム モジュールを統合するテスト手法。 これはテストチームによって実行されます。
  7. バイナリ移植性テスト: 実行可能アプリケーションのシステム プラットフォームおよび環境間での移植性 (通常は ABI 仕様への適合性) をテストする手法。 これはテストチームによって実行されます。
  8. 境界値テスト: 境界値の代表を含むようにテストを設計するソフトウェア テスト手法。 これは QA テスト チームによって実行されます。 続きを読む 境界値テスト
  9. ボトムアップ統合テスト: ボトムアップ統合テストでは、最下位レベルのモジュールが最初に開発され、「メイン」プログラムに向かう他のモジュールが一度に XNUMX つずつ統合およびテストされます。 通常、これはテスト チームによって実行されます。
  10. ブランチテスト: プログラムのソース コード内のすべての分岐を少なくとも XNUMX 回テストするテスト手法。 これは開発者によって行われます。
  11. 範囲テスト: 製品の完全な機能を実行しますが、機能の詳細はテストしないテスト スイート。 これはテストチームによって実行されます。
  12. ブラックボックステスト: アプリケーションのコードや内部構造に関する特別な知識がなくても、アプリケーションの機能を検証するソフトウェア テストの方法。 テストは要件と機能に基づいて行われます。 これは QA チームによって実行されます。 続きを読む ブラックボックステスト
  13. コード駆動型テスト: テスト フレームワーク (xUnit など) を使用するテスト手法。単体テストを実行して、コードのさまざまなセクションがさまざまな状況下で期待どおりに動作するかどうかを判断できます。 それは開発チームによって実行されます。
  14. 互換性テスト: 特定のハードウェア/ソフトウェア/オペレーティングシステム/ネットワーク環境でソフトウェアがどの程度うまく機能するかを検証するテスト手法。テストチームによって実行されます。詳細はこちら 互換性テスト
  15. 比較テスト: 製品の長所と短所を以前のバージョンや他の類似製品と比較するテスト手法。テスター、開発者、製品マネージャー、または製品所有者が実行できます。詳細はこちら コンポーネントテスト
  16. コンポーネントのテスト: 単体テストに似たテスト手法ですが、より高いレベルの統合が行われます。テストは、特定のメソッドを直接テストするだけではなく、アプリケーションのコンテキストで実行されます。 テストまたは開発チームが実行できます。
  17. 構成テスト: ハードウェアとソフトウェアの最小かつ最適な構成、およびメモリ、ディスク ドライブ、CPU などのリソースの追加または変更の影響を判断するテスト手法。 通常、これはパフォーマンス テスト エンジニアによって実行されます。 続きを読む 構成テスト
  18. 条件範囲テスト: 各条件を true および false にすることで、それぞれの方法で少なくとも XNUMX 回実行するソフトウェア テストのタイプ。 通常、これは自動テスト チームによって作成されます。
  19. コンプライアンステスト: システムが標準、手順、ガイドラインに従って開発されたかどうかを確認するテストの種類。 通常、これは「認定 OGC 準拠」ブランドを提供する外部企業によって実行されます。
  20. 同時実行テスト: 同じアプリケーション コード、モジュール、またはデータベース レコードにアクセスした場合の影響を判断することを目的としたマルチユーザー テスト。 通常、これはパフォーマンス エンジニアによって行われます。 続きを読む 同時実行テスト
  21. 適合性テスト: 実装がそのベースとなる仕様に準拠していることをテストするプロセス。 通常、テスト チームによって実行されます。 続きを読む 適合性テスト
  22. コンテキスト駆動型テスト: 明らかになった潜在的な情報と、特定の瞬間における組織にとってのその情報の価値を考慮して、テスト機会を継続的かつ創造的に評価することを推奨するアジャイル テスト手法。 通常、これはアジャイル テスト チームによって実行されます。
  1. 変換テスト: 代替システムで使用するために既存のシステムからデータを変換するために使用されるプログラムまたは手順のテスト。 通常、これは QA チームによって実行されます。
  2. 意思決定カバレッジのテスト: 各条件/決定を true/false に設定することで実行するソフトウェア テストのタイプ。 通常、これは自動化テスト チームによって作成されます。
  3. 破壊試験: 試験片の構造性能や様々な荷重下での材料挙動を理解するために、試験片が破壊するまで試験を実施するタイプの試験。通常は品質保証チームによって実施されます。詳細はこちらをご覧ください。 破壊試験
  4. 依存関係のテスト: 適切な機能を維持するために、既存のソフトウェア、初期状態、構成に対するアプリケーションの要件を検査するテスト タイプ。 通常、テスト チームによって実行されます。
  5. 動的テスト: コードの動的な動作のテストを説明するためにソフトウェア エンジニアリングで使用される用語。 通常、これはテスト チームによって実行されます。 続きを読む 動的テスト
  6. ドメインのテスト: プログラムが有効な入力のみを受け入れるかどうかのチェックを含むホワイト ボックス テスト手法。通常はソフトウェア開発チームによって実行されますが、場合によっては自動テスト チームによっても実行されます。
  7. エラー処理テスト: システムがエラーのあるトランザクションを適切に処理できるかどうかを判定するソフトウェア テストの種類。通常はテスト チームによって実行されます。
  8. エンドツーエンドのテスト: システム テストと同様に、データベースとの対話、ネットワーク通信の使用、または必要に応じて他のハードウェア、アプリケーション、またはシステムとの対話など、実際の使用を模倣した状況で完全なアプリケーション環境をテストすることが含まれます。 これは QA チームによって実行されます。 続きを読む エンドツーエンドのテスト
  9. 耐久試験: 長時間の実行で発生する可能性のあるメモリ リークやその他の問題をチェックするテストの種類。 通常、これはパフォーマンス エンジニアによって実行されます。 続きを読む 耐久試験
  10. 探索的テスト: ブラックボックステスト手法は、計画や文書化なしで実行されます。通常は手動テスト担当者によって実行されます。詳しくは 探索的テスト
  11. 等価分割テスト: ソフトウェア ユニットの入力データをデータのパーティションに分割し、そこからテスト ケースを導き出すソフトウェア テスト手法。 通常、QA チームによって実行されます。 続きを読む 等価分割テスト
  12. フォールト挿入テスト: テスターがテスト対象のアプリケーションが例外を処理できる方法に集中できるようにする、包括的なテスト戦略の要素。 これは QA チームによって実行されます。
  13. 正式な検証テスト: 数学の形式的手法を使用して、特定の形式仕様またはプロパティに関して、システムの基礎となる意図されたアルゴリズムの正しさを証明または反証する行為。通常は QA チームによって実行されます。
  14. 機能テスト テスト対象のソフトウェアコンポーネントの仕様に基づいてテストケースを作成するブラックボックステストの一種。テストチームによって実行されます。詳細はこちら 機能テスト
  15. ファズテスト: 無効なデータ、予期しないデータ、またはランダムなデータをプログラムの入力に提供するソフトウェア テスト手法。突然変異テストの特別な領域です。 ファズテストはテストチームによって実行されます。 続きを読む ファジングテスト
  16. ゴリラのテスト: 特定の XNUMX つのモジュールのテストに重点を置くソフトウェア テスト手法。 通常、完全なテストを実行するときに、品質保証チームによって実行されます。
  17. グレー Box テスト: ブラックの組み合わせ Box と白 Box テスト手法:ソフトウェアを仕様書に照らし合わせてテストする手法であり、その際、ソフトウェアの内部動作に関する知識を活用する。開発チームまたはテストチームのどちらでも実施可能である。
  18. ガラスボックステスト: ホワイト ボックス テストに似ていますが、アプリケーション コードの内部ロジックに関する知識に基づいています。開発チームによって実行されます。
  19. GUI ソフトウェアのテスト: グラフィカル ユーザー インターフェイスを使用する製品をテストし、書面に記載された仕様を満たしていることを確認するプロセス。 これは通常、テスト チームによって行われます。 続きを読む GUIソフトウェアのテスト
  20. グローバリゼーションテスト: 可能なあらゆる種類の国際入力を使用して、任意の文化/ロケール設定で製品の適切な機能をチェックするテスト方法。 これはテストチームによって実行されます。 続きを読む グローバリゼーションテスト
  21. ハイブリッド統合テスト: この種のテストの利点を活用するために、トップダウンとボトムアップの統合手法を組み合わせたテスト手法。 通常、これはテスト チームによって実行されます。
  22. 統合テスト: ソフトウェア テストのフェーズ。個々のソフトウェア モジュールを組み合わせてグループとしてテストします。 通常、テスト チームによって実施されます。 続きを読む 統合テスト
  23. インターフェイスのテスト: システムまたはコンポーネントが相互にデータと制御を正しく受け渡すかどうかを評価するために実施されるテスト。 通常、これはテスト チームと開発チームの両方によって実行されます。 続きを読む インターフェイステスト
  24. インストール/アンインストールのテスト: 新しいソフトウェアを正常にインストールしてセットアップするために顧客が行う必要がある作業に重点を置いた品質保証作業。これには、完全、部分的、またはアップグレードのインストール/アンインストール プロセスが含まれる場合があり、通常はソフトウェア テスト エンジニアが構成マネージャーと協力して行います。
  25. 国際化テスト: さまざまな言語やロケールで使用した場合でも、製品の機能が壊れず、すべてのメッセージが適切に外部化されることを保証するプロセス。 通常、これはテスト チームによって実行されます。
  26. システム間テスト: アプリケーション間の相互接続が正しく機能しているかどうかを確認することに重点を置いたテスト手法。通常はテスト チームによって実行されます。
  27. キーワード主導のテスト: テーブル駆動テストまたはアクションワード テストとも呼ばれる、自動テストのためのソフトウェア テスト方法論であり、テスト作成プロセスを計画段階と実装段階の XNUMX つの異なる段階に分割します。 手動または自動のテスト チームが使用できます。 続きを読む キーワード主導のテスト
  28. 負荷テスト: システムまたはデバイスに要求を与え、その応答を測定するテスト手法。 通常、これはパフォーマンス エンジニアによって実施されます。 続きを読む 負荷テスト
  29. ローカリゼーションテスト: ソフトウェア テスト プロセスの一部は、グローバル化されたアプリケーションを特定の文化/ロケールに適応させることに重点を置いています。 通常、これはテスト チームによって行われます。 続きを読む ローカリゼーションテスト
  30. ループテスト: プログラムループを実行するホワイトボックステスト手法。開発チームによって実行されます。詳しくはこちら ループテスト
  31. 手動によるスクリプト化されたテスト: テストケースを設計し、実行前にチームでレビューするテスト方法。 これは手動テスト チームによって行われます。
  32. 手動サポートテスト: データを準備し、自動システムからのデータを使用しながら、人が実行するすべての機能をテストするテスト手法。 それはテストチームによって実施されます。
  33. モデルベースのテスト: ソフトウェアテストを実行するために必要なアーティファクトを設計および実行するためのモデルベースの設計のアプリケーション。 通常、テスト チームによって実行されます。 続きを読む モデルベースのテスト
  34. 突然変異テスト: 通常のテスト実行中にほとんど、またはまったくアクセスされないコードのセクションをテストするために、プログラムのソース コードまたはバイト コードを少し変更することを含むソフトウェア テストの方法。 通常、テストはテスターに​​よって行われます。 続きを読む 突然変異テスト
  35. モジュール性主導のテスト: テスト対象のアプリケーションのモジュール、セクション、機能を表す小さな独立したスクリプトの作成を必要とするソフトウェア テスト手法。 通常、これはテスト チームによって実行されます。
  36. 非機能テスト: ソフトウェア アプリケーションの非機能要件のテストに焦点を当てたテスト手法。 パフォーマンス エンジニアまたは手動テスト チームが実施できます。 続きを読む 非機能テスト
  37. 陰性検査: 「失敗テスト」とも呼ばれるテスト方法で、コンポーネントまたはシステムが動作しないことを示すことを目的としたテスト方法です。手動または自動テスト担当者によって実行されます。詳しくはこちら 陰性検査
  38. Opera試験: システムまたはコンポーネントを運用環境で評価するために実施されるテスト手法。通常はテストチームによって実行されます。詳細はこちら Opera試験
  39. 直交配列テスト: ユーザー インターフェイス テスト、システム テスト、回帰テスト、構成テスト、パフォーマンス テストに適用できる、体系的で統計的なテスト方法。 これはテストチームによって実行されます。 続きを読む 直交配列テスト
  40. ペアテスト: XNUMX 人のチーム メンバーが XNUMX つのキーボードで協力してソフトウェア アプリケーションをテストするソフトウェア開発手法。 XNUMX 人はテストを実行し、もう XNUMX 人はテストを分析またはレビューします。 これは、XNUMX 人のテスターと開発者またはビジネス アナリストの間で行うことも、XNUMX 人のテスターの間で両方の参加者が交代でキーボードを操作して行うこともできます。
  41. パッシブテスト: 特別なテスト データを導入せずに、実行中のシステムの結果を監視するテスト手法。 これはテストチームによって実行されます。
  42. 並列テスト: 古いバージョンを置き換える新しいアプリケーションがインストールされ、正しく実行されていることを確認することを目的としたテスト手法。 これはテストチームによって実施されます。 続きを読む 並列テスト
  43. パステスト: プログラムの各論理パスのカバレッジ基準を満たすことを目的とした典型的なホワイトボックステスト。通常は開発チームによって実行されます。詳しくはこちら パステスト
  44. ペネトレーションテスト: 悪意のあるソースからの攻撃をシミュレートすることによって、コンピュータ システムまたはネットワークのセキュリティを評価するテスト方法。 通常、侵入テストは専門の会社によって実施されます。 続きを読む 侵入テスト
  45. 性能試験: システムまたはコンポーネントが指定されたパフォーマンス要件に準拠しているかを評価するために実施される機能テスト。 通常、これはパフォーマンス エンジニアによって実施されます。 続きを読む 性能試験
  46. 資格試験: 以前のリリースの仕様に対するテスト。通常、ソフトウェアが指定された要件を満たしていることを実証するために、開発者によって消費者向けに実施されます。
  47. Ramp テスト: システムが故障するまで入力信号を継続的に発生させるテストのタイプ。 これは、テスト チームまたはパフォーマンス エンジニアによって実行される場合があります。
  48. 回帰試験: プログラムに変更 (バグ修正や新機能など) を加えた後、プログラムを再テストすることでソフトウェア エラーを発見しようとするソフトウェア テストの種類。 これはテストチームによって実行されます。 続きを読む 回帰テスト
  49. 回復テスト: システムがクラッシュ、ハードウェア障害、またはその他の致命的な問題からどの程度回復するかを評価するテスト手法。 これはテストチームによって実行されます。 続きを読む 回復テスト
  50. 要件のテスト: 要件が正しく、完全で、明確で、論理的に一貫していることを検証し、それらの要件から必要かつ十分なテスト ケースのセットを設計できるようにするテスト手法。 これは QA チームによって実行されます。
  51. セキュリティテスト: 情報システムがデータを保護し、意図したとおりの機能を維持しているかどうかを判断するプロセス。 これは、テスト チームまたは専門のセキュリティ テスト会社によって実行できます。 続きを読む セキュリティテスト
  52. 健全性テスト: 新しいソフトウェア バージョンが大規模なテスト作業に使用できるほど十分にパフォーマンスが優れているかどうかを判断するテスト手法。 これはテストチームによって実行されます。 続きを読む 健全性テスト
  53. シナリオのテスト: 架空のストーリーに基づいたシナリオを使用して、テスト環境の複雑な問題やシステムをじっくり考えるためのテスト活動。テストチームによって実行されます。詳細はこちら シナリオのテスト
  54. スケーラビリティテスト: 一連の非機能テストの一部。サポートされるユーザー負荷、トランザクション数、データ量などのスケールアップ能力を測定するためにソフトウェア アプリケーションをテストします。これはパフォーマンス エンジニアによって実施されます。 続きを読む スケーラビリティテスト
  55. ステートメントのテスト: プログラムテスト中にプログラム内の各ステートメントが少なくとも 1 回実行されるという基準を満たすホワイト ボックス テスト。通常は開発チームによって実行されます。
  56. 静的テスト: ソフトウェアを実際に使用しないソフトウェアテストの一種。主にコード、アルゴリズム、またはドキュメントの健全性をチェックします。コードを書いた開発者が使用します。詳細はこちらをご覧ください。 静的テスト
  57. 安定性試験: アプリケーションがクラッシュするかどうかを判断しようとするテスト手法。 通常、これはパフォーマンス エンジニアによって実施されます。 続きを読む 安定性試験
  58. 煙試験: ソフトウェア システムのすべての基本コンポーネントを検査して、それらが適切に動作することを確認するテスト手法。 通常、スモーク テストは、ソフトウェアのビルドが行われた直後に、テスト チームによって実施されます。 続きを読む スモークテスト
  59. ストレージテスト: テスト対象のプログラムがデータ ファイルを正しいディレクトリに保存していること、および領域不足による予期しない終了を防ぐために十分な領域が確保されていることを検証するテスト タイプ。 通常、これはテスト チームによって実行されます。 続きを読む ストレージテスト
  60. ストレステスト: システムまたはコンポーネントを、指定された要件の制限内またはそれを超えて評価するテスト手法。 通常、これはパフォーマンス エンジニアによって実施されます。 続きを読む ストレステスト
  61. 構造試験: システムまたはコンポーネントの内部構造を考慮し、各プログラム ステートメントが意図した機能を実行することを確認するホワイト ボックス テスト手法。通常はソフトウェア開発者によって実行されます。
  62. システムテスト: 統合されたハードウェアおよびソフトウェア システムをテストして、システムが指定された要件を満たしていることを確認するプロセス。 これは、開発環境とターゲット環境の両方でテスト チームによって実施されます。 続きを読む システムテスト
  63. システム統合テスト: ソフトウェア システムが他のシステムと共存できるかどうかをテストするテスト プロセス。 通常、これはテスト チームによって実行されます。 続きを読む システム統合テスト
  64. トップダウンの統合テスト: ユーザー インターフェイスのシステム階層の最上位から開始し、システム全体が実装されるまでスタブを使用して上から下にテストするテスト手法。 これはテストチームによって実施されます。
  65. スレッドのテスト: トップダウン テスト手法のバリエーション。要件のサブセットの実装に続いてコンポーネントを段階的に統合します。 通常、これはテスト チームによって実行されます。 続きを読む スレッドのテスト
  66. Upgrade テスト: 古いバージョンで作成されたアセットが適切に使用でき、ユーザーの学習に支障がないことを検証するテスト手法。 これはテストチームによって実行されます。
  67. 単体テスト: プログラマーがソース コードの個々のユニットが使用に適しているかどうかをテストする、ソフトウェアの検証および検証方法。 通常、これは開発チームによって実施されます。 続きを読む 単体テスト
  68. ユーザーインターフェイスのテスト: アプリケーションの使いやすさを確認するために実行されるテストの種類。 これはテストチームによって実行されます。 続きを読む ユーザーインターフェイスのテスト

ボーナステストの種類: 以下の5種類のテストは、すべてのQA担当者が知っておくべき追加の手法です。

  1. ユーザビリティテスト: ユーザーがシステムまたはコンポーネントの操作、入力の準備、出力の解釈を習得しやすくなるかどうかを検証するテスト手法。通常はエンドユーザーが実行します。詳細はこちら ユーザビリティテスト
  2. ボリュームテスト: 時間の経過とともに大きくなる可能性のある値(累積カウント、ログ、データ ファイルなど)がプログラムで処理可能であり、プログラムの動作が停止したり、動作が何らかの形で低下したりしないことを確認するテストです。通常はパフォーマンス エンジニアによって実施されます。詳しくは、 ボリュームテスト
  3. 脆弱性テスト: アプリケーションのセキュリティに関連し、アプリケーションの完全性と安定性に影響を与える可能性のある問題を防止することを目的としたテストの種類。 社内のテストチームが実行することも、専門会社に委託することもできます。 続きを読む 脆弱性テスト
  4. ホワイトボックステスト: アプリケーションのコードの内部ロジックの知識に基づくテスト手法。コード ステートメント、分岐、パス、条件のカバレッジなどのテストが含まれます。 それはソフトウェア開発者によって実行されます。 続きを読む ホワイトボックステスト
  5. ワークフローのテスト: エンドユーザーが利用すると予想される特定のワークフローを複製する、スクリプト化されたエンドツーエンドのテスト手法。 通常、テスト チームによって実施されます。 続きを読む ワークフローのテスト

適切なソフトウェアテストタイプの選び方

100種類以上ものテスト手法が存在するため、プロジェクトに最適なアプローチを選択するのは大変な作業に思えるかもしれません。重要なのは、テスト戦略をプロジェクトの目標、制約、そしてリスク許容度と整合させることです。

プロジェクト要件から始めましょう

まず、アプリケーションが提供すべき機能を分析することから始めましょう。ソフトウェアが機密データを扱う場合は、セキュリティテストと侵入テストを早期に優先的に実施してください。顧客向けアプリケーションの場合は、ユーザビリティテストとアクセシビリティテストを最優先事項とすべきです。複雑な統合機能を持つエンタープライズシステムでは、徹底的な統合テストとシステム統合テストが不可欠です。

開発方法論を検討する

開発手法はテスト方法の選択に直接影響を与えます。アジャイルチームは、各スプリント内で自動テスト、回帰テスト、探索的テストといった継続的なテスト手法を活用することでメリットを得られます。ウォーターフォール型プロジェクトは通常、単体テスト、統合テスト、システムテスト、受け入れテストといった明確なフェーズを持つ、段階的なアプローチを採用します。

リスクと影響を評価する

テストは、障害が発生した場合に最も大きな損害をもたらす可能性のある箇所に集中して実施してください。金融アプリケーションでは、広範な精度とセキュリティの検証が必要です。医療システムでは、厳格なコンプライアンステストが求められます。Eコマースプラットフォームでは、ピーク時のトラフィックに対応するために、強力なパフォーマンステストと負荷テストが必要です。

バランス調整の手動および自動アプローチ

すべてのテストタイプに自動化が必要なわけではありません。探索的テスト、ユーザビリティテスト、アドホックテストは人間の判断に依存します。回帰テスト、負荷テスト、スモークテストは自動化によって大きなメリットが得られます。最も効果的な戦略は、利用可能なリソースに基づいて両方のアプローチを組み合わせることです。

AIはソフトウェアテストをどのように変革しているのか

人工知能は、これまで多大な手作業を要していたタスクを自動化することで、ソフトウェアテストのあり方を大きく変えつつあります。AIを活用したテストツールは、アプリケーションの動作、ユーザーパターン、コードの変更などを分析することでテストケースを自動的に生成できるようになり、包括的なテストスイートの構築に必要な時間を劇的に短縮します。

最も影響力のあるアプリケーションの一つは、インテリジェントな欠陥予測です。機械学習モデルは、過去のバグデータとコードの複雑性指標を分析し、欠陥が含まれる可能性が最も高いモジュールを特定することで、チームが問題発生の可能性が最も高い箇所に注力できるようにします。

自己修復機能を備えたテストスクリプトは、もう一つの大きな進歩と言えるでしょう。従来の自動テストは、ユーザーインターフェースが変更されると頻繁に動作しなくなります。AI対応ツールはこれらの変更を検知し、テストセレクタとアサーションを自動的に更新することで、メンテナンスコストを大幅に削減します。

AIを活用したビジュアルリグレッションテストは、ビルド間でスクリーンショットを比較し、意図的なデザイン変更と実際の視覚的な欠陥をインテリジェントに区別します。AIが成熟していくにつれ、QA担当者はAIを自身の専門知識の代替ではなく、補完するものとして捉えるべきです。

手動テストと自動テストの主な違い

手動テストと自動テストのどちらをいつ使用するかを理解することは非常に重要であり、プロジェクトのスケジュール、予算、そして成果物の品質に影響を与えます。以下の比較では、これら2つの基本的なアプローチの本質的な違いを明確に示します。

基準 手動テスト 自動テスト
実行 人間のテスターが段階的に実施 スクリプトとテストツールによって実行されます
速度 人間のペースに制限されて、より遅い より高速、テストを並列実行
初期費用 初期投資の削減 ツール設定とスクリプト作成のため、コストが高くなっています。
再現性 繰り返し作業では人為的ミスが発生しやすい 実行全体を通して一貫性があり信頼できる
以下のためにベスト 探索的テスト、ユーザビリティテスト、アドホックテスト 回帰テスト、負荷テスト、スモークテスト
柔軟性 変化に素早く適応する 変更にはスクリプトの更新が必要です
長期的なROI 反復作業は時間の経過とともにコストが高くなる 頻繁に実施するテストにとって費用対効果が高い

最も成功している品質保証チームは、どちらか一方の手法だけを選択するのではなく、人間の洞察力が必要な領域には手動テストを、反復的でデータ集約型、あるいは時間的制約のある検証には自動テストを活用する、バランスの取れたテスト戦略を構築します。

これでリストは終わりです。この種のテストやその他のテストに適したツールを見つけるには、このコレクションをご覧ください。 テストツール.

よくあるご質問

単体テストは最も広く行われているテスト手法です。なぜなら、開発者は開発中に単体テストを実行し、個々のコードコンポーネントがより広範なシステムに統合される前に、正しく機能することを確認するからです。

機能テストは、ソフトウェアが指定された要件に対して正しく動作するかどうかを検証します。非機能テストは、さまざまな条件下での速度、拡張性、セキュリティ、ユーザビリティなど、ソフトウェアのパフォーマンスを評価します。

コードの変更、バグ修正、新機能の追加後には必ず回帰テストを実施し、既存の機能が変更によって影響を受けていないことを確認する必要があります。

はい。ほとんどのプロジェクトでは、複数のテストタイプを同時に使用します。一般的なプロジェクトでは、開発のさまざまな段階にわたって、単体テスト、統合テスト、システムテスト、ユーザー受け入れテストを組み合わせて実施します。

アルファテストは、開発拠点において開発者と品質保証チームによって社内で実施されます。ベータテストは、最終リリース前に実際のエンドユーザーが実際の環境で実施します。

AIは、自動テストケース生成、インテリジェントな欠陥予測、自己修復型テストスクリプト、およびビジュアル回帰検出を通じてテストを強化し、手作業を大幅に削減し、テストカバレッジを向上させます。

いいえ。AIは反復作業を自動化し、実行速度を向上させますが、探索的テスト、ユーザビリティ評価、複雑なビジネスロジックやユーザーエクスペリエンスの理解には、人間の判断が依然として不可欠です。

探索的テストとは、テスターが自身の経験に基づいてテストを設計・実行する、台本に縛られないアプローチです。構造化テストでは見逃してしまう可能性のある欠陥を発見するために用いられます。