農林漁牧網

您現在的位置是:首頁 > 農業

全程軟體測試(四十二):評估系統測試的覆蓋程度—讀書筆記

2022-02-16由 陽哥說IT 發表于 農業

條件覆蓋率怎樣計算

全程軟體測試(四十二):評估系統測試的覆蓋程度—讀書筆記

若未執行測試評估,則不會有測試覆蓋率的結果,也就不會有報告測試程序的根據。

軟體測試評估主要有兩個目的:

一是

量化測試程序,判斷測試進行的狀態,決定測試可以結束的時間;

二是

為測試或質量分析報告生成所需的量化資料,如缺陷清除率、測試覆蓋率等。

測試評估是軟體測試的一個階段性結論,是用所生成的測試評估報告來確定測試是否達到完全和成功的標準。

測試評估可以說貫穿整個軟體測試過程,可以在測試每個階段結束前進行,也可以在測試過程中某一個時間進行。

系統的測試活動建立在至少一個測試覆蓋策略基礎上,而覆蓋策略試圖描述測試的一般目的,指導測試用例的設計。如果測試需求已經完全分類,則基於需求的覆蓋策略可能足以生成測試完全程度評測的量化指標。例如,如果已經確定了所有效能測試需求,則可以引用測試結果來做出評測,如“已經核實90%的效能測試需求”。測試評估工作主要是對測試覆蓋率的評估,測試覆蓋率是用來衡量測試完成多少的一種量化標準。

測試的覆蓋率可用測試專案的數量和內容進行度量,除此之外,若測試的軟體較大,還需要考慮資料量。測試覆蓋程度表如下表所示。透過檢查這些指標的達標程度,即可度量出測試內容的覆蓋程度。

全程軟體測試(四十二):評估系統測試的覆蓋程度—讀書筆記

測試覆蓋程度表

對測試覆蓋率的評估就是確定測試執行的完全程度,其基本方法有基於需求的測試覆蓋評估和基於程式碼的測試覆蓋評估。

對軟體需求的估算

對軟體需求的估算有利於對測試需求的把握,有利於進一步估算測試覆蓋率。

假設一個規格設計說明書中有R個需求,其功能需求的數目為F,非功能需求數(如效能)為N,則R=F+N

為了解需求的確定性,一種基於複審者對每個需求解釋的一致性的度量方法如下所示。

Q1=M/R

其中 Q1表示需求的確定性,M 是所有複審者都有相同解釋的需求數目。

需求的模糊性越低,Q1的值越接近1。而

功能需求的完整性Q2的計算公式如下所示。

Q2=Fu/(Ni×Ns)

其中

Fu是唯一功能需求的數目,Ni是由規格設計說明書定義的輸入個數,Ns是被表示的狀態個數

。Q2只是度量一個系統所表示的必需功能百分比,但它並沒有考慮非功能需求。為了把非功能需求結合到整體度量中以求完整,必須將已有需求已經被確認的程度考慮進去。因此Q3的計算公式如下所示。

Q3=Fc/(Fc+Fnv)

其中,

Fc是已經被確認的需求個數,Fnv是尚未被確認的需求個數。

基於需求的測試覆蓋評估

基於需求的測試覆蓋評估依賴於對已執行/執行的測試用例的核實和分析,因此

基於需求的測試覆蓋評估就轉換為評估測試用例覆蓋率,測試的目標是確保100%的測試用例都成功地執行。

若這個目標不可行或不可能達到,則要根據不同的情況制定不同的測試覆蓋標準,主要考慮風險和嚴重性、可接受的覆蓋百分比。在執行測試活動中,評估測試用例覆蓋率又可分為兩類測試用例覆蓋率估算,具體如下所示。

(1)確定已經執行的測試用例覆蓋率

,即在所有測試用例中有多少測試用例已被執行。

假定Tx是已執行的測試過程數或測試用例數,Rft是測試需求的總數

,則已執行的測試覆蓋計算公式如下所示。

已執行的測試覆蓋=Tx/Rft

(2)確定成功的測試覆蓋,即執行時未出現失敗的測試,例如,未出現缺陷或意外結果的測試。假定Ts是已執行的完全成功、沒有缺陷的測試用例數,則成功的測試覆蓋的計算公式如下所示。

成功的測試覆蓋=Ts/Rft

在實際計算中,很難確定Rft的值,一般可以根據需求點、以往經驗來估算。

基於程式碼的測試覆蓋評估

基於程式碼的測試覆蓋評估是對被測程式程式碼語句、路徑或條件的覆蓋率分析

。若應用基於程式碼的覆蓋,則應評估已執行測試的原始碼量。這種測試覆蓋策略型別對於安全至上的系統來說非常重要。

評估程式碼覆蓋率,需要確定測試目標期望和總的測試程式碼行數、在測試中真正執行的程式碼行數及其百分比,並將此結果記錄在測試評估報告中。

測試過程中已經執行的程式碼的數量,與之相對的是需要執行的剩餘程式碼數量

。程式碼覆蓋可建立在控制流(語句、分支或路徑)或資料流的基礎上。控制流覆蓋的目的是測試程式碼行、分支條件、程式碼中的路徑或軟體控制流的其他元素。資料流覆蓋的目的是透過軟體操作測試資料狀態是否有效,例如,資料元素在使用之前是否已定義。

基於程式碼的測試覆蓋計算公式如下。

已執行的測試覆蓋=Tc/Tnc

其中Tc是基於程式碼語句、條件分支、程式碼路徑、資料狀態判定點或資料元素的已執行專案數,Tnc是程式碼中的專案總數。