【摘要】在測試方法中粗略的介紹了幾種測試方法。其中,白盒測試的動態分析方法中提到邏輯覆蓋率測試有:語句覆蓋、分支覆蓋/判定覆蓋、條件覆蓋、條件—判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。
準備知識:
可執行語句:可執行的一項操作;覆蓋率真、假分支:ture、false
運算元(opreand)、操作符(operator):
運算元:常量(整數、十六進製制數、八進位制數、實數、字元、字串)、變數(簡單型別、陣列型別、記錄型別、指標型別、聯合等);
操作符:單一操作符、二進位制操作符、條件操作符、賦值操作符等。
概念:覆蓋率是度量測試完整性的乙個手段,是測試有效性的乙個度量。目的:評估測試的有效性,找出弱點,有目的的補充用例。計算公式:
覆蓋率=(至少被執行一次的item數)/item總數
缺點:測試成本隨著覆蓋率的提高而增加。(在一般的測試中有個指標)
分類:判定覆蓋(decision coverage)率/分支覆蓋(branch coverage)率:程式中
真、假分支
被測試佔的比例。
條件覆蓋(condition coverage)率:每個
條件運算元(operand)
可能的取值被測試所佔的比例。
條件判斷覆蓋(decision condition coverage/branch condition coverage)率:設計足夠多的測試用例來滿足判定覆蓋率和條件覆蓋率
路徑覆蓋(path coverage)率:設計足夠多的測試用例,遍歷程式的所有可能的路徑
從上面的集中邏輯覆蓋測試來看,它們相互補充,盡量達到被測試程式的100%,然而我們還是要明確測試是為了盡可能找出程式中的錯誤。卻沒有一種十全十美的測試方法來發現所有的錯誤,這也體現了測試的侷限性。介面覆蓋/入口點覆蓋:使得系統的每個介面被測試到。
以上所說的覆蓋率都是屬於結構化覆蓋率的範疇,但是在物件導向領域中卻遇到挑戰。物件導向的覆蓋率:關於物件導向的一些特性的測試,如:多型性、繼承性、封裝性等。
class baseclass derived:public base};void bar()
private:virtual void helper();};
對於上面那個程式,如果你測試到了base.foo()和 dervied.bar(),表面上看,你測試到了base::helper()和derived::helper()方法,達到了分支和語句,甚至路徑覆蓋100%。但是base::foo()和base::bar()他們跟base::helper之間的介面還沒有覆蓋到,所以必須加強測試。
在物件導向中,上下文是設計比較多的,上下文覆蓋是一種收集被測試軟體如何執行資料的方法。可以應用於多型、繼承和封裝的特性,也可以擴充套件到多執行緒應用。
基於狀態的上下文覆蓋(state-base context coverage)
入口點覆蓋(entry-point coverage)/介面點覆蓋(inte***ce coverage):如上面的有邊界棧的類,只測試介面的話,是無法測試邊界值的時候會不會丟擲異常。
白盒覆蓋:如判定覆蓋覆蓋的介面不對應於公共介面的特性。而特定的處理是覆蓋不了的。
基於上下文狀態轉移圖:描述狀態及其遷移路線的圖。
基於狀態的上下文覆蓋:對應於被測類物件的潛在狀態。
已定義使用者上下文覆蓋(user-defined context coverage)
其他覆蓋率(著重了解)
如何使用覆蓋率
衡量覆蓋率的標準
使用最少測試用例來達到覆蓋
用n-s圖來表示結構化程式中的基本控制結構:順序型——序列操作、選擇型——分支操作、重複型——迴圈操作。其中:a,b,c,d,s均表示要執行的操作,p是可取真假值的謂詞,y表示真值,n表示假值。這些圖形可以相互巢狀使用。
對於這些圖的測試用例數:直接數執行的運算元,順序的相乘,選擇的相加。
測試覆蓋率
摘要 在 測試 方法中粗略的介紹了幾種測試方法。其中,白盒測試 的動態分析方法中提到邏輯覆蓋率測試有 語句覆蓋 分支覆蓋 判定覆蓋 條件覆蓋 條件 判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。準備知識 可執行語句 可執行的一項操作 真 假分支 ture false 運算元 opreand 操作...
測試 覆蓋率
覆蓋率準則 覆蓋率是度量測試完整性的乙個手段,是測試有效性的乙個度量。通過已執行 表示,用於可靠性 穩定性以及效能的評測。測試覆蓋是對測試完全程度的評測。測試覆蓋是由測試需求和測試用例的覆蓋或已執行 的覆蓋表示的。建立在對測試結果的評估和對測試過程中確定的變更請求 缺陷 的分析的基礎上。測試覆蓋是就...
測 試 覆 蓋 率
1 覆蓋率概念 覆蓋率是用來度量測試完整性的乙個手段。覆蓋率是測試技術有效性的乙個度量。覆蓋率 至少被執行一次的item數 item的總數 覆蓋率大體可以劃分為兩大類 邏輯覆蓋和功能覆蓋 測試用例設計不能一味追求覆蓋率,因為測試成本雖覆蓋率的增加而增加。2 邏輯覆蓋主要型別 語句覆蓋 判定覆蓋 條件...