一、為什麼要寫測試用例
寫測試用例可以讓測試的需求覆蓋更加全面,讓測試工作進行得條理有序,且方便移交和交流, 好的測試用例要做到:結構設定合理,case覆蓋全面,且具有可執行性,可重複等特點。
二、軟體測試文件
1、測試範圍列表:需求編號、需求型別,所屬模組、需求名稱、複雜度、複用性、自測充分性、是否公用模組、使用頻率、優先順序
2、測試用例一般包含的要素:用例編號、測試專案、用例標題、優先順序(致命、嚴重、一般、微小、建議)、預置條件、輸入引數、執行步驟、預期結果
3、 缺陷報告要素:缺陷編號、缺陷標題、嚴重級別、重現步驟、缺陷狀態、提交人、時間、附件
三、測試用例的常用方法
1、等價類
方法:根據需求列出輸入,並對每一個輸入的規則進行分析,然後對每一條規則進行正確和錯誤的羅列,最後將的所有的輸入進行正確和錯誤用例的組合,一條正確的用例儘可能多的覆蓋每個輸入的不同有效資料,一條錯誤的用例只能含有一個無效資料(控制變數)。 對於一個輸入應考慮它的:資料型別、長度、取值範圍、是否可重複,是否為空(為空可分為不輸入和輸入空格),組成規則等內容 。
優點:簡單高效,能快速評估測試用例數量;
缺點:只考慮了輸入的有效和無效,對資料的組合比較隨機,邊界缺陷不容易發現 ;
適用範圍:只在存在輸入的需求都適用。
2、邊界值
邊界值分析方法的理論基礎是假定大多數的錯誤是發生在各種輸入條件的邊界上,如果在邊界附近的取值不會導致程式出錯,那麼其他取值導致程式錯誤的可能性也很小。
方法:對於存在邊界的輸入取邊界的上點、內點、離點進行測試。
上點:邊界上的點
內點:邊界內的點
離點:閉區間間靠近上點但在區間外的一點,開區間則是在區間內的一點 主要是用於對等價類的補充
優點:能更容易發現邊界,更全面系統的測試邊界上可能存在的問題;
缺點:只能做為一個對其他設計方法的補充;
適用範圍:有輸入引數且存在取值邊界或長度邊界時。
3、判定表
方法:確定輸入和輸出,列出所有的條件樁和動作樁;填入條件項;針對每個條件項計算並填入動作項;化簡,合併相似的規則。
優點:能把複雜的問題按各種可能的情況一一列舉出來,簡明而易於理解,也可避免遺漏;
缺點:條件樁過多時,用例呈指數增長,且在合併相似的項時存在漏測的風險;
適用範圍:多個輸入判斷條件存在邏輯關係,且不分先後的情況。
4、正交實驗法
從大量的測試點中挑選出適量的有代表性的點,應用依據迦羅瓦理念匯出的正交表,合理安排測試資料的方法 。
優點:用於考慮到所有的組合又使例數量最少 ;
適用範圍:輸入的引數之間是獨立的,不存在相互依賴的關係。
5、流程分析法
流程分析法是將軟體系統的某個流程看成路徑,根據流程的順序依次進行組合,使得各個分支都能走到;。
方法:畫出流程圖,確定測試路徑,選擇測試資料;構造測試用例;
優點:覆蓋了輸入,處理和輸入;
缺點:覆蓋的輸入取值不多,需要對業務比較瞭解 ;
適用範圍:流程比較複雜的情況。
6、狀態遷移法
即有深度和廣度的狀態樹 。
方法:畫出狀態遷移圖;通過遷移圖畫出狀態轉換樹;從轉換枝推匯出測試路徑;編寫測試用例 。
優點:保證每一個節點的所有可達狀態都被測試到;
缺點:沒有對不可達的狀態進行測試的覆蓋;
適用範圍:從一個操作可以到達多個可能的操作或從一個狀態可以到達多個可能的規定狀態 且狀態取值或輸入變化有固定的要求順序。
7、因果圖
因果圖提供了一個把規格轉化為判定表的系統方法,且它最終生成的就是判定表。
方法:把大的系統規格劃分成可以測試的規格片段;分析哪些是原因、哪些是結果;畫出因為圖;把因果圖轉換成判定表;簡化判定表;
優點:能幫助我們按照一定步驟,高效的選擇測試用例,設計多個輸入條件組合用例;能考慮到多個條件組合起來可能出錯的情況;
缺點:輸入條件與輸出條件的因果關係有時很難從SRS中得到,即便得到了也會因為因果關係複雜導致因果圖非常龐大,從而使測試用例數目非常多;
8、輸入域覆蓋法
是一種綜合的方法,綜合了等價類和邊界值等方法
9、輸出域覆蓋法
從輸入結果倒推輸入的測試方法
10、異常分析法 主要是構造環境異常來看測試結果
11、錯誤猜測法
方法選擇(打油詩,僅供參考):
所有輸入選等價
給定範圍加邊界
條件孤立想判定
指定常量取正交
跨界操作流程法
多種狀態遷移圖
條件組合出因果
測試充分全覆蓋
多種方法不唯一
附:
軟體質量: 一個實體的所有特性,基於這些特性可以滿足顯式或隱式的需求的程度
軟體質量模型:功能性、效率、可靠性、易用性、可移植性、可維護性
非功能:效率、可靠性、易用性、可維護性、可移植性
功能性:適用性、準確性、保密安全性、互操作性、依存性
效率:時間特性、資源利用率
易用性:易理解性、易學性、易操作性、吸引性
可靠性:成熟性、容錯性、易恢復性
可移植性:適應性、易安裝性、共存性、易替換性
可維護性:易分析性、易改變性、穩定性、易測試性
雙V模型:即測試工作並不是在開發完成之後才開始進行,而是開發階段與測試設計階段同步進行,在編碼完成後繼續執行UT、IT、ST。