測試用例的設計方法不是單獨存在的,具體到每個測試項目裡都會用到多種方法,每種類型的軟體有各自的特點,每種測試用例設計的方法也有各自的特點,針對不同軟體如何利用用例設計方法是非常重要的。在實際測試中,往往是綜合使用各種方法才能有效地提高測試效率和測試覆寫率。這就需要認真掌握這些方法的原理,積累更多的測試經驗,以有效地提高測試水準。
以下是各種測試方法選擇的綜合政策:
綜上所述,測試用例的設計與測試方法的選取,需要根據實際項目來選擇,單獨使用某種方法或生搬硬套是不可行的,我們隻有在掌握各種理論知識後,靈活加以選擇應用,才能達到最好的效果。
下面具體介紹一下這些設計測試用例的方法:
1.首先進行等價類劃分,包括輸入條件和輸出條件的等價劃分,将無限測試變成有限測試,這是減少工作量和提高測試效率最有效的方法。
2.在任何情況下都必須使用邊界值分析方法,經驗表明,用這種方法設計出的測試用例發現程式錯誤的能力最強。
3.可以用錯誤推測法追加一些測試用例,這需要靠測試工程師的智慧和經驗。
4.對照程式邏輯,檢查已設計出的測試用例的邏輯覆寫程度,如果沒有達到要求的覆寫标準,應當再補充足夠的測試用例。
5.如果程式的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法和判定表驅動法。
6.對于參數配置類軟體,要用正交法選擇較少的組合方式達到最佳效果。
7.狀态圖法(功能圖)也是很好的測試用例設計方法,我們可以通過不同時期條件的有效性設計不同的測試資料。
8.對于業務流程清晰的系統,可以利用場景法貫穿整個測試案例過程,在案例中綜合使用各種測試方法。
一、等價類劃分法
最典型的黑盒測試方法;要對需求說明書中的各項需求,尤其是功能需求進行細緻分析;把程式的輸入劃分成若幹個部分,從每個部分中選取少數代表性資料作為測試用例。
根據功能需求中各個輸入條件劃分為等價類和非等價類。
1. 有效等價類:對程式的規格說明有意義,合理的輸入資料所構成的集合
2. 無效等價類:對程式的規格說明無意義或不合理的輸入資料所構成的集合
等價類的假設和核心要點:
假設1:如果一個測試用例能夠捕獲(發現)缺陷,那麼選擇該等價類中的其他測試用例也能夠捕獲(發現)該缺陷。
假設2:如果一個測試用例不能捕獲(發現)缺陷,那麼選擇該等價類中的其他測試用例也不能捕獲(發現)該缺陷。(這就是為什麼可以選擇典型)
等價類劃分典型參考:
1.輸入條件是必須成立的情況,可以劃分為一個有效,一個無效。(辨別符首字元必須為字母。是或不是)
2.輸入條件是取值範圍,可以劃分為一個有效,二個無效等價類。(輸入值必須在-99~99之間)
3.輸入條件是布爾量,确認一個有效,一個無效等價類。(窮舉測試了)
4.若已劃分的某等價類中的各個元素在程式中的處理方式不同,則應該将此等價類進一步分為更小等價類。(正數、負數處理方式不同)
5.規定了輸入資料必須遵守的規則,可以劃分一個有效,若幹無效等價類。(二位正數加法中,小數、字母、特殊字元等輸入為無效等價類)
6.規定了輸入值的集合,而且程式對每個值進行不同處理。為每個值确認一個有效等價類,其他為無效等價類。(交通工具類型公共汽車、計程車)
二、 邊界值方法
選取正好等于、剛剛大于、剛剛小于邊界的值作為測試資料,重點測試最後一個肯定合法的資料和剛剛超過邊界的非法資料。
通常和等價類一起使用,産生一套完整的測試用例;等價類劃分是從等價區間中選取代表性的值,而邊界值的重點是等價區間的邊界值,正好邊界值是等價區間中最具代表性的值。
三、因果圖
形式化的語言,不僅描述了原因和結果之間的關系,也描述了各個原因之間、各個結果之間複雜關系的組合。因是程式的輸入條件,而果則是程式的輸出。
使用因果圖設計測試用例:
1) 分析被測應用,确認原因(輸入)和結果(輸出)。
2) 确定因果邏輯關系。找出輸入和輸出之間的邏輯關系。
3) 确定限制關系。原因與原因之間,結果之間限制限制。
4) 把因果圖轉換為判定表。
5) 根據限制條件簡化判定表,并給出結果。
6) 設計測試用例
四、正交試驗法
研究多因素、多水準的一種設計方法,它是根據正交性從全面試驗中挑選出部分有代表性的點進行試驗,這些有代表性的點具備了“均勻分散,齊整可比”的特點,是一種高效率、快速、經濟的設計方法。
為什麼使用正交試驗法:
對于單因素或兩因素試驗,因其因素少,試驗的設計、實施與分析都比較簡單。但在實際工作中,常常需要同時考察3個或3個以上的試驗因素,若進行全面試驗,試驗的規模很大,由于時間和成本的限制我們不可能進行全面試驗,但是具體挑出其中的哪些測試用例進行測試我們心裡拿不準,總擔心不做不挑選的那些測試用例會遺漏一些嚴重缺陷,為了有效的、合理地減少測試的工作時間與費用,我們利用正交試驗法來設計測試用例。正交試驗法就是安排多因素試驗,尋求最優水準組合的一種高效率的試驗設計方法。
五、狀态圖:(Statechart Diagram)
描述一個實體基于事件反應的動态行為;描述的是一種動态說明,它由輸入條件和目前狀态共同決定輸出資料和後續狀态;關注程式所處的不同狀态,以及狀态之間的轉換。
使用狀态圖法主要是對系統的較高層次狀态進行分析,而不是細節狀态。
設計用例的步驟:
1.分析需求後列出被測系統所有輸入事件;
2.找出一個初始狀态,這個基礎上加上所有可能的輸入事件,會産生一些新的狀态;
3.先分析上一個狀态完成後再分析下一狀态,直到所有狀态都分析完。
4.把測試用例表轉換為測試用例(根據實際情況補充一些測試用例)
六、場景法
首先要列出基本流和備選流。(事件觸發來控制流程,事件觸發形成場景,事件觸發的順序和處理結果形成事件流。)
關注的是程式所執行的流程,也就是觸發狀态變化的事件順序。
1) 基本流:指的是基本流程,主要的流程,關鍵的流程。
2) 備選流:指的是程式中其它的分支流程。
3) 場景法設計用例:
1.根據需求說明書,描述出程式的基本流及各項備選流;
2.根據基本流和各項備選流生成不同的場景。
3.對每個場景生成相應的測試用例。
4.對生成的所有測試用例重新複審,去掉多餘的測試用例,測試用例确定後,對每個測試用例确定測試資料。
七、錯誤推測法
在測試程式時,人們可以根據經驗或直覺推測程式中可能存在的各種錯誤,進而有針對地編寫檢查這些錯誤的測試用例的方法。(對程式的流程非常熟悉,測試經驗豐富,工作時間長)。
基本思路:列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況,根據它們選擇測試用例。例如:在單元測試時曾列出的許多在子產品中常見的錯誤,以前産品測試中曾經發現的錯誤等,這些都是經驗的總結。還有輸入資料和輸出資料為0的情況,輸入表格為空格或輸入表格隻有一行,這些都是容易發生錯誤的情況,可選擇這些情況下的例子作為測試用例。
總之,就是進行錯誤的操作,說白了就是根據經驗補充一些特殊的測試用例。
八、判定表法
分析和表達多邏輯條件下執行不同操作的情況的工具。
1) 四個部分:
1.條件樁(condition Stub):列出了問題的所有條件,通常認為列出的條件的次序無關緊要;
2.動作樁(Action Stub):列出了問題可能采取的操作,這些操作的排列順序沒有限制;
3.條件項(Condition entry):列出針對它左列條件的取值,在所有可能情況下的真假值;
4.動作項(Action Entry):列出在條件項的各種取值情況下應該采取的動作。
2) 建立步驟:
1.确定規則的個數,假如有n個條件。每個條件有兩個取值(0,1),故有2的n次方種規則;
2.列出所有的條件樁和動作樁;
3.填入條件項;
4.填入動作項,得到初始判定表;
5.簡化,合并相似規則(相同動作)
3) 優點:能夠将複雜的問題按照各種可能的情況全部列出來,簡明并避免遺漏。是以,利用判定表能夠設計出完整的測試用例集合。在一些資料處理問題當中,某些操作的實施依賴于多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分别執行不同的操作,判定表很适合處理此類問題。