Skip to content

3.1 データベースドテスト技法 (Data-Based Test Techniques)

「データベースドテスト技法(Data-Based Test Techniques)」 は、テスト対象システム(SUT)の入力データ、出力データ、あるいは内部データの構造や論理的な関係性に着目してテストケースを導出するブラックボックス技法の一群です。

システムの内部構造(コード)を知る必要はありませんが、データの入力ドメイン(入力データの集合)が引き起こす様々な振る舞いを網羅するために、テストアナリストにとって必須のスキルとなります。

シラバスv4.0の改訂により、技法の分類が整理されました。

  • デシジョンテーブルテストは、本バージョンから「3.3 ルールベースのテスト技法」へ移動しています。
  • クラシフィケーションツリー技法は、独立したテスト技法ではなく、組合せテストを行う際のパラメータ整理を支援するモデリング手法として統合されました。

Foundation Levelで学習した「同値分割法(EP)」と「境界値分析(BVA)」を基礎とし、Advanced Level(v4.0)では以下の3つの高度なデータベースドテスト技法に焦点を当てています。


同値分割法と境界値分析を、複数のパラメータが複雑に絡み合う領域(ドメイン)へと拡張した技法です。論理演算子(AND, OR, NOT)や関係演算子(<, >, =など)で定義された複雑な境界条件に対してテストを行います。

  • 境界を構成する点 (Points): 境界に対する位置関係に基づき、カバレッジを測定するための4つの点を定義します。
    • ONポイント: 境界線上にある点。
    • OFFポイント: 境界線に隣接する点(開いた境界か閉じた境界かによって、内側か外側かが変わります)。
    • INポイント: 同値パーティションの内側にある点(ONポイント以外)。
    • OUTポイント: 同値パーティションの外側にある点(OFFポイント以外)。
  • カバレッジ基準: 許容されるテスト工数とリスクに応じて、ON/OFFポイントのみを用いる「単純ドメインカバレッジ (Simplified domain coverage)」か、IN/OUTポイントも追加してより多くの欠陥を検出する「信頼性ドメインカバレッジ (Reliable domain coverage)」を選択します。

2. 組合せテスト技法 (Combinatorial Testing)

Section titled “2. 組合せテスト技法 (Combinatorial Testing)”

ソフトウェアの故障の多くが「特定のパラメータ値の組み合わせ」によって引き起こされるという事実(相互作用の故障)に基づき、多次元のドメインを効率的に探索する技法です。クラシフィケーションツリー(分類木)などを活用してパラメータを整理した上で適用します。

  • ベースチョイスカバレッジ (Base choice coverage): 各パラメータについて「最も重要(または最も頻出する)基準となる値(ベース値)」を決定し、それを組み合わせたベーステストケースを作成します。その後、各パラメータの値を1つずつ非ベース値に変更していくアプローチです。
  • ペアワイズカバレッジ (Pairwise coverage): 任意の2つのパラメータのすべての値の組み合わせが、少なくとも1回はテストされるようにするアプローチです。
  • 適用: 膨大な組み合わせ爆発を防ぎつつ、1〜2個の条件の相互作用によるバグ(全体の約97%を占めるとされる)を効率的に検出します。

指定された確率分布に基づいて、入力ドメインからランダムにテストデータを選択する技法です。多くの場合、期待結果の自動判定(自動テストオラクル)と組み合わせて使用されます。

  • ガイデッドとアンガイデッド: 確率分布を最初から最後まで固定する「アンガイデッド(誘導なし)」と、過去に選択された値やバグの偏り(クラスター)に基づいて分布を動的に変化させる「ガイデッド(誘導あり)」のアプローチがあります。
  • メリット: ドメインに関する知識が乏しい場合や、大量のテストデータが必要な場合に非常に費用対効果が高くなります。また、手動テストで陥りがちな「テスト担当者の先入観(この機能はバグがないだろうという思い込み)」によるバグの見落としを防ぐことができます。
  • デメリットとリスク: データの意味(セマンティクス)を無視するため特定のバグを見落とすリスクや、冗長なテストが大量に生成されるリスクがあるため、他の技法とバランスを取って適用することが重要です(ファジングやカオスエンジニアリングなどでも応用されます)。