4.1 機能テスト (Functional Testing)
機能テスト(Functional Testing)は、テストアナリスト(TA)の中核となるタスクの1つです。Foundation Level(FL)シラバスでは機能テストを一般的な「テストタイプ」として簡単にまとめていますが、Advanced Level(AL-TA)ではより深く踏み込み、「機能適合性(Functional Suitability)」のサブ特性について詳しく議論します。
ISO/IEC 25010 (2023) のプロダクト品質モデルでは、機能適合性を3つのサブ特性に分類しています。これらのすべては機能テストによって評価できますが、すべてのテスト活動がこれら3つを等しくカバーできるわけではありません。TAは、特定の機能適合性のサブ特性に関連するプロダクトリスクに対処するために、適切な「テストレベル」と「テスト技法」を選択できなければなりません。
1. 機能完全性テスト (Functional Completeness Testing)
Section titled “1. 機能完全性テスト (Functional Completeness Testing)”「機能完全性(Functional Completeness)」のテストは、ソフトウェアの仕様化されたすべてのタスクと、意図されたユーザーの目的を網羅しているかを確認します。ここでの重要な問いは「求められたものがすべて実装されているか?」です。
- 実施タイミングとアプローチ:
- 機能完全性は可能な限り早い段階で対処すべきです。順次開発モデル(ウォーターフォールなど)では「要件仕様書のレビュー」を通じて、アジャイル開発では「受け入れ基準を含むユーザーストーリーの共同作成時」の議論を通じて確認します。
- 動的テストとしては、システムテスト、システム統合テスト、受け入れテストの段階で実施されます。
- 適したテスト技法:
- 「シナリオベースのテスト(Scenario-based testing)」などの振る舞いベース(Behavior-based)のテスト技法が非常に適しています。他のブラックボックステスト技法も有効です。
- 重要なポイント:
- 達成された機能完全性のレベルを評価する際には、テストベース、テスト条件、テストケース間の「トレーサビリティ(追跡可能性)」が不可欠です。
2. 機能正確性テスト (Functional Correctness Testing)
Section titled “2. 機能正確性テスト (Functional Correctness Testing)”「機能正確性(Functional Correctness)」のテストは、有効・無効な入力の両方に対して、実際の結果が正しいか(正確、精密、一貫しているか)という問いに答えます。
- 実施タイミングとアプローチ:
- 期待される結果を詳細に提供してくれる「有効なテストオラクル」を見つけることが極めて重要です。
- 機能正確性はすべてのテストレベルでテスト可能です。シフトレフトの観点からは、大部分の機能正確性テストは「コンポーネントテスト」や「コンポーネント統合テスト」で行われるべきです。たとえTAがこれらのテストレベルの直接の責任者でなくても、テスト目標を最大限に達成するために貢献すべきです。
- 適したテスト技法:
- すべてのブラックボックステスト技法、経験ベースのテスト技法、およびコラボレーションベースのテストが適しています。
3. 機能適切性テスト (Functional Appropriateness Testing)
Section titled “3. 機能適切性テスト (Functional Appropriateness Testing)”「機能適切性(Functional Appropriateness)」のテストは、実装された機能が、ユーザーの指定されたタスクや目的の達成を本当に促進するか(役立つか)を検証します。ここでの焦点は「実装されたすべての機能がユーザーのニーズを満たしているか?」です。
- 実施タイミングとアプローチ:
- インタラクティブなアプリケーションでは、機能適切性のテストに「ユーザーインターフェース設計のレビュー」が含まれることがあります。
- 動的テストとしては、順次開発モデルにおけるシステムテストや受け入れテスト、アジャイル開発における「デモセッション」などから開始されます。
- 適したテスト技法:
- 「探索的テスト(Exploratory testing)」やコラボレーションベースのテストが最も適しています。また、振る舞いベースのブラックボックステスト技法も有効です。