ソフトウェアテストの組合せポリシー


ソフトウェアテストの組合せポリシー


組合せポリシーは、被測定物の入力パラメータをいくつかの組合せ方式に従って組合せて試験例を生成する試験例の選択方法である.異なる組合せポリシーは、異なるテスト・インスタンス生成技術を生成します.ソフトウェアテスト例の生成技術には、次の2つの形式があります.
  • は、テスト入力をモデリングし、テストターゲットに従ってテスト入力を異なるサブセットに分割し、同じサブセットのソフトウェア動作は類似している.このテスト用例生成方式をパーティションテスト(partition testing)と呼び,ソフトウェアテストでよく用いられる等価クラス区分,境界値分析などがこの方式に属する.
  • は、以前の試験例および仕様説明の情報を無視して、いくつかの入力分布に従ってランダムな抽出データに基づいて試験例を生成するランダム試験(random testing)に対応する.

  • この2つの試験形式の解析については,学界では長い議論があり,最終的にGutjahr 1はHamletとTaylorの研究に基づいて,ランダム試験よりも現実的にパーティション試験の方が効率的であることを理論的に示した.
    パーティションテストの重要な問題は、パーティションをどのように識別し、そこから値を選択するかです.等価クラス区分や境界値解析などの問題では,試験問題のパラメータが決定され,その後,各パラメータが個別に解析されてパラメータの適切なパーティション方式が決定される.この特性は,この方式の応用範囲が実際には限られていることを招いた.
    OstrandとBalcerはこの問題を部分的に解決できるカテゴリパーティション(Category Partition,CP)法を提案した.この方法の核心は、すべての独立したパラメータを一定の類似の判断に従って組み合わせ、テストコンポーネントを生成することであり、その構成された組み合わせの数は乗算原理で表すことができる.
    Num=∏i=1Nvi(1) (1) N u m = ∏ i = 1 N v i
    ここでNはパラメータの個数であり、
    vi v iは、各パラメータの値の個数である.
    アルゴリズムの手順は次のとおりです.
    1.  Identify funcitonal units that may be tested separately
        For each funcional unit, identify parameters and environment variables that affect the behavior of the functional unit.
    2.  Indentify choices for each parameter and environment individually.
    3.  Determine constraints among the choices.
    4.  Generate all combinations, so called test frames, of parameters choices that satisfy the constraints.
    5.  Transform the test frames into test cases by instantiating the choices.

    式(1)から,すべての組合せを巡回すると,少し複雑なプログラムのテスト用例の数がテストのリソースをはるかに上回ることが分かる.カテゴリパーティションのテスト例を減らすために、業界内では主に異なる組合せ戦略を採用して例の数を減らす.次の図は、組合せポリシーの分類です.組合せポリシーは、確定性と不確実性の2つのクラスに分けることができます.不確定なものは、啓発的(Heuristic)と人工生命に基づく(AL-based)に分けることができる.人工生命に基づく遺伝的アルゴリズム(GA)と蟻群アルゴリズム(ACA)の分割に基づくシミュレーションアニーリング(SA)と自動高効率試験生成器(AETG)が啓発された.さらに最も単純な完全ランダム(Rand)もある.決定的なポリシーによって生成された結果は決定されます.彼は、主に直交アレイ(OA)とオーバーライドアレイ(CA)が直接完全なテストキットを生成するインスタントと反復の2つに分けることができる.反復コンビネーションポリシーは、テストキットを徐々に構築します.主にパラメータベースの組み合わせ戦略(IPO)があり、使用例ベースの組み合わせ戦略:各選択(Each Choice、ECと略称)、部分対(PPW)、基本選択(BC)、すべての組み合わせ(AC)、反ランダム(AR)、CATS、K-perim、k-bound.
    W.J.Gutjahr. Partition Testing vs. Random Testing: The Influence of Uncertainty. ↩