Skip to content

3.5 最適なテスト技法の適用 (Applying the Most Appropriate Test Techniques)

テストは、与えられたコンテキスト(状況や環境)の中で可能な限り効果的かつ効率的であるべきです。
テストアナリスト(TA)は、特定のテスト技法に固執するのではなく、プロジェクトの状況を分析し、最適なテスト技法を選択・組み合わせることで、テストマネージャを支援する重要な役割を担います。

テスト技法の選択に影響を与える主な要因

Section titled “テスト技法の選択に影響を与える主な要因”

最適なテスト技法の選択は、以下のようないくつかの重要な要因の影響を受けます。

  • テスト目的 (Test objectives): システムのどの側面を評価するかによって技法が変わります。例えば、工学系の数値計算にはドメインテストが、信用リスク管理にはデシジョンテーブルテストが適しています。
  • プロダクトリスク (Product risks): 各テスト技法は、特定の種類の欠陥(バグ)を検出することに特化しています。
    • データベースの技法: データ処理、ドメイン実装、計算、パラメータの組み合わせに関する欠陥の検出に有効。
    • 振る舞いベースの技法: 機能の欠落、通信の欠陥、処理の欠陥など、ユーザー要件に関する欠陥の検出に有効。
    • ルールベースの技法: 論理や制御フローの欠陥の検出に有効。
  • リスク分析 (Risk analysis): リスクレベルが高い領域には、より厳格なカバレッジ基準(例:ペアワイズではなく、すべての組み合わせを網羅する基準)が求められます。逆にリスクが低い領域やスケジュールが厳しい場合は、経験ベースのテストが適しています。
  • テストベース (Test basis): 仕様書がモデル(状態遷移図など)で記述されている場合は、それに基づいたテスト技法を使用できます。逆に、テストオラクル(期待結果)を導き出すのが困難な場合は、メタモルフィックテストや経験ベースのテストが有効です。
  • 再発する欠陥タイプの知識: 過去のイテレーションやプロジェクトで頻発した欠陥の傾向がわかっている場合、同じ欠陥を狙い撃ちできる技法(チェックリストベースドテストなど)を選択します。
  • テスト担当者の知識と経験: TAが特定の技法に不慣れな場合、重要なテストでその技法を使用することは推奨されません。また、ドメイン知識が乏しい場合は探索的テストの効果が薄くなります。
  • ソフトウェア開発ライフサイクル (SDLC): シーケンシャルモデル(ウォーターフォールなど)では形式的な技法が適していますが、反復型(アジャイルなど)では軽量な経験ベースの技法や、テスト設計の自動化が適しています。
  • 顧客および契約・規制上の要件: 契約で特定のテストレベルやシナリオが指定されている場合や、機能安全規格(自動車のISO 26262など)の要件に従う必要がある場合、適用すべき技法やカバレッジが法的に義務付けられることがあります。
  • プロジェクトの制約: 時間や予算の制約により、時間のかかる技法や高価なリソースを必要とする技法の使用が見送られることがあります。

技法の組み合わせによる相乗効果

Section titled “技法の組み合わせによる相乗効果”

実際のテスト現場では、欠陥検出の効率と有効性を高めるために複数のテスト技法を組み合わせることが一般的です。

  • 状態遷移テストのガード条件(分岐条件)に対して、境界値分析(BVA)を適用する。
  • シナリオベースのテストの中で、特定の条件値や変数を決定するためにドメインテストを適用する。
  • 循環的なビジネスプロセスのリスクに対処するため、シナリオベースのテストとラウンドトリップカバレッジを組み合わせる。

テスト設計の自動化によるメリットとリスク

Section titled “テスト設計の自動化によるメリットとリスク”

TAは、ツールを使用してテスト設計を自動化することができます。代表的なものがモデルベースドテスト (MBT) です。TAがテストモデルを作成すると、ツールがそのモデルからテストケースやテストウェアを自動生成します。

  • 欠陥の予防: テスト用のモデルを作成するプロセス自体が、テストベース(仕様書)の品質を評価・レビューする強力な手段となります。
  • 機能の拡張: 組み合わせテスト、ランダムテスト、N-スイッチカバレッジなどの複雑なカバレッジ基準を簡単に適用できるようになり、テスト漏れのリスクを軽減します。
  • 理解しやすさの向上: ツールで指定されたテスト選択基準は、テスト条件との関連性が明確であり、なぜそのカバレッジが必要なのかを論理的に説明しやすくなります。
  • 反復作業と保守作業の削減: モデルが「信頼できる唯一の情報源 (Single source of truth)」となるため、仕様変更があった場合でもモデルを一つ修正するだけで済み、大量のテストスクリプトを手作業で書き直す手間が省けます。
  • 品質とコラボレーションの向上: 手作業によるヒューマンエラーを防ぎ、テストウェアの一貫性が高まります。また、視覚的なモデルはステークホルダー間のコミュニケーションを促進し、要件の共通理解を生み出します。

自動化には強力なメリットがある一方で、TAは以下のリスクにも注意を払う必要があります。

  • モデルに表現されていない(書き漏らした)テスト条件を見落としてしまうリスク。
  • テストモデル自体の保守(メンテナンス)にかかる工数を過小評価してしまうリスク。
  • 作成したモデルが複雑になりすぎ、他のステークホルダーにとって理解しにくくなるリスク。
  • その他、一般的なテスト自動化に関するリスク(ツールの学習コスト、ベンダーロックインなど)。