軟件測試中的組合策略

軟件測試中的組合策略

組合策略是一種測試用例的選取方法,該方法是採用將被測件的輸入參數根據一些組合方式進行組合來生成測試用例。不同的組合策略,生成不同的測試用例生成技術。
軟件測試用例的生成技術有如下兩種形式:

  1. 對測試輸入進行建模分析,按照測試目標將測試輸入分成不同的子集,同一個子集中的軟件行爲都是相似的。這種測試用例生成方式叫做分區測試(partition testing),軟件測試中常用的等價類劃分,邊界值分析等都屬於該方式。
  2. 與分區測試相對應的是隨機測試(random testing),這種測試忽略先前的測試用例以及規格說明中的信息,依照一些輸入分佈隨機的抽取數據生成測試用例。

對於這兩種測試形式的分析,學術界有較長時間的爭論,最終Gutjahr1在Hamlet與Taylor研究的基礎上從理論上表明瞭分區測試在現實中比隨機測試更有效能。

分區測試中一個關鍵問題是如何識別分區以及如何從中選擇值。在等價類劃分和邊界值分析等問題中,測試問題的參數是確定的,而後每一個參數被單獨分析以確定該參數的適合分區方式。這種特性導致了該方式應用範圍在實際中很有限。

Ostrand和Balcer提出了類別分區(Category Partition,CP)方法可以部分的解決該問題。該方法的核心是將所有獨立的參數按照一定的相似判據進行組合,生成測試組件,其所構成的組合數量可以用乘法原理表示:

(1)Num=i=1Nvi
其中N爲參數的個數,vi 爲每一個參數的值的個數。
其算法步驟如下:
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)可以看出,如果遍歷所有組合,則稍微複雜一點的程序的測試用例數量將遠遠超出測試的資源。爲了減少類別分區的測試用例,業內主要採用不同的組合策略來減少用例的數量。
下圖是組合策略的分類:
這裏寫圖片描述
組合策略可以分成確定性的和不確定性的兩大類。非確定的可以分成啓發式的(Heuristic)與基於人工生命的(AL-based)。啓發式的有模擬退火(SA)和自動高效測試生成器(AETG),基於人工生命的分成遺傳算法(GA)和蟻羣算法(ACA);此外還有最簡單的完全隨機(Rand)。
確定性的策略生成的結果是確定的。他可以分成即時與迭代兩種,即時策略主要有正交陣列(OA)與覆蓋陣列(CA)直接生成完整的測試套件。迭代組合策略逐步構建測試套件。主要有基於參數的組合策略(IPO),基於用例的組合策略:每一個選擇(Each Choice,簡稱EC),部分成對(PPW),基本選擇(BC),所有組合(AC),反隨機(AR),CATS, K-perim, k-bound.


  1. W.J.Gutjahr. Partition Testing vs. Random Testing: The Influence of Uncertainty.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章